📝

Github ActionsでPRにコメントを付ける際、元のコメントを更新する方法

に公開

はじめに結論

gh pr comment コマンドを使い、 --edit-last --create-if-none オプションを付ければよいです。
--edit-last だけだと1回目のコメントの場合にエラーになってしまうため、 --create-if-none を付ける必要があります。
対象となるコメントは同じユーザーの最後のコメントになるため、他のユーザーのコメントを上書きしてしまう心配はありません。

コメントの更新ではなく削除して新規にコメントしたい場合には、代わりに --delete-last --yes オプションを付けてください。

Github Actionsのサンプル

permissions:
  contents: read
  pull-requests: write # この権限を追加しないとエラーになります。

jobs:
  <ジョブ名>:
    steps:
      # 省略

      - name: Create comment body
        run: |
          # 変数等で渡すよりも、ファイルを作って次のステップで参照するほうがシンプルに値の受け渡しができます。
          echo "これはコメントです。" > comment.txt
          echo "追加のメッセージです。" >> comment.txt

      - name: Post a comment on PR
        env:
          # secrets.GITHUB_TOKEN は github.token と同じです。
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh pr comment ${{ github.event.number }} --edit-last --create-if-none --body-file comment.txt

特定のコメントを削除したい場合

最後のコメントではなく特定のコメントを削除したい場合には、専用のコマンドがないため直接APIを叩いて実行します。

gh api --method DELETE -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/<オーナー名>/<レポジトリ名>/pulls/comments/<コメントID>

Discussion