Skip to content

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

Merged
AvivDavid23 merged 3 commits into2.4from
2.4-ci
Feb 9, 2026
Merged

MOD-13779 | MOD-13574 | MOD-13811 Dockerize CI, add AL2023 and macos-…#1503
AvivDavid23 merged 3 commits into2.4from
2.4-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
Replaces core GitHub Actions build/test/pack/upload workflows with a Docker-based matrix across many OS images and architectures, which can break CI in subtle platform-specific ways. Also changes packaging/upload paths (new in-container S3 uploader) and dependency pinning, affecting release artifact generation.

Overview
Dockerizes the Linux CI pipeline by replacing the legacy flow-linux-x86, flow-ubuntu-arm, and flow-alpine workflows with a unified flow-linux.yml that builds/tests/packs inside per-OS Docker images across x64 and arm64 matrices.

Adds new Dockerfiles for supported distros (including Alpine and Amazon Linux 2023) plus a shared .install/install_redis.sh used during image builds, and introduces sbin/upload-artifacts-s3 to perform S3 uploads from within the container (including optional beta uploads).

Updates event workflows (event-ci, event-nightly, event-tag) to call the new linux workflow, expands the tagged-release OS set, updates macOS CI to ARM-only across macos-14/15/26, and pins Python tooling to setuptools<81 (also added to test requirements).

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

…26 (#1494)

* MOD-13779 Dockerize CI

* MOD-13574 AL2023

* MOD-13811 MACOS-26

# 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 compiler in Amazon Linux 2023 Dockerfile

High Severity

The Dockerfile.amazonlinux2023 installs clang but not gcc. The install_redis.sh script runs make to build Redis, which defaults to using gcc as the compiler. Without gcc installed, the Redis build step will fail, causing the entire Docker image build to fail. All other Dockerfiles in this PR (e.g., Dockerfile.jammy, Dockerfile.bionic, Dockerfile.rocky9) explicitly install gcc or a package that provides it.

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 gcc not enabled for Redis build

High Severity

The RUN source /opt/rh/devtoolset-11/enable command on line 19 runs in its own shell, and environment changes don't persist to subsequent RUN commands. When install_redis.sh runs at line 29, devtoolset-11-gcc isn't in PATH because each Docker RUN starts a fresh shell. Since no base gcc package is installed (only devtoolset-11-gcc which requires enabling), the Redis build will fail with gcc not found.

Additional Locations (1)

Fix in Cursor Fix in Web

ENV DEBIAN_FRONTEND=noninteractive
RUN dnf update -y
RUN dnf install -y gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ make wget git openssl openssl-devel which rsync unzip cargo clang
RUN cp /opt/rh/gcc-toolset-13/enable /etc/profile.d/gcc-toolset-13.sh
Copy link

Choose a reason for hiding this comment

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

gcc-toolset not enabled for Redis build

High Severity

Line 7 installs gcc-toolset-13-gcc (located at /opt/rh/gcc-toolset-13/) but no base gcc package. Line 8 copies the enable script to profile.d which only works for login shells. When install_redis.sh runs at line 16 in a non-login shell, gcc isn't in PATH, causing the Redis build to fail. Unlike Dockerfile.rocky8 which installs the "Development Tools" group (including base gcc), Rocky 9 has no system gcc available.

Additional Locations (1)

Fix in Cursor Fix in Web

RUN dnf install -y gcc-toolset-11-gcc gcc-toolset-11-gcc-c++ gcc-toolset-11-libatomic-devel make wget git openssl openssl-devel \
bzip2-devel libffi-devel zlib-devel tar xz which rsync cargo clang curl

RUN cp /opt/rh/gcc-toolset-11/enable /etc/profile.d/gcc-toolset-11.sh
Copy link

Choose a reason for hiding this comment

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

gcc-toolset copied to profile.d but never sourced

Medium Severity

The RUN cp /opt/rh/gcc-toolset-*/enable /etc/profile.d/*.sh commands copy the toolset enable script expecting it to be sourced automatically, but profile.d scripts are only sourced by login shells. Docker RUN commands and the workflow's bash -c commands are non-login shells, so the gcc-toolset is never activated. Redis at lines 20 (Rocky 8) and 16 (Rocky 9) is built with system GCC (8.x and 11.x respectively) instead of the installed gcc-toolset (11.x and 13.x).

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.

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

Choose a reason for hiding this comment

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

CI matrix expanded from 4 to 11 OSes without documentation

Medium Severity

The os parameter was removed from build-linux-x64 and build-linux-arm64 jobs, causing them to use defaults from flow-linux.yml. This expands the CI matrix from 4 OSes (jammy, rocky9, amazonlinux2, azurelinux3) to 11 OSes for x64, and from 3 OSes to 7 for arm64. Total CI builds increase from ~7 to ~18, potentially slowing PR feedback loops significantly. The linux-valgrind job still explicitly sets os: jammy, suggesting the original limiting pattern was intentional for CI speed.

Fix in Cursor Fix in Web

@AvivDavid23 AvivDavid23 merged commit 604eb3d into 2.4 Feb 9, 2026
35 of 36 checks passed
@AvivDavid23 AvivDavid23 deleted the 2.4-ci branch February 9, 2026 08:33
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