A tool for managing GitHub issues and pull requests via comment-ops. It uses GitHub webhooks to scale across repositories without needing to add a GitHub action to each of them.
GitHub apps are used for authentication to limit the required permissions.
The app is configured with a .github/comment-ops.yml
file in the main branch of the repository.
This can also be applied organization wide by creating it in the organization's .github
repository.
Note: This file is required all commands are disabled by default.
The order of configuration is:
default config
→ organization
→ repository
Default configuration:
commands:
close:
enabled: false
label:
allowedLabels: [] # any label is allowed
enabled: false
removeLabel:
allowedLabels: [] # any label is allowed
enabled: false
reopen:
enabled: false
reviewer:
enabled: false
transfer:
enabled: false
First you will need to create a GitHub app. Add the permissions required for the commands you are using (see next section), and tick "Subscribe to events" > "Issue comment"
Add a webhook to the app pointing at your endpoint, the path for the webhook receiver is <your-app-endpoint>/api/github/webhooks
.
This app is multiple organization aware and doesn't need any additional configuration to run in multiple organizations, you just need to install it on them.
Note: You can't interact across organizations, like requesting reviews from teams in different organizations or transferring issues, this is a GitHub limitation.
The easiest way to develop this locally is to use smee.
Run smee --path /api/github/webhooks
and point your webhook to the smee url that is outputted e.g. https://smee.io/Mrl4d3W9AUxeaaa
The application runs on port 3000 by default, this can be customized with the PORT
environment variable.
You can also use the npm script npm run tunnel
which will run smee for you.
You can deploy this application to Kubernetes with the helm chart included in this repo:
helm repo add github-comment-ops https://timja.github.io/github-comment-ops
helm install github-comment-ops github-comment-ops/github-comment-ops
See more in the chart README
GITHUB_APP_ID
GITHUB_APP_PRIVATE_KEY
file:
, e.g. file:my-key.pem
WEBHOOK_SECRET
Closes the current issue
Adds a label to the current issue or pull request
Removes a label from the current issue or pull request
Reopens the current issue
Adds reviewers to the pull request.
Note: If a team exists but the team doesn't have read access to the repository this will silently fail.
Transfers a GitHub issue to another repository in the same organization.