Skip to content

MOD-13779 | MOD-13574 | MOD-13811 Dockerize CI, add AL2023 and macos-…#1499

Merged
AvivDavid23 merged 2 commits into8.2from
8.2-ci
Feb 9, 2026
Merged

MOD-13779 | MOD-13574 | MOD-13811 Dockerize CI, add AL2023 and macos-…#1499
AvivDavid23 merged 2 commits into8.2from
8.2-ci

Conversation

@AvivDavid23
Copy link
Contributor

@AvivDavid23 AvivDavid23 commented Feb 8, 2026

…26 (#1494)

  • MOD-13779 Dockerize CI

  • MOD-13574 AL2023

  • MOD-13811 MACOS-26


Note

Medium Risk
Large CI/infrastructure refactor that changes how builds/tests and artifact uploads run (Docker + new OS/arch matrices), which can cause unexpected build or release pipeline failures if any image/setup step diverges from the prior runner-based flow.

Overview
CI is reworked to run Linux builds/tests inside per-distro Docker images via a new reusable workflow flow-linux.yml, replacing the previous flow-linux-x86.yml, flow-linux-arm.yml, flow-alpine.yml, and flow-azurelinux3-arm.yml paths and updating event-ci, event-nightly, event-weekly, and event-tag to call it for both x64 and arm64 (including valgrind on jammy).

The Linux matrix is expanded/standardized (notably adding amazonlinux2023 and alpine in several events), and new Dockerfile.* images plus .install/install_redis.sh and sbin/upload-artifacts-s3 implement Redis builds and S3 uploads from inside containers (with optional beta uploads). Separately, macOS CI drops the old x64 job and runs arm64 builds across macos-14, macos-15, and macos-26, and Python packaging is pinned to setuptools<81 (added to test and Docker requirements).

Written by Cursor Bugbot for commit 7daf73d. This will update automatically on new commits. Configure here.

…26 (#1494)

* MOD-13779 Dockerize CI

* MOD-13574 AL2023

* MOD-13811 MACOS-26
@codecov
Copy link

codecov bot commented Feb 8, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 78.79%. Comparing base (c9d32b5) to head (7daf73d).
⚠️ Report is 12 commits behind head on 8.2.

Additional details and impacted files
@@            Coverage Diff             @@
##              8.2    #1499      +/-   ##
==========================================
- Coverage   79.20%   78.79%   -0.42%     
==========================================
  Files          15       14       -1     
  Lines        3707     3541     -166     
==========================================
- Hits         2936     2790     -146     
+ Misses        771      751      -20     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.


# Install git and build tools first
RUN dnf install -y git make wget openssl openssl-devel which \
rsync unzip clang tar
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing gcc in amazonlinux2023 Dockerfile breaks build

High Severity

Dockerfile.amazonlinux2023 installs clang but not gcc or any package providing cc. The install_redis.sh script runs make which defaults to using cc (via Redis's CC ?= cc). On Amazon Linux 2023, installing clang does not create a cc symlink, and gcc is not in the base Docker image. This will cause the Docker build to fail during Redis compilation. Every other Dockerfile in this PR explicitly installs gcc (or build-essential or a gcc-toolset).

Fix in Cursor Fix in Web

with:
arch: arm64
redis-ref: ${{needs.prepare-values.outputs.redis-ref}}
secrets: inherit
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI workflow missing os parameter builds all platforms

Medium Severity

The build-linux-x64 and build-linux-arm64 jobs in event-ci.yml don't pass the os parameter, so flow-linux.yml defaults to the full platform matrix (11 x64 + 7 arm64 = 18 builds). The old CI specified os: jammy rocky9 amazonlinux2 azurelinux3 (4 platforms + 1 arm64 = 5 builds). By contrast, event-weekly.yml explicitly passes os lists. This ~3.6× increase in per-PR builds appears unintentional.

Fix in Cursor Fix in Web

RUN yum install -y wget git which devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-make \
rsync unzip tar awscli clang curl openssl11 openssl11-devel

RUN source /opt/rh/devtoolset-11/enable
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devtoolset PATH not persisted across Docker RUN layers

High Severity

RUN source /opt/rh/devtoolset-11/enable is a no-op in Docker — environment changes from source are lost when the RUN layer's shell exits. Since devtoolset-11-gcc and devtoolset-11-make install binaries only at /opt/rh/devtoolset-11/root/usr/bin/ (not /usr/bin/), and no system make or gcc is installed, both make and cc are missing from PATH in all subsequent RUN commands. The install_redis.sh step will fail with "command not found." An ENV PATH directive is needed to persist the devtoolset paths.

Additional Locations (1)

Fix in Cursor Fix in Web

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
${{ env.DOCKER_IMAGE }} \
bash -c "cargo test && MODULE=\$(realpath ./target/release/rejson.so) RLTEST_ARGS='--no-progress' \$(realpath ./tests/pytest/tests.sh) VG=${{ inputs.run_valgrind && '1' || '0' }}"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VG passed as argument instead of environment variable

High Severity

In the test command, VG=... is placed after the tests.sh command path, making it a positional argument ($1) instead of an environment variable. In bash, VAR=value command sets an env var, but command VAR=value passes a literal string argument. The tests.sh script checks $VG as an environment variable at line 600 to enable Valgrind — since VG is never set as an env var, Valgrind will silently never run even when run_valgrind: true is passed. The VG=... assignment needs to be placed before \$(realpath ./tests/pytest/tests.sh).

Fix in Cursor Fix in Web

@AvivDavid23 AvivDavid23 merged commit fba3c5d into 8.2 Feb 9, 2026
38 checks passed
@AvivDavid23 AvivDavid23 deleted the 8.2-ci branch February 9, 2026 08:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants