Skip to content

Commit 0e97899

Browse files
chore(ci): Fixes for version checks upon release (#671)
- The version information must be up to date and accurate before tagging and publishing releases
1 parent d477e8d commit 0e97899

File tree

2 files changed

+29
-14
lines changed

2 files changed

+29
-14
lines changed

.github/workflows/reusable_deliver.yaml

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,8 @@ jobs:
3030

3131
- name: "Check version number is same between tag, library, and/or release"
3232
id: check-version
33-
env:
34-
REF: ${{ github.ref }}
3533
run: |
36-
if [[ "$REF" = refs/heads/release/* ]]; then
37-
scripts/check-version-is.sh "${GITHUB_REF##*release/}"
38-
elif [[ "$REF" = refs/tags/sdk/v* ]]; then
39-
scripts/check-version-is.sh "${GITHUB_REF_NAME#sdk/v}"
40-
else
41-
scripts/check-version-is.sh
42-
fi
34+
scripts/check-version-is.sh "${GITHUB_REF}"
4335
4436
- name: "Output build metadata"
4537
id: guess-build-metadata

scripts/check-version-is.sh

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,38 @@
11
#!/usr/bin/env bash
22
# Validate that version number is same across all expected files
3+
# If no parameter is found, validates that the lib/package.json is consistent throughout the repo.
4+
#
5+
# Expected usage:
6+
# ./scripts/check-version-is.sh [expected_version, e.g. from branch or tag name]
7+
# Output:
8+
# ::error file=Makefile,line=5::Incorrect version line, should be setting it to [1.0.0]
39

410
set -euo pipefail
511

6-
lib_version="$(cd lib && node -p "require('./package.json').version")"
7-
8-
expected_version="${1:-$lib_version}"
12+
# Parse github.ref context parameter if provided
13+
if [[ ${1:-} =~ refs/heads/release/sdk/v(.*) ]]; then
14+
minor_version="${BASH_REMATCH[1]}"
15+
lib_version="$(cd lib && node -p "require('./package.json').version")"
16+
if [[ $lib_version != $minor_version* ]]; then
17+
echo "::error file=lib/package.json::lib version [$lib_version] does not start with expected minor version [$minor_version]"
18+
exit 1
19+
fi
20+
expected_version="$lib_version"
21+
elif [[ ${1:-} =~ refs/tags/sdk/v(.*) ]]; then
22+
expected_version="${BASH_REMATCH[1]}"
23+
elif [[ ${1:-} =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$ ]]; then
24+
expected_version="${1}"
25+
else
26+
lib_version="$(cd lib && node -p "require('./package.json').version")"
27+
if [[ -n ${1:-} ]]; then
28+
echo "::error::Unrecognized ref '${1}'; ignored in favor of lib/package.json's version [${lib_version}]"
29+
fi
30+
expected_version="${lib_version}"
31+
fi
932

1033
if ! grep --fixed-strings --line-regexp --quiet "version=${expected_version}" "Makefile"; then
1134
if grep --quiet "^version=" "Makefile"; then
12-
echo "::error file=Makefile,line=$(sed -n '/version/=' Makefile)::Incorrect version line, should be setting it to [${expected_version}]"
35+
echo "::error file=Makefile,line=$(sed -n '/^version/=' Makefile)::Incorrect version line, should be setting it to [${expected_version}]"
1336
else
1437
echo "::error file=Makefile::Makefile missing version line [version=${expected_version}]"
1538
fi
@@ -18,7 +41,7 @@ fi
1841

1942
if ! grep --fixed-strings --line-regexp --quiet "export const version = '${expected_version}'; // x-release-please-version" "lib/src/version.ts"; then
2043
if grep --quiet "^export const version" "lib/src/version.ts"; then
21-
echo "::error file=lib/src/version.ts,line=$(sed -n '/export const version/=' lib/src/version.ts)::Incorrect version line, should be setting it to [${expected_version}]"
44+
echo "::error file=lib/src/version.ts,line=$(sed -n '/^export const version/=' lib/src/version.ts)::Incorrect version line, should be setting it to [${expected_version}]"
2245
else
2346
echo "::error file=lib/src/version.ts::Missing version line [version=${expected_version}]"
2447
fi

0 commit comments

Comments
 (0)