Skip to content

Commit 04a8b13

Browse files
authored
Merge pull request #13 from stellarwp/release/1.1.8
Release 1.1.8
2 parents 753a74d + c7f98fe commit 04a8b13

3 files changed

Lines changed: 333 additions & 80 deletions

File tree

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Release PR Validation
2+
run-name: '[Release PR] Validate ${{ github.head_ref }}'
3+
4+
on:
5+
pull_request:
6+
branches:
7+
- main
8+
9+
jobs:
10+
validate-release-version:
11+
name: Validate release package version
12+
if: startsWith(github.head_ref, 'release/')
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: Check out Git repository
17+
uses: actions/checkout@v4
18+
19+
- name: Set up Node.js
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version: 18
23+
24+
- name: Derive release version from PR branch
25+
id: release-version
26+
shell: bash
27+
run: |
28+
release_version="${GITHUB_HEAD_REF#release/}"
29+
release_version="${release_version#v}"
30+
31+
if [[ -z "$release_version" ]]; then
32+
echo "Unable to derive a release version from branch '$GITHUB_HEAD_REF'." >&2
33+
exit 1
34+
fi
35+
36+
echo "release_version=$release_version" >> "$GITHUB_OUTPUT"
37+
38+
- name: Validate package versions
39+
env:
40+
RELEASE_VERSION: ${{ steps.release-version.outputs.release_version }}
41+
run: |
42+
node <<'NODE'
43+
const fs = require( 'fs' );
44+
45+
const releaseVersion = process.env.RELEASE_VERSION;
46+
const packageJson = JSON.parse( fs.readFileSync( 'package.json', 'utf8' ) );
47+
const packageLock = JSON.parse( fs.readFileSync( 'package-lock.json', 'utf8' ) );
48+
49+
const checks = [
50+
{
51+
label: 'package.json',
52+
actual: packageJson.version,
53+
},
54+
{
55+
label: 'package-lock.json',
56+
actual: packageLock.version,
57+
},
58+
];
59+
60+
const mismatches = checks.filter( ( check ) => check.actual !== releaseVersion );
61+
62+
if ( mismatches.length > 0 ) {
63+
const mismatchLines = mismatches.map(
64+
( mismatch ) =>
65+
`- ${ mismatch.label }: ${ mismatch.actual ?? 'missing' }`
66+
);
67+
68+
console.error(
69+
'::error title=Release PR version mismatch::' +
70+
`Release branch ${ process.env.GITHUB_HEAD_REF } expects version ${ releaseVersion }.`
71+
);
72+
console.error( 'Release version validation failed.' );
73+
console.error( `Expected from branch: ${ releaseVersion }` );
74+
console.error( 'Found:' );
75+
console.error( mismatchLines.join( '\n' ) );
76+
console.error(
77+
'Update package.json and regenerate package-lock.json before merging this release PR.'
78+
);
79+
80+
process.exit( 1 );
81+
}
82+
83+
console.log( `Validated release version ${ releaseVersion } in package.json and package-lock.json.` );
84+
NODE

0 commit comments

Comments
 (0)