From 71be8fadcb135a0805fc4a55095e1c26e23745a1 Mon Sep 17 00:00:00 2001 From: John Westcott IV <32551173+john-westcott-iv@users.noreply.github.com> Date: Mon, 1 Aug 2022 12:59:01 -0400 Subject: [PATCH] Adding GitHub check to ensure PRs have the proper X/Y/Z flags (#12577) * Adding GitHub check to ensure PRs have the proper X/Y/Z flags * Changing the Z release wording --- .github/ISSUE_TEMPLATE.md | 2 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/workflows/pr_body_check.yml | 45 +++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/pr_body_check.yml diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 3f939afdd4..951fb7963d 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -25,7 +25,7 @@ Instead use the bug or feature request. - Breaking Change - New or Enhanced Feature - - Bug or Docs Fix + - Bug, Docs Fix or other nominal change ##### COMPONENT NAME diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index e5caf8137c..07d23adf00 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,7 +11,7 @@ the change does. - Breaking Change - New or Enhanced Feature - - Bug or Docs Fix + - Bug, Docs Fix or other nominal change ##### COMPONENT NAME diff --git a/.github/workflows/pr_body_check.yml b/.github/workflows/pr_body_check.yml new file mode 100644 index 0000000000..0661a37664 --- /dev/null +++ b/.github/workflows/pr_body_check.yml @@ -0,0 +1,45 @@ +--- +name: PR Check +env: + BRANCH: ${{ github.base_ref || 'devel' }} +on: + pull_request: + types: [opened, edited, reopened, synchronize] +jobs: + pr-check: + name: Scan PR description for semantic versioning keywords + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - name: Write PR body to a file + run: | + cat >> pr.body << __SOME_RANDOM_PR_EOF__ + ${{ github.event.pull_request.body }} + __SOME_RANDOM_PR_EOF__ + + - name: Display the received body for troubleshooting + run: cat pr.body + + # We want to write these out individually just incase the options were joined on a single line + - name: Check for each of the lines + run: | + grep "Bug, Docs Fix or other nominal change" pr.body > Z + grep "New or Enhanced Feature" pr.body > Y + grep "Breaking Change" pr.body > X + exit 0 + # We exit 0 and set the shell to prevent the returns from the greps from failing this step + # See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference + shell: bash {0} + + - name: Check for exactly one item + run: | + if [ $(cat X Y Z | wc -l) != 1 ] ; then + echo "The PR body must contain exactly one of [ 'Bug, Docs Fix or other nominal change', 'New or Enhanced Feature', 'Breaking Change' ]" + echo "We counted $(cat X Y Z | wc -l)" + echo "See the default PR body for examples" + exit 255; + else + exit 0; + fi