Self-hosting
The hosted app at app.deliverybot.dev is the quickest way to get started, but Deliverybot is open source and you can run it on your own infrastructure too.
Deliverybot is a Probot application that responds to events from GitHub and triggers deployments based on actions in the dashboard and check status events from GitHub. It needs:
- Your own GitHub App. The
app.ymlmanifest in the repository lists the permissions and events it uses. - PostgreSQL for storage, sessions and the job queue.
- Two processes from the same image:
web, which serves the dashboard and receives webhooks, andworker, which runs background jobs.
Running the container
Every commit to the main branch builds an image from the repository’s
Dockerfile. Configure it with environment variables:
| Variable | Description |
|---|---|
APP_ID |
The GitHub App’s ID. |
PRIVATE_KEY |
The GitHub App’s private key. |
WEBHOOK_SECRET |
The GitHub App’s webhook secret. |
CLIENT_ID, CLIENT_SECRET |
The GitHub App’s OAuth credentials, used to sign in to the dashboard. |
SESSION_SECRET |
A long random string used to sign and encrypt sessions. |
DATABASE_URL |
Postgres connection string. |
BASE_URL |
The public URL the app is served from. |
SLACK_CLIENT_ID, SLACK_CLIENT_SECRET, SLACK_SIGNING_SECRET |
Optional, for the Slack integration. Create the Slack app from packages/slackbot/manifest.yml. |
Then run the database migrations once, and start both processes:
node packages/postgres/lib/cli.js # migrations
node packages/run/lib/server.js # web, listens on port 3000
node packages/run/lib/worker.js # worker
Set the GitHub App’s webhook URL to https://<your host>/api/github/webhooks
and its callback URL to https://<your host>/login/cb.
Kubernetes
The repository ships Kustomize manifests with a base and staging/production overlays, which run Postgres in the cluster through CloudNativePG. Their README covers the one-time cluster setup.
Local development
See the repository’s README to run Deliverybot locally with
docker compose for Postgres and smee.io
to forward webhooks.