blob: 347c79147ce1201b2f21c590129e2ff2de82fae5 [file] [log] [blame]
name: Release Notes
on:
pull_request:
types: [assigned, opened, synchronize, reopened, edited]
env:
CURRENT_RELEASE_FILE_PATH: packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md
jobs:
release-preparedness:
runs-on: ubuntu-latest
name: Verify PR Release Note Requirements
steps:
- name: Get Pull Request Number
id: get-pull-request-number
run: |
PULL_REQUEST_NUMBER=$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH")
echo "PULL_REQUEST_NUMBER=$PULL_REQUEST_NUMBER" >> $GITHUB_OUTPUT
- name: Check if we have modified release note file
id: get-modified-files
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PULL_NUMBER: ${{steps.get-pull-request-number.outputs.PULL_REQUEST_NUMBER}}
run: |
FILES_RESPONSE=$(gh api /repos/$GITHUB_REPOSITORY/pulls/$PULL_NUMBER/files)
echo "FILES_RESPONSE: $FILES_RESPONSE"
HAS_CHANGED_RELEASE_NOTES=$(echo $FILES_RESPONSE | jq '.[].filename' | jq -s '. | any(. == env.CURRENT_RELEASE_FILE_PATH)')
echo "HAS_CHANGED_RELEASE_NOTES=$HAS_CHANGED_RELEASE_NOTES" >> $GITHUB_OUTPUT
- name: Get PR Info
id: check-release-note-exceptions
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PULL_NUMBER: ${{steps.get-pull-request-number.outputs.PULL_REQUEST_NUMBER}}
run: |
PULLS_RESPONSE=$(gh api /repos/$GITHUB_REPOSITORY/pulls/$PULL_NUMBER)
DESCRIPTION_BODY=$(echo $PULLS_RESPONSE | jq '.body')
AUTHOR_ID=$(echo $PULLS_RESPONSE | jq -r '.user.login')
sudo apt-get install pandoc
BODY_WITHOUT_COMMENTS=$(printf "$DESCRIPTION_BODY" | pandoc --strip-comments -f markdown -t plain)
echo $DESCRIPTION_BODY
echo $BODY_WITHOUT_COMMENTS
echo $AUTHOR_ID
if $(echo $BODY_WITHOUT_COMMENTS | grep -Eq "RELEASE_NOTE_EXCEPTION="); then
HAS_RELEASE_NOTE_EXCEPTION_STRING=true
else
HAS_RELEASE_NOTE_EXCEPTION_STRING=false
fi
if [[ "$AUTHOR_ID" == "dependabot[bot]" ]] ; then
IS_DEPENDABOT_PR=true
else
IS_DEPENDABOT_PR=false
fi
echo "HAS_RELEASE_NOTE_EXCEPTION_STRING=$HAS_RELEASE_NOTE_EXCEPTION_STRING" >> $GITHUB_OUTPUT
echo "IS_DEPENDABOT_PR=$IS_DEPENDABOT_PR" >> $GITHUB_OUTPUT
- name: Check Release Preparedness requirements
env:
HAS_CHANGED_RELEASE_NOTES: ${{steps.get-modified-files.outputs.HAS_CHANGED_RELEASE_NOTES}}
HAS_RELEASE_NOTE_EXCEPTION_STRING: ${{steps.check-release-note-exceptions.outputs.HAS_RELEASE_NOTE_EXCEPTION_STRING}}
IS_DEPENDABOT_PR: ${{steps.check-release-note-exceptions.outputs.IS_DEPENDABOT_PR}}
run: |
if [ "$HAS_CHANGED_RELEASE_NOTES" != "true" ] && [ "$HAS_RELEASE_NOTE_EXCEPTION_STRING" != "true" ] && [ "$IS_DEPENDABOT_PR" != "true" ] ; then
echo "Release Preparedness check failed"
echo "::error title='Release Notes were not modified'::Please add a release note entry to $CURRENT_RELEASE_FILE_PATH or an exception reason to your description using: \`RELEASE_NOTE_EXCEPTION=[reason goes here]\`"
exit 1
fi