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,contentIsFilePathmust be set to"true".contentIsFilePath: Whether thecontentinput 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 thecontentto the PR body if noregexmatches 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/[email protected] 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/[email protected] 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/[email protected] 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.mdthat 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/[email protected] 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 #1Body before:
Existing bodyBody after:
## 1.0.2 Bug fixes - Fixed bug #4 - Fixed bug #3This could be used to extract the latest changes from a
changelog.mdor similar.