blob: a0d72fafa993b96b90d92835c7d3043e10e45eac [file]
name: Release Notes
on:
pull_request:
types: [ assigned, opened, synchronize, reopened, edited ]
env:
CURRENT_RELEASE_JSON_FILE_PATH: tool/release_notes/release_notes.json
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 "::set-output name=PULL_REQUEST_NUMBER::$PULL_REQUEST_NUMBER"
- name: Check if we have modified release_notes.json
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/flutter/devtools/pulls/$PULL_NUMBER/files)
echo "FILES_RESPONSE: $FILES_RESPONSE"
HAS_CHANGED_RELEASE_NOTES=$(echo $FILES_RESPONSE | jq '.[].filename' | jq -s '. | any(. == env.CURRENT_RELEASE_JSON_FILE_PATH)')
echo "HAS_CHANGED_RELEASE_NOTES: $HAS_CHANGED_RELEASE_NOTES"
echo "::set-output name=HAS_CHANGED_RELEASE_NOTES::$HAS_CHANGED_RELEASE_NOTES"
- name: Get PR Description
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/flutter/devtools/pulls/$PULL_NUMBER)
DESCRIPTION_BODY=$(echo $PULLS_RESPONSE | jq '.body')
echo $DESCRIPTION_BODY
if $(echo $DESCRIPTION_BODY | grep -q "> NO RELEASE NOTE CHANGES:"); then
HAS_RELEASE_NOTE_EXCEPTION_STRING=true
else
HAS_RELEASE_NOTE_EXCEPTION_STRING=false
fi
echo "::set-output name=HAS_RELEASE_NOTE_EXCEPTION_STRING::$HAS_RELEASE_NOTE_EXCEPTION_STRING"
- 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}}
run: |
if [ "$HAS_CHANGED_RELEASE_NOTES" != "true" ] && [ "$HAS_RELEASE_NOTE_EXCEPTION_STRING" != "true" ] ; then
echo "Release Preparedness check failed"
echo "::error file=$CURRENT_RELEASE_JSON_FILE_PATH,line=0,col=0,endColumn=0,title='Release Notes Weren\'t Modified'::Please add a release note entry or a reason to your description using: \`> NO RELEASE NOTE CHANGES: [reason goes here]\`"
exit 1
fi
- uses: dart-lang/setup-dart@9a04e6d73cca37bd455e0608d7e5092f881fd603
name: Setup Dart
- name: Verify the release note content
run: |
cd tool/
dart pub get
dart release_note_helper.dart verify -f "../$CURRENT_RELEASE_JSON_FILE_PATH"
- name: Check PR Urls
env:
PULL_NUMBER: ${{steps.get-pull-request-number.outputs.PULL_REQUEST_NUMBER}}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cd tool/
dart pub get
dart ./release_note_helper.dart pr-url \
-f "../$CURRENT_RELEASE_JSON_FILE_PATH" \
-u https://github.com/flutter/devtools/pull/$PULL_NUMBER