From 76bd848f19430536bf211cbe51fee0db6c3105be Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 19 Nov 2024 16:47:03 +0100 Subject: [PATCH] tools: add linter for release commit proposals --- .github/workflows/lint-release-proposal.yml | 41 +++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/lint-release-proposal.yml diff --git a/.github/workflows/lint-release-proposal.yml b/.github/workflows/lint-release-proposal.yml new file mode 100644 index 00000000000000..1881e199c279ef --- /dev/null +++ b/.github/workflows/lint-release-proposal.yml @@ -0,0 +1,41 @@ +name: Linters + +on: + push: + branches: + - v[0-9]+.[0-9]+.[0-9]+-proposal + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +env: + PYTHON_VERSION: '3.12' + NODE_VERSION: lts/* + +permissions: + contents: read + +jobs: + lint-release-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + - name: Lint release commit + run: | + git log -1 HEAD --format=%s | grep -q -E '^\d{4}-\d{2}-\d{2}, Version \d+\.\d+\.\d+ (\(Current|'.+' \(LTS)\)$' + git log -1 HEAD --format=%b | git interpret-trailers --parse --no-divider | grep -E -q "^PR-URL: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/pull/[0-9]+$" + - name: Extract releaser info + id: releaser-info + run: | + COMMIT_SUBJECT="$(git log -1 HEAD --format=%s)" + CHANGELOG_TITLE_INTRO="## $COMMIT_SUBJECT, @" + CHANGELOG_TITLE="$(grep "$CHANGELOG_TITLE_INTRO" "doc/changelogs/CHANGELOG_V${COMMIT_SUBJECT:20:2}.md")" + [[ "${CHANGELOG_TITLE%@*}@" == "$CHANGELOG_TITLE_INTRO" ]] + RELEASER_INFO="${CHANGELOG_TITLE#*@}" + { + echo "RELEASER=${RELEASER_INFO% prepared by*}" + echo "PREPARATOR=${RELEASER_INFO#*@}" + } >> "$GITHUB_OUTPUT"