Check repository permission for a user flexibly.
on
issue_comment:
types:
- created
jobs:
steps:
- name: Check repository permission for user
id: permission
uses: sushichop/action-repository-permission@v1
with:
required-permission: write
- name: Display information about permission
run: |
echo "A user trying to access is permitted"
echo "An actual permission was '${{ steps.permission.outputs.actual-permission }}'"
You can set none
, read
, write
, or admin
to required-permission
. In this action, the permission of a user trying to access the repository is named actual-permission
. It uses GitHub API internally and sets permitted
to true and returns 0 as exit code when actual-permission
is equal or greater than required-permission
.
Furthermore, you can also control various things flexibly according to the condition.
- Add a reaction to user's comment
- Add an issue comment
- Change the exit code(Relax repository permission check)
See action.yml and Cheat Sheet for details.
on
issue_comment:
types:
- created
jobs:
danger-for-external:
name: Danger for external - Node.js 16
if: |
github.event_name == 'issue_comment' && github.event.action == 'created'
&& github.event.issue.pull_request != null
&& startsWith(github.event.comment.body, '/danger')
runs-on: ubuntu-latest
steps:
- name: Check repository permission for user
uses: sushichop/action-repository-permission@v2
with:
required-permission: write
reaction-permitted: rocket
comment-not-permitted: Sorry, you don't have enough permission to execute `/danger`...
- name: Clone the PR source
uses: actions/checkout@v3
with:
ref: refs/pull/${{ github.event.issue.number }}/head
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Danger JS
run: npx danger ci
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
The above is a good example to execute danger as an issue comment for the pull request from the fork. It permits the only authorized users to execute danger
.
As a matter of fact, I created action-repository-permission
to achieve this!
- Add a reaction to user's comment(if it exists) when he/she is permitted.
reaction-permitted (input) | permitted (output) | issue comment (what you can expect) |
---|---|---|
valid value is not set | true | reaction-permitted is not added as reaction |
valid value is not set | false | reaction-permitted is not added as reaction |
valid value is set | true | reaction-permitted is added as reaction |
valid value is set | false | reaction-permitted is not added as reaction |
- Add a reaction to user's comment(if it exists) when he/she is not permitted.
reaction-not-permitted (input) | permitted (output) | issue comment (what you can expect) |
---|---|---|
valid value is not set | true | reaction-not-permitted is not added as reaction |
valid value is not set | false | reaction-not-permitted is not added as reaction |
valid value is set | true | reaction-not-permitted is not added as reaction |
valid value is set | false | reaction-not-permitted is added as reaction |
- Add an issue comment when a user is permitted.
comment-permitted (input) | permitted (output) | issue comment (what you can expect) |
---|---|---|
value is not set(or empty string) | true | comment-permitted is not added as issue comment |
value is not set(or empty string) | false | comment-permitted is not added as issue comment |
value is set(not empty string) | true | comment-permitted is added as issue comment |
value is set(not empty string) | false | comment-permitted is not added as issue comment |
- Add an issue comment added when a user is permitted.
comment-not-permitted (input) | permitted (output) | issue comment (what you can expect) |
---|---|---|
value is not set(or empty string) | true | comment-not-permitted is not added as issue comment |
value is not set(or empty string) | false | comment-not-permitted is not added as issue comment |
value is set(not empty string) | true | comment-not-permitted is not added as issue comment |
value is set(not empty string) | false | comment-not-permitted is added as issue comment |
- Change the exit code (Relax repository permission check).
relax (input) | permitted (output) | exit code (what you can expect) |
---|---|---|
false | true | 0 (success) |
false | false | 1 (failure) |
true | true | 0 (success) |
true | false | 0 (success) |
action-repository-permission is available under the MIT license. See the LICENSE file for details.