When developing a Probot App, you will need to have several different fields in a .env
file which specify environment variables. Here are some common use cases:
Environment Variable | Programmatic Argument | Description |
---|---|---|
APP_ID | new Probot({ appId }) | The App ID assigned to your GitHub App. Required (Example: |
PRIVATE_KEY or PRIVATE_KEY_PATH | new Probot({ privateKey }) | The contents of the private key for your GitHub App. If you're unable to use multiline environment variables, use base64 encoding to convert the key to a single line string. See the Deployment docs for provider specific usage. When using the PRIVATE_KEY_PATH environment variable, set it to the path of the .pem file that you downloaded from your GitHub App registration.(Example: |
Webhook options | ||
WEBHOOK_PROXY_URL | new Server({ webhookProxy }) | Allows your local development environment to receive GitHub webhook events. Go to https://smee.io/new to get started. (Example: |
WEBHOOK_SECRET | new Probot({ secret }) | The webhook secret used when creating a GitHub App. 'development' is used as a default, but the value in .env needs to match the value configured in your App settings on GitHub. Note: GitHub marks this value as optional, but for optimal security it's required for Probot apps. Required(Example: |
For more on the set up of these items, check out Configuring a GitHub App.
Some less common environment variables are:
Environment Variable | Programmatic Argument | Description |
---|---|---|
GHE_HOST | new Probot({ Octokit: ProbotOctokit.defaults({ baseUrl }) }) | The hostname of your GitHub Enterprise instance. (Example: |
GHE_PROTOCOL | new Probot({ Octokit: ProbotOctokit.defaults({ baseUrl }) }) | The protocol of your GitHub Enterprise instance. Defaults to HTTPS. Do not change unless you are certain. (Example: |
GH_ORG | - | The organization where you want to register the app in the app creation manifest flow. If set, the app is registered for an organization (https://github.com/organizations/ORGANIZATION/settings/apps/new), if not set, the GitHub app would be registered for the user account (https://github.com/settings/apps/new). |
LOG_FORMAT | - | By default, logs are formatted for readability in development. You can set this to json in order to disable the formatting |
LOG_LEVEL | const log = require('pino')({ level }) | The verbosity of logs to show when running your app, which can be fatal , error , warn , info , debug , trace or silent . Default: info |
LOG_LEVEL_IN_STRING | - | By default, when using the json format, the level printed in the log records is an int (10 , 20 , ..). This option tells the logger to print level as a string: {"level": "info"} . Default false |
LOG_MESSAGE_KEY | const log = require('pino')({ messageKey: 'msg' }) | Only relevant when LOG_FORMAT is set to json . Sets the json key for the log message. Default: msg |
SENTRY_DSN | - | Set to a Sentry DSN to report all errors thrown by your app. (Example: |
PORT | new Server({ port }) | The port to start the local server on. Default: 3000 |
HOST | new Server({ host }) | The host to start the local server on. |
WEBHOOK_PATH | new Server({ webhookPath }) | The URL path which will receive webhooks. Default: /api/github/webhooks |
REDIS_URL | new Probot({ redisConfig }) | Set to a redis:// url as connection option for ioredis in order to enable cluster support for request throttling.(Example: |
For more information on the formatting conventions and rules of .env
files, check out the npm dotenv
module's documentation.
Found a mistake or want to help improve this documentation? Suggest changes on GitHub