This repo contains a Probot application. The application contains the plugins listed below and is deployed using the probot/serverless-lambda package via the Serverless framework.
The plugins are listed in the src/plugins folder.
- Label Checker - Sets a status on PRs that passes if one (and only one) of the following labels from each list have been applied:
bug
,doc
,feature request
, orimprovement
breaking
ornon-breaking
- Release Drafter - Opens up a draft release on GitHub anytime a PR is merged to a versioned branch (i.e.
branch-0.17
,branch-0.18
, etc.). The draft body includes a categorized changelog consisting of the PRs that have been merged on that branch. - Auto Merger - Automatically merges PRs that include the
@gpucibot merge
comment and meet the merge criteria outlined in https://docs.rapids.ai/resources/auto-merger/. - Branch Checker - Set a status on PRs that checks whether they are targeting either the repo's default branch or default branch + 1
- External Contributors - For PRs from non-organization members, this plugin copies source code from their forked branch to the source repository after an
okay to test
comment has been posted on the PR. This allows contributions from external contributors to be vetted before CI is run. Subsequent pushes to the PR will also be copied to the source repository branch. The source repository branch will be deleted when the PR is closed. This plugin mostly exists as a workaround for the feature gap in Jenkins' multi-branch pipelines described here.
The Serverless framework is used to deploy the Probot application to an AWS Lambda instance. The deployment configuration can be seen in the serverless.yaml file. A deployment will happen automatically anytime a change is merged to the main
branch affecting any of the following files: source code files, package.json
file, or serverless.yaml
file. See the deploy.yaml GitHub Action for more details.
# Build
npm run build
# Test
npm run test
# Deploy
npm run deploy
Any new functionality should be introduced as a new plugin in the src/plugins directory. New plugins should make use of the shared featureIsDisabled
function so that repositories can disable the feature if they desire. New plugins should also have an entry added in config.ts