Skip to content

Add review comments to your pull requests based on changes

Notifications You must be signed in to change notification settings

pshergie/prator

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

Repository files navigation

Pull Request Auto Reviewer (GitHub Action)

action example

This script is for public repositories. For private ones use a simplified version of it.

Add review comments to your pull requests based on changes in 3 steps:

  1. Add rules for the action script (more info):
- prependMsg: "🗯️ [pull-request-auto-reviewer](https://github.com/marketplace/actions/pull-request-auto-reviewer):"
- checks:
    - paths: "**/*.js"
      message: |
        ### As you changed javascript file(s) tick the following checks:

        - [ ] unit/integration tests are added
        - [ ] no performance implications
        - [ ] relevant documentation is added/updated
    - paths: "package-lock.json"
      message: |
        ### Since you've added/updated dependencies, pay attention to this:

        - [ ] clear reasoning for adding or updating the dependency is provided
        - [ ] no security implications or concerns related to the dependency
  1. Add artifact uploading config (more info):
name: Auto Review Prepare
on:
  pull_request:
    branches:
      - main
      - master
jobs:
  prepare:
    name: Prepare
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 2
      - name: Save PR number
        run: echo "${{ github.event.pull_request.number }}" > pr_number.txt
      - name: Generate Diff
        run: |
          git fetch origin ${{ github.event.pull_request.base.ref }}
          git diff --name-only origin/${{ github.event.pull_request.base.ref }}..${{ github.sha }} > pr_files_diff_all.txt
          git diff --name-status origin/${{ github.event.pull_request.base.ref }}..${{ github.sha }} | grep '^M' | cut -f2 > pr_files_diff_mod.txt
          git diff --name-status origin/${{ github.event.pull_request.base.ref }}..${{ github.sha }} | grep '^A' | cut -f2 > pr_files_diff_add.txt
          git diff --name-status origin/${{ github.event.pull_request.base.ref }}..${{ github.sha }} | grep '^D' | cut -f2 > pr_files_diff_del.txt
      - name: Create artifact folder
        run: mkdir -p pr_diff && mv pr_number.txt pr_files_diff.txt pr_diff/
      - name: Upload PR details as artifact
        uses: actions/upload-artifact@v4
        with:
          name: pr-diff
          path: pr_diff/
  1. Add artifact downloading and code analysis config (more info)
name: Auto Review Comment
on:
  workflow_run:
    workflows:
      - Auto-review Diff Prepare
    types:
      - completed
permissions:
  pull-requests: write
jobs:
  auto-review:
    name: Review
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the repository
        uses: actions/checkout@v4
      - name: Download PR diff from auto review prepare step
        uses: actions/download-artifact@v4
        with:
          name: pr-diff
          path: pr_diff/
          repository: ${{ github.repository_owner }}/${{ github.event.repository.name }}
          run-id: ${{ github.event.workflow_run.id }}
          github-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Analyze changes
        uses: pshergie/prator@v1
        id: auto-review-action
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          rules-path: path-to-your-rules-file

Add rules for the action script

For this step you need to create a YAML file with the rules that are going to be utilized by the action script. There you need to specify 2 params:

  • prependMsg is a message that is prepended to every message of GitHub actions bot. Leave empty if not needed.
  • checks contains a list of paths and message keys. paths is dedicated to specify path(s) of changes that would trigger posting of a followed message as a pull request comment. In case of multiple paths they should be separated by a comma. message could be a simple string or markdown. All messages will be combined into a single comment.

Add artifact uploading config

Since posting comments on GitHub requires write permission you need two create 2 workflows. One to collect PR changes and upload as artifact (this step) and another to download them and apply the script (next step). There's an optional artifact-path parameter if you want a different path to the artifact (make sure that this change is reflected in the download artifact config). The default value is pr_diff/

Add artifact downloading and code analysis config

In this step create a workflow that downloads the artifact and applies the script. pull-requests: write permission is needed for the GitHub actions bot to be able to post a comment in a PR. It's also important to provide 2 params that are being consumed by the action script:

  • token: your GitHub token
  • rules-path: a path to the file with rules that you have specified earlier (for instance .github/auto-review-rules.yml)

Note: The workflow executes from the main/master branch and is not visible in the PR checks.