Skip to content

Github Action implementing issue/PR comment commands for repo automation

License

Notifications You must be signed in to change notification settings

PrismarineJS/prismarine-repo-actions

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

prismarine-repo-commands

NPM version Build Status Try it on gitpod GitHub Sponsors
Official Discord

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.

Install

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.

Options

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.

Commands

  • /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