blob: 2842f8ff71eb7442475512691321b520dd6c23f8 [file] [edit]
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 "PULL_REQUEST_NUMBER=$PULL_REQUEST_NUMBER" >> $GITHUB_OUTPUT
- 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" >> $GITHUB_OUTPUT
- 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 "HAS_RELEASE_NOTE_EXCEPTION_STRING=$HAS_RELEASE_NOTE_EXCEPTION_STRING" >> $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}}
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
release-note-validation:
runs-on: ubuntu-latest
name: Release Note Validation
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
- uses: dart-lang/setup-dart@9a04e6d73cca37bd455e0608d7e5092f881fd603
- uses: actions/checkout@v3
- name: Verify the release note integrity
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