GitHub Action
Update PR Description
GitHub action to append or replace text in a pull request description.
This action supports pull_request
and push
events (where the push
event ocurred on a branch with an open pull request).
content
: The content to append or replace in the PR body. Can be raw text or a file path. If a file path is provided,contentIsFilePath
must be set to"true"
.contentIsFilePath
: Whether thecontent
input is a file path. Defaults to"false"
.contentRegex
: The regex to match against thecontent
. Used to select a specific part of the content to use. Defaults to""
(everything).contentRegexFlags
: The content matchregex flags to use. Defaults to""
.regex
: The regex to match against the PR body and replace withcontent
. Defaults to"---.*"
.regexFlags
: The regex flags to use. Defaults to""
.appendContentOnMatchOnly
: Whether to skip appending thecontent
to the PR body if noregex
matches are found. Defaults to"false"
.token
: The GitHub token to use.
Note: append mode is the default behavior when no regex
match is found for backwards compatibility with existing action users. This may change in future minor/major versions and will be noted in the changelog.
-
Simple replace all text in the PR description with
Hello there!
:on: pull_request: jobs: update-pr-description: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Update PR Description uses: nefrob/pr-description@v1.2.0 with: content: "Hello there!" regex: ".*" regexFlags: s token: ${{ secrets.GITHUB_TOKEN }}
Body before:
Existing Body
Body after:
Hello there!
-
Reading from a file:
on: pull_request: jobs: update-pr-description: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Update PR Description uses: nefrob/pr-description@v1.2.0 with: content: path/to/file.txt contentIsFilePath: true regex: ".*" token: ${{ secrets.GITHUB_TOKEN }}
File content:
Hello there!
Body before:
Existing body
Body after:
Hello there!
-
Replace text in between comments:
on: pull_request: jobs: update-pr-description: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Update PR Description uses: nefrob/pr-description@v1.2.0 with: content: "<!-- start match -->\nHello there!\n<!-- end match -->" regex: "<!-- start match -->.*?<!-- end match -->" regexFlags: ims token: ${{ secrets.GITHUB_TOKEN }}
Body before:
<!-- start match --> Anything in between these comments will be replaced by a push to the PR. <!-- end match -->
Body after:
<!-- start match --> Hello there! <!-- end match -->
This is particularly useful when paired with a
pull_request_template.md
that includes comments like these for automatic updates on every PR. -
Match a specific part of the content:
on: pull_request: jobs: update-pr-description: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Update PR Description uses: nefrob/pr-description@v1.2.0 with: content: path/to/CHANGELOG.md contentIsFilePath: true contentRegex: "^##([\\s\\S]*?)(?=\\n##|$)" contentRegexFlags: g regex: ".*" token: ${{ secrets.GITHUB_TOKEN }}
File content:
## 1.0.2 Bug fixes - Fixed bug #4 - Fixed bug #3 ## 1.0.1 Bug fixes - Fixed bug #2 - Fixed bug #1
Body before:
Existing body
Body after:
## 1.0.2 Bug fixes - Fixed bug #4 - Fixed bug #3
This could be used to extract the latest changes from a
changelog.md
or similar.