timja / github-comment-ops

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.
https://github.com/timja/github-comment-ops
MIT License
0 stars 2 forks source link
github issue-management pull-request-management webhooks

GitHub issue and pull request management with Comment-Ops

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.

Configuration

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 configorganizationrepository

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

Getting started

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.

Local development

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.

Chart deployment

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

Required environment variables

Supported commands

/close

Closes the current issue

Permissions required

/label <label1,label2,...>

Adds a label to the current issue or pull request

Permissions required

/remove-label <label1,label2,...>

Removes a label from the current issue or pull request

Permissions required

/reopen

Reopens the current issue

Permissions required

/reviewer(s) <reviewer1[, ]reviewer2[, ]@org/team1...>

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.

Permissions required

/transfer

Transfers a GitHub issue to another repository in the same organization.

Permissions required