meta: add external PRs to project board #84
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
pull_request
hook runs in the context of the proposed changes. That means that for forks, this action won't have access to the required secrets for it to complete. As such, PRs from outside contributors won't work correctly.The
pull_request_target
hook, however, runs in the context of the target branch, and thus has all the permissions it needs. The github docs for this hook also indicate that this is the way to go:Interesting note for PRs
It seems that when this change is proposed as a PR, the expected action (add new item to project board) does not run. However, this does not affect other new PRs. After merging, the pipeline works and triggers as expected, for both external and internal contributors.
Isn't this potentially dangerous?
Good question! As far as I understand: no, it's not. The long answer is in Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests, but I'll try and summarize it here.
Some choice cuts from the article:
However, we do not check the PR out!
That is: when using
pull_request_target
, the action will not check out the PR branch and thus, the PR cannot inject any code changes into the action. On the other handpull_request
uses the code that's in the PR to run actions, which is why it requires explicit authorization before being run.pull_request_target
runs in the context of the target branch (most commonlymain
) and only runs code that already exists in the target branch. No code from the PR gets used.About the changes
Closes # .
Important files
Discussion points