Skip to content

Commit 76bd848

Browse files
committed
tools: add linter for release commit proposals
1 parent 1d01ad6 commit 76bd848

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Linters
2+
3+
on:
4+
push:
5+
branches:
6+
- v[0-9]+.[0-9]+.[0-9]+-proposal
7+
8+
concurrency:
9+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
10+
cancel-in-progress: true
11+
12+
env:
13+
PYTHON_VERSION: '3.12'
14+
NODE_VERSION: lts/*
15+
16+
permissions:
17+
contents: read
18+
19+
jobs:
20+
lint-release-commit:
21+
runs-on: ubuntu-latest
22+
steps:
23+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
24+
with:
25+
persist-credentials: false
26+
- name: Lint release commit
27+
run: |
28+
git log -1 HEAD --format=%s | grep -q -E '^\d{4}-\d{2}-\d{2}, Version \d+\.\d+\.\d+ (\(Current|'.+' \(LTS)\)$'
29+
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]+$"
30+
- name: Extract releaser info
31+
id: releaser-info
32+
run: |
33+
COMMIT_SUBJECT="$(git log -1 HEAD --format=%s)"
34+
CHANGELOG_TITLE_INTRO="## $COMMIT_SUBJECT, @"
35+
CHANGELOG_TITLE="$(grep "$CHANGELOG_TITLE_INTRO" "doc/changelogs/CHANGELOG_V${COMMIT_SUBJECT:20:2}.md")"
36+
[[ "${CHANGELOG_TITLE%@*}@" == "$CHANGELOG_TITLE_INTRO" ]]
37+
RELEASER_INFO="${CHANGELOG_TITLE#*@}"
38+
{
39+
echo "RELEASER=${RELEASER_INFO% prepared by*}"
40+
echo "PREPARATOR=${RELEASER_INFO#*@}"
41+
} >> "$GITHUB_OUTPUT"

0 commit comments

Comments
 (0)