Skip to content

Update README.md

Update README.md #45

name: Validate Release Information
on:
pull_request:
types:
- opened
- reopened
- ready_for_review
- edited
permissions:
contents: read
pull-requests: write
jobs:
release-info:
runs-on: ubuntu-latest
env:
PR_DESCRIPTION: ${{ github.event.pull_request.body }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v2
- run: echo $PR_DESCRIPTION
- name: Set release type label
run: |
RELEASE_TYPES=$(echo "$PR_DESCRIPTION" | grep -oP '(?<=/release )\b(major|minor|patch|none)\b' || true)
if [[ -z $RELEASE_TYPES ]]; then
echo "No valid release type found. Specify /release <major|minor|patch|none> in the PR description."
exit 1
fi
if [[ $(echo "$RELEASE_TYPES" | wc -l) -gt 1 ]]; then
echo "Multiple release types found. Specify a single /release <major|minor|patch|none> in the PR description."
exit 1
fi
RELEASE_LABEL="release/${RELEASE_TYPES}"
OLD_LABEL=$(gh pr view ${{ github.event.number }} --json labels --jq '.labels[].name' | grep -E '^(release)/' || true)
[[ $RELEASE_LABEL != $OLD_LABEL ]] && gh issue edit ${{ github.event.number }} --add-label "${RELEASE_LABEL}" --remove-label "${OLD_LABEL}"
echo RELEASE_LABEL=$RELEASE_LABEL >> $GITHUB_ENV
- name: Check release note
run: |
PR_DESCRIPTION_ONE_LINE=$(echo "$PR_DESCRIPTION" | tr '\n' '\r')
RELEASE_NOTE=$(echo "$PR_DESCRIPTION_ONE_LINE" | grep -Po '(?s)```release-note\r(.*?)\r```' || true)
RELEASE_NOTE_CONTENT=$(echo -e "$RELEASE_NOTE" | tr '\r' '\n' | awk 'NR>2 && !/```/')
echo "Release note"
echo "------------"
echo -e "$RELEASE_NOTE_CONTENT" | tr -s '\n'
if [[ -z $RELEASE_NOTE ]]; then
echo "No release note found. Please write a meaningful release note in the PR description in the format:"
printf "```\nrelease-note\n<Description of the release>\n```\n"
exit 1
fi
if [[ -z $RELEASE_NOTE_CONTENT && ${{ env.RELEASE_LABEL }} != "release/none" ]]; then
echo "Release note may not be empty since you specified release type ${{ env.RELEASE_LABEL }}. Please write a meaningful release note."
exit 1
fi