Adding a comment on a Pull Request using Github Actions

github action add comment PR

2 min read | by Jordi Prats

As part of a CI/CD pipeline involving GitHub Actions we might want to be able to add a comment to the PR to notify the user about something:

name: demo_add_comment_pr
on:
  pull_request:
    types: [opened, ready_for_review]
  push:
    branches:
      - '**'
      - '!main'
    paths:    
      - cluster-resources/**
      - tests/**
  workflow_dispatch:

(...)

We can check how we can add comments to PR (or issues) using the GitHub API.

First, we'll need to generate a JSON with the comment we want to add. To do so we can use jq to create the JSON object as follows:

JSON_DATA=$(jq --null-input --arg body "demo comment" '{ "body": $body }')

Once we have the data ready we can push it as follows to GitHub:

curl -X POST \
    $GITHUB_URL \
    -H "Content-Type: application/json" \
    -H "Authorization: token $GITHUB_TOKEN" \
    --data "${JSON_DATA}"

We can retrieve the GITHUB_URL to add it to the right Pull Request and the GITHUB_TOKEN to authenticate the request by populating these environment variables from the GitHub action definition as follows:

(...)

jobs:
  ci:
    steps:

      (...)

      - name: Add comment
        env:
          GITHUB_URL: ${{ github.event.pull_request.comments_url }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

(...)

Posted on 12/12/2022