Github Action for automating repo actions via issue/PR comment commands. To run the commands on a PR, the user must be the PR author or a repo COLLABORATOR, MEMBER, or OWNER.
Add a workflow looking like this in .github/workflows/comments.yml
:
Note: In order to use this Action, you need to generate a GitHub personal access token (PAT). While you can use the default GITHUB_TOKEN
token, commits and PRs created by the GITHUB_TOKEN won't trigger other workflows in the repository.
name: Repo Commands
on:
issue_comment: # Handle comment commands
types: [created]
pull_request_target: # Handle renamed PRs
types: [edited]
# NOTE: You must use a Personal Access Token (PAT) with repo access. While you can use the default GITHUB_TOKEN,
# actions taken with it will not trigger other actions, so if you have a CI workflow, commits created by this action will not trigger it.
jobs:
comment-trigger:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v3
with:
token: ${{ secrets.PAT_TOKEN }}
- name: Run command handlers
uses: PrismarineJS/prismarine-repo-actions@master
with:
token: ${{ secrets.PAT_TOKEN }}
# See `Options` section below for more info on these options
install-command: npm install
/fixlint.fix-command: npm run fix
Commands can be enabled/disabled by setting the /$command.enabled
property to true
or false
.
option | default | doc |
token | Required | Github API key. Either a Personal Access Token (PAT) with repo access or the predefined ${{ secrets.PAT_TOKEN }} . |
install-command | "npm install" |
What command to run to install the repo if the command requires installing it |
/makerelease.enabled | true |
Whether or not to enable the `/makerelease` command |
/makerelease.releaseCommitsStartWith | "Release " |
When looking back through all the commits until the most recent release, what separator to stop at |
/fixlint.enabled | true |
Whether or not to enable the `/fixlint` command |
/fixlint.fix-command | "npm run fix" |
What command to use to fix the lint |
/mergeonpass.enabled | true |
Whether or not to enable the `/mergeonpass` command |
/mergeonpass.maxWaitTime | 600000 (20 min) |
How long to wait in milliseconds for the PR checks to pass (after retries) before giving up |
/mergeonpass.defaultRetries | 1 |
How many times to retry the PR checks on failure when waiting on merge, if the user does not specify in argument |
/mergeonpass.defaultMode | squash |
What merge mode to use by default, options are { squash, merge, rebase }, if the user does not specify in argument |
llm-services-repo | $currentOrganization/llm-services |
What repository to use to send LLM requests to via dispatch. For example, `PrismarineJS/llm-services`. Defaults to the triggering repo's org's `llm-services` repo. |
- /makerelease [release version]
- Make a release PR (Node.js and Python projects) on projects that have a HISTORY.md file like this
- This command creates a new PR with a modified HISTORY.md adding a section with the latest commits since the last release and if they exist, updates the package.json (Node.js) or setup.py/pyproject.toml (Python) manifest files.
- This doesn't actually create a release, it just creates a PR that when merged, should trigger your actual release workflow. You can modify the generated changelog as needed.
- Example trigger and resulting release PR
- /fixlint
- Run a lint fix command on the current PR, then push the update to the PR
- Example trigger
/mergeonpass [retries (default: 1)] [mode: squash (default), merge, rebase]\n[custom commit message]
- Merge a pull request after tests pass, with n retries of failed tests.
- Merge a PR with 3 retries with standard merge mode, with the custom merge commit message "Merge this PR"
/mergeonpass 3 merge Merge this PR
- Example trigger