From 4f129102a201f10d59b4699dc46c1faf550f61c3 Mon Sep 17 00:00:00 2001 From: "Ben Hearsum (he/him)" Date: Tue, 15 Jun 2021 03:40:49 -0400 Subject: [PATCH] RFC: Process Github issue_comment events to support adhoc task creation (#168) --- README.md | 1 + ...0168-Trigger-Tests-Based-on-PR-Comments.md | 37 +++++++++++++++++++ rfcs/README.md | 1 + 3 files changed, 39 insertions(+) create mode 100644 rfcs/0168-Trigger-Tests-Based-on-PR-Comments.md diff --git a/README.md b/README.md index 2c439a6..d5d5246 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 | [Process Github issue_comment events to support adhoc task creation](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..5e734df --- /dev/null +++ b/rfcs/0168-Trigger-Tests-Based-on-PR-Comments.md @@ -0,0 +1,37 @@ +# 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 + +* Tracking bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1715848 +* RRA (to be scheduled after RFC is Accepted) diff --git a/rfcs/README.md b/rfcs/README.md index 67c2ebf..ca5fb4e 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 | [Process Github issue_comment events to support adhoc task creation](0168-Trigger-Tests-Based-on-PR-Comments.md) |