|
name: Check change note |
|
|
|
permissions: |
|
pull-requests: read |
|
|
|
on: |
|
pull_request_target: |
|
types: [labeled, unlabeled, opened, synchronize, reopened, ready_for_review] |
|
paths: |
|
- "*/ql/src/**/*.ql" |
|
- "*/ql/src/**/*.qll" |
|
- "*/ql/lib/**/*.ql" |
|
- "*/ql/lib/**/*.qll" |
|
- "*/ql/lib/**/*.yml" |
|
- "shared/**/*.ql" |
|
- "shared/**/*.qll" |
|
- "!**/experimental/**" |
|
- "!ql/**" |
|
- ".github/workflows/check-change-note.yml" |
|
|
|
jobs: |
|
check-change-note: |
|
env: |
|
REPO: ${{ github.repository }} |
|
PULL_REQUEST_NUMBER: ${{ github.event.number }} |
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
runs-on: ubuntu-latest |
|
steps: |
|
|
|
- name: Fail if no change note found. To fix, either add one, or add the `no-change-note-required` label. |
|
if: | |
|
github.event.pull_request.draft == false && |
|
!contains(github.event.pull_request.labels.*.name, 'no-change-note-required') |
|
run: | |
|
change_note_files=$(gh api "repos/$REPO/pulls/$PULL_REQUEST_NUMBER/files" --paginate --jq '.[].filename | select(test("/change-notes/.*[.]md$"))') |
|
|
|
if [ -z "$change_note_files" ]; then |
|
echo "No change note found. Either add one, or add the 'no-change-note-required' label." |
|
exit 1 |
|
fi |
|
|
|
echo "Change notes found:" |
|
echo "$change_note_files" |
|
|
|
- name: Fail if the change note filename doesn't match the expected format. The file name must be of the form 'YYYY-MM-DD.md', 'YYYY-MM-DD-{title}.md', where '{title}' is arbitrary text, or released/x.y.z.md for released change-notes |
|
run: | |
|
bad_change_note_file_names=$(gh api "repos/$REPO/pulls/$PULL_REQUEST_NUMBER/files" --paginate --jq '[.[].filename | select(test("/change-notes/.*[.]md$"))][] | select((test("/change-notes/[0-9]{4}-[0-9]{2}-[0-9]{2}.*[.]md$") or test("/change-notes/released/[0-9]*[.][0-9]*[.][0-9]*[.]md$")) | not)') |
|
|
|
if [ -n "$bad_change_note_file_names" ]; then |
|
echo "The following change note file names are invalid:" |
|
echo "$bad_change_note_file_names" |
|
exit 1 |
|
fi |