Skip to content

Commit 25f3b1a

Browse files
committed
ci: Prevent automated version downgrades
Use a caret semver range to ensure that we don't return a release version that is lower than the current one. Closes #1043
1 parent c84595c commit 25f3b1a

File tree

1 file changed

+28
-13
lines changed

1 file changed

+28
-13
lines changed

.github/workflows/update.yml

+28-13
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,24 @@ jobs:
1111
runs-on: ubuntu-latest
1212
strategy:
1313
matrix:
14-
include:
15-
- release: 8.x
16-
branch: main
17-
- release: 8.x
18-
branch: tls
19-
- release: 7.x
20-
branch: release-7.x
14+
branch:
15+
- main
16+
- tls
17+
- release-7.x
2118

2219
steps:
20+
- uses: actions/checkout@v4
21+
with:
22+
ref: ${{ matrix.branch }}
23+
sparse-checkout-cone-mode: false
24+
sparse-checkout: /.env
25+
- name: Read current stack version
26+
id: current-release
27+
run: |
28+
source .env
29+
: ${ELASTIC_VERSION:?unset}
30+
echo "version=${ELASTIC_VERSION}" >>"$GITHUB_OUTPUT"
31+
2332
- uses: actions/setup-node@v4
2433
- run: npm install semver
2534

@@ -42,7 +51,7 @@ jobs:
4251
4352
const version=semver.clean(release.tag_name)
4453
45-
if (semver.satisfies(version, '${{ matrix.release }}')) {
54+
if (semver.satisfies(version, '^${{ steps.current-release.outputs.version }}')) {
4655
return version
4756
}
4857
}
@@ -54,17 +63,23 @@ jobs:
5463
return { version: latestVersion }
5564
}
5665
57-
- uses: actions/checkout@v4
58-
if: steps.get-latest-release.outputs.result
66+
# Subsequent executions of actions/checkout omit to revert this setting to 'false',
67+
# even if sparse-checkout is later disabled (see actions/checkout#2034).
68+
- name: Disable sparse checkout
69+
run: git config core.sparseCheckout false
70+
# Removes untracked files created by npm (node_modules/, package.json, ...).
71+
# Disables previous sparse checkout.
72+
- name: Clean checkout
73+
uses: actions/checkout@v4
74+
if: steps.get-latest-release.outputs.result && fromJson(steps.get-latest-release.outputs.result).version != steps.current-release.outputs.version
5975
with:
6076
ref: ${{ matrix.branch }}
6177

6278
- name: Update stack version
6379
id: update-files
64-
if: steps.get-latest-release.outputs.result
80+
if: steps.get-latest-release.outputs.result && fromJson(steps.get-latest-release.outputs.result).version != steps.current-release.outputs.version
6581
run: |
66-
source .env
67-
cur_ver="$ELASTIC_VERSION"
82+
cur_ver=${{ steps.current-release.outputs.version }}
6883
new_ver=${{ fromJson(steps.get-latest-release.outputs.result).version }}
6984
7085
# Escape period characters so sed interprets them literally

0 commit comments

Comments
 (0)