From 416640fc90fa12f1eab0a93b7ddbdd93a4e78be2 Mon Sep 17 00:00:00 2001 From: Ben Hearsum Date: Wed, 14 Apr 2021 16:08:11 -0400 Subject: [PATCH] RFC: Trigger Tests Based on PR Comments --- README.md | 1 + ...0168-Trigger-Tests-Based-on-PR-Comments.md | 36 +++++++++++++++++++ rfcs/README.md | 1 + 3 files changed, 38 insertions(+) create mode 100644 rfcs/0168-Trigger-Tests-Based-on-PR-Comments.md diff --git a/README.md b/README.md index 2c439a6..3b29af9 100644 --- a/README.md +++ b/README.md @@ -61,3 +61,4 @@ See [mechanics](mechanics.md) for more detail. | RFC#163 | [ProjectId](rfcs/0163-project-id.md) | | RFC#165 | [Anonymous scopes](rfcs/0165-Anonymous-scopes.md) | | RFC#166 | [Sign Public S3 URLs](rfcs/0166-Sign-public-S3-urls.md) | +| RFC#168 | [Allow comments to trigger Tasks for non-collaborators](rfcs/0168-Trigger-Tests-Based-on-PR-Comments.md) | diff --git a/rfcs/0168-Trigger-Tests-Based-on-PR-Comments.md b/rfcs/0168-Trigger-Tests-Based-on-PR-Comments.md new file mode 100644 index 0000000..892a817 --- /dev/null +++ b/rfcs/0168-Trigger-Tests-Based-on-PR-Comments.md @@ -0,0 +1,36 @@ +# RFC 168 - Process Github issue_comment events to support adhoc task creation +* Comments: [#168](https://github.com/taskcluster/taskcluster-rfcs/pull/168) +* Proposed by: @bhearsum + +# Summary + +Listen, and render `.taskcluster.yml`, for Github `issue_comment` events. + +## Motivation + +Multiple use cases for triggering tasks in an adhoc manner on Pull Requests have come up recently. Most notably: +* Triggering tasks for PRs opened by a non-collaborator +* Triggering tasks that don't run by default (ie: because they're expensive) + +As Taskcluster is used increasingly for high-importance projects on Github (like Fenix), it's important that we're able to support these use cases. + +# Details + +`.taskcluster.yml` will be modified to support a new `allowComments` policy, which will support `collaborators` as a value. When set, collaborators to the repository may add a comment containing a string beginning with "/taskcluster ", which will cause Taskcluster-Github to render `.taskcluster.yml` with `tasks_for` set to `github-issue-comment`, and a new context variable `event.issue.comment` set to everything appearing after "/taskcluster " in the comment. For example, a comment of "/taskcluster run-tests" will set `event.comment` to `run-tests`. This will allow `.taskcluster.yml` implementers the flexibility to take different actions based on the comment. Some examples: +* A comment of "/taskcluster run-tests" could trigger all Tasks +* A comment of "/taskcluster run-test-foo" could trigger just the `foo` Task +* A comment of "/taskcluster merge" could trigger a Task that merges the PR + +To support this, Taskcluster-Github will be modified to watch for [`issue_comment`](https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#issue_comment) events. When one is received, it will check if: +* The `allowComments` policy is set to `collaborators` in the `.taskcluster.yml` on the default branch +* The `sender` is a valid collaborator + +If the above is true, it will process the `.taskcluster.yml` as described above, and create any resulting Tasks. + +Because we will be listening for a new event, existing installations that want to make use of this feature will need to re-authorize the Taskcluster integration. New installations will get it by default upon install. + +This has been previously discussed in https://github.com/taskcluster/taskcluster-rfcs/issues/95 and https://github.com/taskcluster/taskcluster/issues/40. + +# Implementation + +* RRA (to be scheduled after RFC is Accepted) diff --git a/rfcs/README.md b/rfcs/README.md index 67c2ebf..7d9d4a3 100644 --- a/rfcs/README.md +++ b/rfcs/README.md @@ -49,3 +49,4 @@ | RFC#163 | [ProjectId](0163-project-id.md) | | RFC#165 | [Anonymous scopes](0165-Anonymous-scopes.md) | | RFC#166 | [Sign Public S3 URLs](0166-Sign-public-S3-urls.md) | +| RFC#168 | [Allow comments to trigger Tasks for non-collaborators](0168-Trigger-Tests-Based-on-PR-Comments.md) |