A GitHub action to create or update an issue or pull request comment.
This action was created to help facilitate a GitHub Actions "ChatOps" solution in conjunction with slash-command-dispatch action.
- name: Create comment uses: peter-evans/create-or-update-comment@v1 with: issue-number: 1 body: | This is a multi-line test comment - With GitHub **Markdown** :sparkles: - Created by [create-or-update-comment][1] [1]: https://github.com/peter-evans/create-or-update-comment reactions: '+1' - name: Update comment uses: peter-evans/create-or-update-comment@v1 with: comment-id: 557858210 body: | **Edit:** Some additional info reactions: eyes - name: Add reactions uses: peter-evans/create-or-update-comment@v1 with: comment-id: 557858210 reactions: heart, hooray, laugh| Name | Description | Default |
|---|---|---|
token | GITHUB_TOKEN or a repo scoped PAT. | GITHUB_TOKEN |
repository | The full name of the repository in which to create or update a comment. | Current repository |
issue-number | The number of the issue or pull request in which to create a comment. | |
comment-id | The id of the comment to update. | |
body | The comment body. | |
edit-mode | The mode when updating a comment, replace or append. | append |
reactions | A comma separated list of reactions to add to the comment. (+1, -1, laugh, confused, heart, hooray, rocket, eyes) |
Note: In public repositories this action does not work in pull_request workflows when triggered by forks. This is due to token restrictions put in place by GitHub Actions. Private repositories can be configured to enable workflows from forks to run without restriction. See here for further explanation. Alternatively, use the pull_request_target event to comment on pull requests.
The ID of the created comment will be output for use in later steps. Note that in order to read the step output the action step must have an id.
- name: Create comment uses: peter-evans/create-or-update-comment@v1 id: couc with: issue-number: 1 body: | My comment - name: Check outputs run: | echo "Comment ID - ${{ steps.couc.outputs.comment-id }}"How to find the id of a comment will depend a lot on the use case. Here is one example where the id can be found in the github context during an issue_comment event.
on: issue_comment: types: [created] jobs: commentCreated: runs-on: ubuntu-latest steps: - name: Add reaction uses: peter-evans/create-or-update-comment@v1 with: comment-id: ${{ github.event.comment.id }} reactions: eyesSome use cases might find the find-comment action useful. This will search an issue or pull request for the first comment containing a specified string, and/or by a specified author. See the repository for detailed usage.
- name: Find Comment uses: peter-evans/find-comment@v1 id: fc with: issue-number: 1 comment-author: peter-evans body-includes: search string 1This example shows how file content can be read into a variable and passed to the action. The content must be escaped to preserve newlines.
- id: get-comment-body run: | body=$(cat comment-body.txt) body="${body//'%'/'%25'}" body="${body//$'\n'/'%0A'}" body="${body//$'\r'/'%0D'}" echo ::set-output name=body::$body - name: Create comment uses: peter-evans/create-or-update-comment@v1 with: issue-number: 1 body: ${{ steps.get-comment-body.outputs.body }}You can create and update comments in another repository by using a PAT instead of GITHUB_TOKEN. The user associated with the PAT must have write access to the repository.