Pin alpine 3 version to 3.22 [MOD-12913]#7651
Conversation
| 'setup_script': 'apk add bash gcompat libstdc++ libgcc git', | ||
| 'post_setup_script': 'echo RUST_DYN_CRT=1 >> $GITHUB_ENV', | ||
| 'name': 'Alpine 3 ARM64' | ||
| 'name': 'Alpine 3.22 ARM64' |
There was a problem hiding this comment.
Bug: Incomplete identifier update breaks Alpine workflow conditionals
Changing the Alpine platform identifier from alpine:3 to alpine:3.22 in the matrix and config files breaks downstream workflow conditionals that still compare against alpine:3. In task-build-artifacts.yml and task-test.yml, the "Setup Dependencies (Alpine)" step checks if container == 'alpine:3', which will now be false for alpine:3.22. This causes Alpine builds to skip the required sh -l -eo pipefail shell and use the bash-based non-Alpine setup path instead, which will fail since Alpine uses ash/sh by default. The node20 support checks also fail to match, incorrectly treating Alpine as node20-compatible.
Additional Locations (1)
There was a problem hiding this comment.
Bug: Incomplete version update breaks node20 support detection
The node20 support check loops through platforms including alpine:3, but since the container is now alpine:3.22, the condition $CONTAINER == "$platform" will never match. This incorrectly marks node20 as supported for Alpine, causing the workflow to use actions/checkout@v4 instead of the manual checkout fallback required for platforms without node20 support.
.github/workflows/task-build-artifacts.yml#L110-L111
RediSearch/.github/workflows/task-build-artifacts.yml
Lines 110 to 111 in ab721e4
.github/workflows/task-test.yml#L245-L246
RediSearch/.github/workflows/task-test.yml
Lines 245 to 246 in ab721e4
Bug: Incomplete version update breaks manual checkout case statement
The case statement for manual checkout (node20 not supported) matches alpine:3 but the container is now alpine:3.22. If the node20 support check were fixed, this case statement would fail to match, potentially leaving the repository in an incorrectly configured state.
.github/workflows/task-build-artifacts.yml#L130-L131
RediSearch/.github/workflows/task-build-artifacts.yml
Lines 130 to 131 in ab721e4
.github/workflows/task-test.yml#L275-L276
RediSearch/.github/workflows/task-test.yml
Lines 275 to 276 in ab721e4
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #7651 +/- ##
=======================================
Coverage 84.72% 84.72%
=======================================
Files 350 350
Lines 54184 54184
Branches 14500 14500
=======================================
+ Hits 45909 45910 +1
+ Misses 8082 8081 -1
Partials 193 193
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Bug: node20 check still compares to `alpine:3`
The node20 compatibility check loop iterates over alpine:3 instead of alpine:3.22. Since the container is now alpine:3.22, this check will no longer detect Alpine as a platform requiring node20 fallback handling, potentially causing build/test failures if node20 isn't actually supported on Alpine 3.22.
.github/workflows/task-build-artifacts.yml#L110-L111
RediSearch/.github/workflows/task-build-artifacts.yml
Lines 110 to 111 in 91b60b3
.github/workflows/task-test.yml#L245-L246
RediSearch/.github/workflows/task-test.yml
Lines 245 to 246 in 91b60b3
Bug: Checkout fallback case matches old `alpine:3`
The case statement for node20 fallback checkout logic matches alpine:3 instead of alpine:3.22. If the node20 check were fixed and Alpine needed fallback handling, this case wouldn't match the new container name, causing the checkout step to fail with "Unsupported platform".
.github/workflows/task-build-artifacts.yml#L130-L131
RediSearch/.github/workflows/task-build-artifacts.yml
Lines 130 to 131 in 91b60b3
.github/workflows/task-test.yml#L275-L276
RediSearch/.github/workflows/task-test.yml
Lines 275 to 276 in 91b60b3
| # Split to alpine and non-alpine due to different default shells, once the dependency installation is done, we can use the same shell in the rest of the flow | ||
| - name: Setup Dependencies (Alpine) | ||
| if: needs.build-image.outputs.succeeded != 'true' && needs.get-config.outputs.setup_script && needs.get-config.outputs.container == 'alpine:3' | ||
| if: needs.build-image.outputs.succeeded != 'true' && needs.get-config.outputs.setup_script && needs.get-config.outputs.container == 'alpine:3.22' |
There was a problem hiding this comment.
Bug: Inconsistent Alpine version check after version update
The "Setup Dependencies (Non-Alpine)" step condition still checks for alpine:3 instead of alpine:3.22. Since the Alpine setup step at line 200 now checks for alpine:3.22, and the container will be alpine:3.22, this Non-Alpine step condition (!= 'alpine:3') will always be true for Alpine containers. This causes both the Alpine-specific setup (using sh shell) and the Non-Alpine setup (using bash shell) to run for Alpine containers, which was not the intended behavior. The condition at line 218 needs to match the updated version at line 200.
Describe the changes in the pull request
In alpine container version 3.23, the gcc version was bumped to 15, which we dont support yet
As a temporary solution, we pin the container version to 3.22
Which additional issues this PR fixes
Main objects this PR modified
Mark if applicable
Note
Pin CI Alpine platform to 3.22 and align matrices and conditionals accordingly across build/test workflows.
alpine:3toalpine:3.22across workflow inputs, matrices, and config inflow-build-artifacts.yml,flow-test.yml,generate-matrix.yml, andtask-get-config.yml.alpine:3.22intask-build-artifacts.ymlandtask-test.yml(Alpine vs non-Alpine setup paths).alpine:3.22for bothx86_64andaarch64.Written by Cursor Bugbot for commit fa7cb08. This will update automatically on new commits. Configure here.