Skip to content
align-left

GitHub Action

Update PR Description

v1.2.0 Latest version

Update PR Description

align-left

Update PR Description

Add or update content in GitHub PR description

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Update PR Description

uses: nefrob/pr-description@v1.2.0

Learn more about this action in nefrob/pr-description

Choose a version

Update Pull Request Description

GitHub action to append or replace text in a pull request description.

Gitmoji

Usage

This action supports pull_request and push events (where the push event ocurred on a branch with an open pull request).

Inputs

  • 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 the content input is a file path. Defaults to "false".
  • contentRegex: The regex to match against the content. 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 with content. Defaults to "---.*".
  • regexFlags: The regex flags to use. Defaults to "".
  • appendContentOnMatchOnly: Whether to skip appending the content to the PR body if no regex 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.

Example Workflows

  • 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.