Skip to content

Commit

Permalink
RFC: Process Github issue_comment events to support adhoc task creation
Browse files Browse the repository at this point in the history
  • Loading branch information
bhearsum committed Jun 4, 2021
1 parent f765ac3 commit 7463214
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) |
36 changes: 36 additions & 0 deletions rfcs/0168-Trigger-Tests-Based-on-PR-Comments.md
Original file line number Diff line number Diff line change
@@ -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)
1 change: 1 addition & 0 deletions rfcs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) |

0 comments on commit 7463214

Please sign in to comment.