Skip to content

ci: add 39 on-demand ARM64 package build workflows#5662

Merged
renecannao merged 2 commits into
v3.0from
feat/arm64-on-demand-package-builds
Apr 23, 2026
Merged

ci: add 39 on-demand ARM64 package build workflows#5662
renecannao merged 2 commits into
v3.0from
feat/arm64-on-demand-package-builds

Conversation

@renecannao

@renecannao renecannao commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds 39 self-contained workflow_dispatch-only GitHub Actions workflows for building ARM64 packages on demand (no automatic triggers on push/PR).

Structure

Tier Flag Naming Packages
Stable (v3.0.x) CI-package-arm64-<dist>.yml 13
Innovative (v3.1.x) PROXYSQL31=1 CI-package-arm64-<dist>-v31.yml 13
AI/MCP (v4.0.x) PROXYSQLGENAI=1 CI-package-arm64-<dist>-genai.yml 13

Distros covered

centos9, centos10, debian12, debian13, ubuntu22, ubuntu24, fedora42, fedora43, opensuse15, opensuse16, almalinux8, almalinux9, almalinux10

Per-workflow details

  • Runner: ubuntu-24.04-arm
  • Artifact: Built .deb/.rpm + hash, 90-day retention
  • Check runs: via LouisBrunner/checks-action@v2.0.0
  • Concurrency: One build per dist per branch, cancel-in-progress

Usage

Trigger from GitHub Actions UI or CLI:

gh workflow run CI-package-arm64-ubuntu22.yml --ref v3.0

Summary by CodeRabbit

  • Chores
    • Added new manually‑triggered CI workflows to build ARM64 packages for AlmaLinux, CentOS, Debian, Fedora, OpenSUSE and Ubuntu (standard, v31 and GenAI variants).
    • CI now uploads built artifacts (binaries) with 90‑day retention and fails when no artifacts are produced.
    • Run status/check updates are published to show in‑progress and final results.

Add workflow_dispatch-only workflows for building ARM64 packages across
13 distros and 3 feature tiers (stable/v3.0, PROXYSQL31/v3.1, PROXYSQLGENAI/v4.0).

Each workflow is self-contained, runs on ubuntu-24.04-arm, and uploads
the built .deb/.rpm as a 90-day workflow artifact.
@gemini-code-assist

Copy link
Copy Markdown

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@coderabbitai

coderabbitai Bot commented Apr 23, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds 40+ new manually-dispatched GitHub Actions workflows to build and upload ARM64 packages across multiple Linux distributions and three variants (base, v31, genai); each workflow runs on an ARM64-capable runner, builds via make with optional flags, uploads binaries/ artifacts, and reports status via GitHub Checks.

Changes

Cohort / File(s) Summary
AlmaLinux
.github/workflows/CI-package-arm64-almalinux8*.yml, .github/workflows/CI-package-arm64-almalinux9*.yml, .github/workflows/CI-package-arm64-almalinux10*.yml
Adds base, v31, and genai workflows for AlmaLinux 8/9/10: ARM64 builds on ubuntu-24.04-arm, optional PROXYSQL31/PROXYSQLGENAI flags, upload binaries/ artifact, checks-action status reporting.
CentOS
.github/workflows/CI-package-arm64-centos9*.yml, .github/workflows/CI-package-arm64-centos10*.yml
Adds base, v31, and genai workflows for CentOS 9/10 with same pattern: ARM64 runner, make-based build, artifact upload, checks updates.
Debian
.github/workflows/CI-package-arm64-debian12*.yml, .github/workflows/CI-package-arm64-debian13*.yml
Adds base, v31, and genai workflows for Debian 12/13: ARM64 packaging, optional feature flags, artifact retention and checks integration.
Fedora
.github/workflows/CI-package-arm64-fedora42*.yml, .github/workflows/CI-package-arm64-fedora43*.yml
Adds base, v31, and genai workflows for Fedora 42/43 following the same build/upload/checks pattern.
OpenSUSE
.github/workflows/CI-package-arm64-opensuse15*.yml, .github/workflows/CI-package-arm64-opensuse16*.yml
Adds base, v31, and genai workflows for OpenSUSE 15/16: manual dispatch, ARM64 builds, binaries/ artifact uploads, checks reporting.
Ubuntu
.github/workflows/CI-package-arm64-ubuntu22*.yml, .github/workflows/CI-package-arm64-ubuntu24*.yml
Adds base, v31, and genai workflows for Ubuntu 22/24: matrix/env to indicate variant, ARM64 runner, make-based build, artifact upload, checks-action status updates.
Common workflow behavior
.github/workflows/*.yml
All new workflows are workflow_dispatch, set contents: read and checks: write (minimal permissions), use concurrency groups to cancel in-progress runs for the same workflow/ref, run on ubuntu-24.04-arm, and upload binaries/ artifacts (90-day retention; fail if no files).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped through YAML rows tonight,

Built packages in arm64 light,
v31 and genai, binaries in tow,
Checks tick in, artifacts glow —
A carrot-coded CI delight.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately describes the primary change: adding 39 on-demand ARM64 package build workflows to the CI system.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/arm64-on-demand-package-builds

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 9

🧹 Nitpick comments (7)
.github/workflows/CI-package-arm64-centos10.yml (1)

41-42: Multi-line ls output can corrupt $GITHUB_ENV.

If binaries/ contains more than one file matching *[mb] (or more than one *.id-hash), the newline-separated ls -1 output is written directly into $GITHUB_ENV as a single KEY=... line, which GitHub Actions will treat as malformed/multiple entries and may fail the step or assign only the first value. Consider using the heredoc multiline syntax or restricting to a single file:

♻️ Suggested hardening
-        echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV
-        echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV
+        echo "BIN_PKG=$(ls -1 binaries/*[mb] | head -n1)" >> $GITHUB_ENV
+        echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null | head -n1 || true)" >> $GITHUB_ENV

Also note BIN_PKG/BIN_HASH don't appear to be consumed by any later step in this workflow — if they're intended for a downstream release step, that step seems to be missing; otherwise these two echo lines are dead code.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-centos10.yml around lines 41 - 42, The
workflow writes multi-line ls output directly into $GITHUB_ENV via the BIN_PKG
and BIN_HASH lines which can corrupt the env file if multiple matches exist;
update the steps that set BIN_PKG and BIN_HASH to either (a) restrict to a
single file (e.g., pick the first match from binaries/*[mb] and the first
binaries/*.id-hash) or (b) use a heredoc/multiline-safe export to write each
key/value safely into $GITHUB_ENV, and also remove these lines if
BIN_PKG/BIN_HASH are unused downstream (or add the missing release step that
consumes them); look for the exact symbols BIN_PKG, BIN_HASH, binaries/*[mb],
*.id-hash and $GITHUB_ENV to locate and change the code.
.github/workflows/CI-package-arm64-centos10-genai.yml (1)

41-42: Remove unused environment variables.

The BIN_PKG and BIN_HASH environment variables are set but never referenced in any subsequent steps. This appears to be template code that should be cleaned up.

🧹 Proposed cleanup
     - name: Build package
       run: |
         PROXYSQLGENAI=1 make ${{ env.DIST }}
-        echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV
-        echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-centos10-genai.yml around lines 41 - 42,
Remove the unused environment variables BIN_PKG and BIN_HASH from the workflow
by deleting the lines that echo "BIN_PKG=..." and "BIN_HASH=..." into
$GITHUB_ENV; ensure no other steps reference BIN_PKG or BIN_HASH (search for
those symbols) before removing and leave the rest of the workflow unchanged.
.github/workflows/CI-package-arm64-debian13-genai.yml (2)

20-29: Pin the checks action to a full commit SHA.

LouisBrunner/checks-action@v2.0.0 receives GITHUB_TOKEN; using a mutable tag weakens supply-chain guarantees. Pin both usages (lines 20 and 52) to the resolved commit SHA:

🔒 Pin to commit SHA
-    - uses: LouisBrunner/checks-action@v2.0.0
+    - uses: LouisBrunner/checks-action@6b626ffbad7cc56fd58627f774b9067e6118af23
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-debian13-genai.yml around lines 20 - 29,
The workflow currently uses the mutable tag "uses:
LouisBrunner/checks-action@v2.0.0" which weakens supply-chain guarantees; update
both occurrences of that action (the "uses: LouisBrunner/checks-action@v2.0.0"
entries around the checks steps) to use the fully resolved commit SHA instead of
the tag (e.g., LouisBrunner/checks-action@<commit-sha>), replacing both
instances so the CI references an immutable commit.

4-10: Add explicit workflow permissions for least-privilege access.

This workflow creates and updates check runs via LouisBrunner/checks-action@v2.0.0 (lines 20, 52) and checks out code via actions/checkout@v4 (line 32), but relies on repository-default GITHUB_TOKEN permissions. Add an explicit permissions block to ensure the workflow operates under hardened defaults and avoids over-granting the token under broad defaults.

🔐 Proposed permissions block
 on:
   workflow_dispatch:
 
+permissions:
+  contents: read
+  checks: write
+
 concurrency:
   group: ${{ github.workflow }}-${{ github.ref_name }}
   cancel-in-progress: true
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-debian13-genai.yml around lines 4 - 10,
Add an explicit top-level permissions block to the workflow to enforce
least-privilege access: grant checks: write (needed by
LouisBrunner/checks-action@v2.0.0) and contents: read (needed by
actions/checkout@v4) and avoid broad default scopes; insert this permissions
block at the top-level of the .github workflow (near the existing on: and
concurrency: entries) so the GITHUB_TOKEN is constrained to only those scopes.
.github/workflows/CI-package-arm64-opensuse16-v31.yml (1)

1-60: Consider consolidating the 39 near-identical workflows into a reusable workflow.

All 39 CI-package-arm64-*.yml files in this PR differ only in DIST, MATRIX suffix, artifact name, and the optional PROXYSQL31=1 / PROXYSQLGENAI=1 prefix. Maintaining 39 copies means every future change (runner bump, action version pin, checkout options, artifact retention tweak, the $GITHUB_ENV fix above, etc.) has to be replicated 39 times and is easy to drift.

A workflow_call reusable workflow (e.g. _reusable-package-arm64.yml) parameterized on dist, variant (base/v31/genai), and artifact-name — with 39 thin workflow_dispatch caller files (or a single dispatcher with a choice input) — would keep the on-demand UX and cut maintenance cost substantially.

Non-blocking; feel free to defer.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-opensuse16-v31.yml around lines 1 - 60,
Many CI workflow files are duplicated with only DIST, MATRIX suffix, artifact
name, and PROXYSQL31/PROXYSQLGENAI toggles differing; replace the 39
near-identical CI-package-arm64-*.yml copies with a single reusable workflow
that accepts inputs for dist, variant, and artifact-name. Create a workflow with
on: workflow_call and inputs {dist, variant, artifact_name}, implement the same
jobs.build steps (checkout, Build package, Upload package artifact,
checks-action) but derive env.DIST and env.MATRIX from the inputs and set
PROXYSQL31 or PROXYSQLGENAI based on the variant input; then convert each
existing file into a tiny workflow_dispatch caller that passes the proper
dist/variant/artifact_name to the reusable workflow. Ensure the reusable
workflow preserves the checks-action configuration, artifact retention, and the
GITHUB_ENV exports for BIN_PKG/BIN_HASH.
.github/workflows/CI-package-arm64-fedora42-v31.yml (2)

20-29: if: always() on the first step is redundant.

Nothing has run yet, so always() is equivalent to the default. Harmless, but misleading — drop it to avoid implying this step is a cleanup/finalizer.

♻️ Proposed tweak
     - uses: LouisBrunner/checks-action@v2.0.0
       id: checks
-      if: always()
       with:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-fedora42-v31.yml around lines 20 - 29,
The workflow's first step (uses: LouisBrunner/checks-action@v2.0.0, id: checks)
unnecessarily includes the conditional "if: always()"; remove the "if: always()"
line from that step so it relies on the default execution semantics and no
longer implies it's a cleanup/finalizer.

1-60: Consider a single reusable workflow instead of 39 near-identical files.

All 39 workflows differ only by DIST, artifact name, and the PROXYSQL31 / PROXYSQLGENAI flag. Extracting a reusable workflow (workflow_call with inputs for dist and a variant flag) plus 39 thin dispatcher workflows (or a single dispatcher with a choice input) would make fixes like the two above a one-line change instead of 39, and eliminate drift risk between tiers/distros.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-fedora42-v31.yml around lines 1 - 60,
This workflow duplicates logic found in 38 others; refactor by extracting a
reusable workflow (workflow_call) that accepts inputs like dist and variant
(e.g., inputs: dist, proxy_variant) and move the core job "build" into that
reusable file using those inputs to set env DIST, ARCH, MATRIX and to
conditionally set PROXYSQL31/PROXYSQLGENAI; then replace each of the 39
near-identical files (like this file whose name and run-name are
CI-package-arm64-fedora42-v31 and which sets PROXYSQL31, DIST and artifact name
proxysql-arm64-fedora42-v31) with a thin dispatcher workflow that calls the
reusable workflow with the appropriate inputs (or implement a single dispatcher
with a choice input) so changes to steps like Checkout, Build package, Upload
package, and checks are made once in the reusable workflow.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/CI-package-arm64-almalinux8-genai.yml:
- Around line 38-42: Replace the echo-with-command-substitution that writes
BIN_PKG and BIN_HASH into $GITHUB_ENV with a safe two-step approach: enable
nullglob (shopt -s nullglob) or check for matching files first, collect the ls
output into a variable, and then append the multi-line value to $GITHUB_ENV
using the heredoc format required by GitHub Actions (i.e., write KEY<<'EOF'
followed by the collected lines and EOF). Update the Build package step that
runs PROXYSQLGENAI=1 make ${{ env.DIST }} to capture the results for BIN_PKG and
BIN_HASH and then write them with the heredoc syntax to avoid $GITHUB_ENV
corruption and avoid embedding ls errors when globs don't match.

In @.github/workflows/CI-package-arm64-debian13-genai.yml:
- Around line 38-42: Remove the two unused GITHUB_ENV assignments that set
BIN_PKG and BIN_HASH in the "Build package" step: delete the lines echoing
"BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV and "BIN_HASH=$(ls -1
binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV so the CI job no longer
writes unused environment variables (the rest of the step, including
PROXYSQLGENAI=1 make ${{ env.DIST }}, should remain unchanged).

In @.github/workflows/CI-package-arm64-fedora42-v31.yml:
- Around line 38-42: The BIN_PKG and BIN_HASH values written to GITHUB_ENV may
contain newlines (from multiple matches) which breaks GitHub Actions parsing;
update the Build package step to write these variables using the multiline
heredoc form to $GITHUB_ENV (or otherwise collapse to a single-file value) so
that BIN_PKG and BIN_HASH are stored safely; specifically change the commands
that produce BIN_PKG/BIN_HASH (the lines using echo "BIN_PKG=$(ls -1
binaries/*[mb])" >> $GITHUB_ENV and echo "BIN_HASH=$(ls -1 binaries/*.id-hash
2>/dev/null || true)" >> $GITHUB_ENV) to use the secure heredoc approach when
writing to GITHUB_ENV.
- Around line 11-17: The workflow uses LouisBrunner/checks-action@v2.0.0 which
requires the GITHUB_TOKEN to have checks: write, so add an explicit permissions
block at the top of the job or workflow (e.g., permissions: checks: write) to
grant the required permission and avoid 403 errors when runs invoke
checks-action; update the job named build (and replicate to any other workflows
in this PR using checks-action) to include that permissions entry so the
check-run creation/update can succeed.

In @.github/workflows/CI-package-arm64-fedora43-v31.yml:
- Around line 4-13: Add an explicit top-level permissions block to limit
GITHUB_TOKEN to the minimal rights needed: grant checks: write (so
LouisBrunner/checks-action@v2.0.0 can create/update check runs) and contents:
read (so actions/checkout@v4 can access repo files under read-only defaults);
place this permissions block alongside the existing on: workflow_dispatch and
concurrency keys (affects the jobs.build run) and apply the same change across
the other 42 ARM64 package workflows to avoid relying on repo/org default token
permissions.
- Around line 38-42: The existing writes to $GITHUB_ENV for BIN_PKG and BIN_HASH
are embedding raw newline-separated ls output which can corrupt the env file
when multiple artifacts exist; update the commands that set BIN_PKG and BIN_HASH
(the lines that currently run echo "BIN_PKG=$(ls -1 binaries/*[mb])" >>
$GITHUB_ENV and echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)"
>> $GITHUB_ENV) to emit a single-line value or use GitHub Actions multiline env
file syntax: collapse the ls output into one joined string (e.g., join with
spaces or another safe delimiter) or write a proper multiline block to
$GITHUB_ENV so multiple artifacts do not break the env file format.

In @.github/workflows/CI-package-arm64-opensuse16-v31.yml:
- Around line 38-42: Remove the dead assignments of BIN_PKG and BIN_HASH in the
"Build package" step: delete the two echo lines that write BIN_PKG and BIN_HASH
into $GITHUB_ENV (they are unused and can produce multiline output that corrupts
the env file); if these values are actually needed later, replace the simple
echo form with the GitHub Actions heredoc form (VAR<<EOF ... EOF) and ensure any
consumers reference BIN_PKG/BIN_HASH; apply the same deletion or heredoc fix
across all workflows that contain the same pattern.

In @.github/workflows/CI-package-arm64-ubuntu22-genai.yml:
- Around line 41-42: The BIN_PKG export is fragile because the subshell
expansion `$(ls -1 binaries/*[mb])` can produce an empty value and let the job
continue; replace this pattern by explicitly checking for artifacts and failing
the step if none are found: detect files matching explicit globs like
`binaries/*.deb` and `binaries/*.rpm` (instead of `*[mb]`), set BIN_PKG to the
discovered path only when a file exists, and call `exit 1` (or use `set -e`) if
no matching artifact is found; do the same defensive existence check for
BIN_HASH (the `binaries/*.id-hash` export) so you don't export an empty value
and the job won't proceed silently with missing artifacts.

In @.github/workflows/CI-package-arm64-ubuntu24-genai.yml:
- Around line 4-9: The workflow uses LouisBrunner/checks-action@v2.0.0 which
requires write access to the Checks API, so add an explicit top-level
permissions block that grants the least privilege needed: set GITHUB_TOKEN
permissions with checks: write (and nothing more) in the workflow YAML (add a
top-level permissions: block near the existing on/concurrency keys) so the
checks-action can create/update check runs without relying on repo/org defaults.

---

Nitpick comments:
In @.github/workflows/CI-package-arm64-centos10-genai.yml:
- Around line 41-42: Remove the unused environment variables BIN_PKG and
BIN_HASH from the workflow by deleting the lines that echo "BIN_PKG=..." and
"BIN_HASH=..." into $GITHUB_ENV; ensure no other steps reference BIN_PKG or
BIN_HASH (search for those symbols) before removing and leave the rest of the
workflow unchanged.

In @.github/workflows/CI-package-arm64-centos10.yml:
- Around line 41-42: The workflow writes multi-line ls output directly into
$GITHUB_ENV via the BIN_PKG and BIN_HASH lines which can corrupt the env file if
multiple matches exist; update the steps that set BIN_PKG and BIN_HASH to either
(a) restrict to a single file (e.g., pick the first match from binaries/*[mb]
and the first binaries/*.id-hash) or (b) use a heredoc/multiline-safe export to
write each key/value safely into $GITHUB_ENV, and also remove these lines if
BIN_PKG/BIN_HASH are unused downstream (or add the missing release step that
consumes them); look for the exact symbols BIN_PKG, BIN_HASH, binaries/*[mb],
*.id-hash and $GITHUB_ENV to locate and change the code.

In @.github/workflows/CI-package-arm64-debian13-genai.yml:
- Around line 20-29: The workflow currently uses the mutable tag "uses:
LouisBrunner/checks-action@v2.0.0" which weakens supply-chain guarantees; update
both occurrences of that action (the "uses: LouisBrunner/checks-action@v2.0.0"
entries around the checks steps) to use the fully resolved commit SHA instead of
the tag (e.g., LouisBrunner/checks-action@<commit-sha>), replacing both
instances so the CI references an immutable commit.
- Around line 4-10: Add an explicit top-level permissions block to the workflow
to enforce least-privilege access: grant checks: write (needed by
LouisBrunner/checks-action@v2.0.0) and contents: read (needed by
actions/checkout@v4) and avoid broad default scopes; insert this permissions
block at the top-level of the .github workflow (near the existing on: and
concurrency: entries) so the GITHUB_TOKEN is constrained to only those scopes.

In @.github/workflows/CI-package-arm64-fedora42-v31.yml:
- Around line 20-29: The workflow's first step (uses:
LouisBrunner/checks-action@v2.0.0, id: checks) unnecessarily includes the
conditional "if: always()"; remove the "if: always()" line from that step so it
relies on the default execution semantics and no longer implies it's a
cleanup/finalizer.
- Around line 1-60: This workflow duplicates logic found in 38 others; refactor
by extracting a reusable workflow (workflow_call) that accepts inputs like dist
and variant (e.g., inputs: dist, proxy_variant) and move the core job "build"
into that reusable file using those inputs to set env DIST, ARCH, MATRIX and to
conditionally set PROXYSQL31/PROXYSQLGENAI; then replace each of the 39
near-identical files (like this file whose name and run-name are
CI-package-arm64-fedora42-v31 and which sets PROXYSQL31, DIST and artifact name
proxysql-arm64-fedora42-v31) with a thin dispatcher workflow that calls the
reusable workflow with the appropriate inputs (or implement a single dispatcher
with a choice input) so changes to steps like Checkout, Build package, Upload
package, and checks are made once in the reusable workflow.

In @.github/workflows/CI-package-arm64-opensuse16-v31.yml:
- Around line 1-60: Many CI workflow files are duplicated with only DIST, MATRIX
suffix, artifact name, and PROXYSQL31/PROXYSQLGENAI toggles differing; replace
the 39 near-identical CI-package-arm64-*.yml copies with a single reusable
workflow that accepts inputs for dist, variant, and artifact-name. Create a
workflow with on: workflow_call and inputs {dist, variant, artifact_name},
implement the same jobs.build steps (checkout, Build package, Upload package
artifact, checks-action) but derive env.DIST and env.MATRIX from the inputs and
set PROXYSQL31 or PROXYSQLGENAI based on the variant input; then convert each
existing file into a tiny workflow_dispatch caller that passes the proper
dist/variant/artifact_name to the reusable workflow. Ensure the reusable
workflow preserves the checks-action configuration, artifact retention, and the
GITHUB_ENV exports for BIN_PKG/BIN_HASH.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3ae87fd7-d8cc-403d-9c81-89a5a56999af

📥 Commits

Reviewing files that changed from the base of the PR and between 5dc586f and cec72a8.

📒 Files selected for processing (39)
  • .github/workflows/CI-package-arm64-almalinux10-genai.yml
  • .github/workflows/CI-package-arm64-almalinux10-v31.yml
  • .github/workflows/CI-package-arm64-almalinux10.yml
  • .github/workflows/CI-package-arm64-almalinux8-genai.yml
  • .github/workflows/CI-package-arm64-almalinux8-v31.yml
  • .github/workflows/CI-package-arm64-almalinux8.yml
  • .github/workflows/CI-package-arm64-almalinux9-genai.yml
  • .github/workflows/CI-package-arm64-almalinux9-v31.yml
  • .github/workflows/CI-package-arm64-almalinux9.yml
  • .github/workflows/CI-package-arm64-centos10-genai.yml
  • .github/workflows/CI-package-arm64-centos10-v31.yml
  • .github/workflows/CI-package-arm64-centos10.yml
  • .github/workflows/CI-package-arm64-centos9-genai.yml
  • .github/workflows/CI-package-arm64-centos9-v31.yml
  • .github/workflows/CI-package-arm64-centos9.yml
  • .github/workflows/CI-package-arm64-debian12-genai.yml
  • .github/workflows/CI-package-arm64-debian12-v31.yml
  • .github/workflows/CI-package-arm64-debian12.yml
  • .github/workflows/CI-package-arm64-debian13-genai.yml
  • .github/workflows/CI-package-arm64-debian13-v31.yml
  • .github/workflows/CI-package-arm64-debian13.yml
  • .github/workflows/CI-package-arm64-fedora42-genai.yml
  • .github/workflows/CI-package-arm64-fedora42-v31.yml
  • .github/workflows/CI-package-arm64-fedora42.yml
  • .github/workflows/CI-package-arm64-fedora43-genai.yml
  • .github/workflows/CI-package-arm64-fedora43-v31.yml
  • .github/workflows/CI-package-arm64-fedora43.yml
  • .github/workflows/CI-package-arm64-opensuse15-genai.yml
  • .github/workflows/CI-package-arm64-opensuse15-v31.yml
  • .github/workflows/CI-package-arm64-opensuse15.yml
  • .github/workflows/CI-package-arm64-opensuse16-genai.yml
  • .github/workflows/CI-package-arm64-opensuse16-v31.yml
  • .github/workflows/CI-package-arm64-opensuse16.yml
  • .github/workflows/CI-package-arm64-ubuntu22-genai.yml
  • .github/workflows/CI-package-arm64-ubuntu22-v31.yml
  • .github/workflows/CI-package-arm64-ubuntu22.yml
  • .github/workflows/CI-package-arm64-ubuntu24-genai.yml
  • .github/workflows/CI-package-arm64-ubuntu24-v31.yml
  • .github/workflows/CI-package-arm64-ubuntu24.yml
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: claude-review
🔇 Additional comments (21)
.github/workflows/CI-package-arm64-centos10-genai.yml (1)

36-36: fetch-depth: 0 is necessary—do not remove it.

The Makefile requires full git history for the build process. Line 12 uses git describe --long --abbrev=7 to generate version strings, and line 112 uses git show -s --format=%ct HEAD to set the source date epoch. Both commands require access to git tags and commit history. Using a shallow clone would cause these commands to fail.

.github/workflows/CI-package-arm64-ubuntu22-genai.yml (1)

16-40: No changes needed — this workflow is correct as-is.

The build system uses PROXYSQLGENAI=1 as a feature flag environment variable, not as a make target suffix. The targets defined in the Makefile are ubuntu22, ubuntu24, etc., without -genai variants. The correct invocation is PROXYSQLGENAI=1 make ubuntu22, which:

  1. Enables the GenAI module via the feature flag
  2. Produces a v4.0.x version (instead of v3.0.x) due to automatic version incrementation when PROXYSQLGENAI=1 is set
  3. Generates the correct package labeled with -genai in the artifact name

The proposed fix to change DIST: ubuntu22 to DIST: ubuntu22-genai would fail — no such make target exists. All 13 other *-genai workflows in this PR follow the same correct pattern for consistency.

			> Likely an incorrect or invalid review comment.
.github/workflows/CI-package-arm64-almalinux9-genai.yml (1)

38-42: Same $GITHUB_ENV multi-line hazard as in CI-package-arm64-almalinux8-genai.yml.

If make almalinux9 with PROXYSQLGENAI=1 emits more than one matching package (e.g., main + debuginfo RPM), the echo "BIN_PKG=$(ls -1 …)" line will write a multi-line value to $GITHUB_ENV, corrupting the env-file format. Apply the heredoc-delimited fix suggested on the almalinux8-genai workflow across this and all sibling CI-package-arm64-*.yml files.

.github/workflows/CI-package-arm64-fedora43.yml (1)

38-42: Same $GITHUB_ENV multi-line hazard — apply the shared fix.

Fedora RPM builds commonly produce a main package plus -debuginfo / -debugsource RPMs, so ls -1 binaries/*[mb] is especially likely to return multiple lines here. Use the heredoc-delimited $GITHUB_ENV syntax shown on the almalinux8-genai workflow.

.github/workflows/CI-package-arm64-ubuntu22-v31.yml (2)

38-42: Same $GITHUB_ENV multi-line hazard — apply the shared fix.

Debian/Ubuntu builds may produce .deb plus .ddeb (debug) or multiple package variants, which would make BIN_PKG a multi-line value and corrupt $GITHUB_ENV. Adopt the heredoc-delimited fix proposed on CI-package-arm64-almalinux8-genai.yml.


14-17: ⚠️ Potential issue | 🟡 Minor

Add explicit PROXYSQL31=$(PROXYSQL31) forwarding to sub-makes in the Makefile.

The top-level Makefile exports PROXYSQL31 but does not explicitly pass it to deps, lib, and src sub-makes—only PROXYSQLGENAI, PROXYSQLFFTO, and PROXYSQLTSDB are forwarded (lines 377–397). While PROXYSQL31 currently propagates via inherited environment, this asymmetry creates fragility: a future change using env -i or an explicit variable list in sub-make invocations would silently break v3.1 builds without alerting packagers.

Align PROXYSQL31 with the other feature flags by adding PROXYSQL31=$(PROXYSQL31) to the sub-make recipes.

⛔ Skipped due to learnings
Learnt from: CR
Repo: sysown/proxysql PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T16:31:58.196Z
Learning: Use feature flags `PROXYSQL31=1` for v3.1.x Innovative tier and `PROXYSQLGENAI=1` for v4.0.x AI/MCP tier; PROXYSQLGENAI implies both PROXYSQL31 and PROXYSQLFFTO/PROXYSQLTSDB
Learnt from: CR
Repo: sysown/proxysql PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T16:31:58.196Z
Learning: Applies to **/*.{cpp,h,hpp} : C++17 is required; use conditional compilation via `#ifdef PROXYSQLGENAI`, `#ifdef PROXYSQL31`, etc. for feature-gated code
.github/workflows/CI-package-arm64-opensuse15-genai.yml (1)

38-42: Same $GITHUB_ENV multi-line hazard — apply the shared fix.

openSUSE RPM builds can also emit multiple .rpm files (main + debuginfo/debugsource), so the single-line echo pattern here can corrupt $GITHUB_ENV. Use the heredoc-delimited form proposed on CI-package-arm64-almalinux8-genai.yml.

.github/workflows/CI-package-arm64-debian13-v31.yml (1)

38-42: Same $GITHUB_ENV multi-line hazard — apply the shared fix.

Same issue as in the other workflows: ls -1 binaries/*[mb] may yield multiple lines, corrupting $GITHUB_ENV. Also verify PROXYSQL31=1 propagates to sub-makes (see note on CI-package-arm64-ubuntu22-v31.yml); the top-level Makefile does not explicitly forward it.

.github/workflows/CI-package-arm64-opensuse15-v31.yml (1)

38-42: Same $GITHUB_ENV multi-line hazard — apply the shared fix.

Same concerns as CI-package-arm64-ubuntu22-v31.yml: heredoc-delimit the BIN_PKG/BIN_HASH writes, and verify explicit PROXYSQL31 forwarding in the top-level Makefile.

.github/workflows/CI-package-arm64-ubuntu22.yml (1)

38-42: Same $GITHUB_ENV multi-line hazard — apply the shared fix.

Same issue as the other 7 workflows in this PR: heredoc-delimit the BIN_PKG/BIN_HASH assignments so multi-output builds don't corrupt $GITHUB_ENV.

.github/workflows/CI-package-arm64-opensuse15.yml (1)

38-42: Same dead-code / multi-line-$GITHUB_ENV concern as raised on CI-package-arm64-opensuse16-v31.yml. Applying the same fix here.

.github/workflows/CI-package-arm64-opensuse16.yml (1)

38-42: Same dead-code / multi-line-$GITHUB_ENV concern as raised on CI-package-arm64-opensuse16-v31.yml. Applying the same fix here.

.github/workflows/CI-package-arm64-almalinux9-v31.yml (1)

38-42: Same dead-code / multi-line-$GITHUB_ENV concern as raised on CI-package-arm64-opensuse16-v31.yml. Applying the same fix here.

.github/workflows/CI-package-arm64-almalinux9.yml (1)

38-42: Same dead-code / multi-line-$GITHUB_ENV concern as raised on CI-package-arm64-opensuse16-v31.yml. Applying the same fix here.

.github/workflows/CI-package-arm64-almalinux10-genai.yml (1)

38-42: Same dead-code / multi-line-$GITHUB_ENV concern as raised on CI-package-arm64-opensuse16-v31.yml. Applying the same fix here.

.github/workflows/CI-package-arm64-almalinux8.yml (1)

38-42: Same dead-code / multi-line-$GITHUB_ENV concern as raised on CI-package-arm64-opensuse16-v31.yml. Applying the same fix here.

.github/workflows/CI-package-arm64-fedora42-genai.yml (1)

38-42: Same dead-code / multi-line-$GITHUB_ENV concern as raised on CI-package-arm64-opensuse16-v31.yml. Applying the same fix here.

.github/workflows/CI-package-arm64-debian12-v31.yml (2)

38-42: Multi-file glob risk is especially acute for Debian.

Debian builds commonly emit multiple artifacts matching binaries/*[mb] (e.g. proxysql_*.deb plus a -dbgsym / metapackage), so BIN_PKG will very likely end up multi-line here and break $GITHUB_ENV. Apply the heredoc fix from the fedora42-v31 comment. Same applies to every workflow in this PR.


11-17: Same missing permissions: block as the other workflows — please fix uniformly.

.github/workflows/CI-package-arm64-centos9-genai.yml (2)

38-42: Same GITHUB_ENV multi-line risk, plus verify PROXYSQLGENAI=1 make centos9 target.

The BIN_PKG / BIN_HASH heredoc fix from fedora42-v31 applies here too. Additionally, please confirm the Makefile handles PROXYSQLGENAI=1 for all 13 distro targets used by the genai tier — if any target silently ignores the flag, the resulting artifact name will collide with the stable tier's output while containing different bits.

#!/bin/bash
# Check that PROXYSQLGENAI is actually referenced by the build system
rg -n 'PROXYSQLGENAI|PROXYSQL31' Makefile deb/ rpm/ 2>/dev/null | head -80
fd -t f Makefile | head -20

11-17: Same missing permissions: block.

Comment thread .github/workflows/CI-package-arm64-almalinux8-genai.yml Outdated
Comment thread .github/workflows/CI-package-arm64-debian13-genai.yml Outdated
Comment thread .github/workflows/CI-package-arm64-fedora42-v31.yml
Comment on lines +38 to +42
- name: Build package
run: |
PROXYSQL31=1 make ${{ env.DIST }}
echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV
echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

BIN_PKG/BIN_HASH may contain multiple lines, breaking GITHUB_ENV.

ls -1 binaries/*[mb] can legitimately match multiple files (e.g., several .deb/.rpm artifacts or dbg packages). A multi-line value written as KEY=value\n to $GITHUB_ENV is invalid and will either fail the step or cause subsequent env entries to be parsed as standalone lines. Same concern for BIN_HASH if more than one *.id-hash exists. Use the heredoc form for multi-line values, or reduce to a single line.

🛡️ Proposed fix
     - name: Build package
       run: |
         PROXYSQL31=1 make ${{ env.DIST }}
-        echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV
-        echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV
+        {
+          echo "BIN_PKG<<__EOF__"
+          ls -1 binaries/*[mb] || true
+          echo "__EOF__"
+          echo "BIN_HASH<<__EOF__"
+          ls -1 binaries/*.id-hash 2>/dev/null || true
+          echo "__EOF__"
+        } >> "$GITHUB_ENV"

Note: this same pattern is present in all 39 workflows added by this PR and should be fixed uniformly (ideally via a reusable workflow — see the other comment).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-fedora42-v31.yml around lines 38 - 42,
The BIN_PKG and BIN_HASH values written to GITHUB_ENV may contain newlines (from
multiple matches) which breaks GitHub Actions parsing; update the Build package
step to write these variables using the multiline heredoc form to $GITHUB_ENV
(or otherwise collapse to a single-file value) so that BIN_PKG and BIN_HASH are
stored safely; specifically change the commands that produce BIN_PKG/BIN_HASH
(the lines using echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV and echo
"BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV) to
use the secure heredoc approach when writing to GITHUB_ENV.

Comment thread .github/workflows/CI-package-arm64-fedora43-v31.yml
Comment on lines +38 to +42
- name: Build package
run: |
PROXYSQL31=1 make ${{ env.DIST }}
echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV
echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Locate workflows that still append newline-prone ls output directly to GITHUB_ENV.
rg -n -C2 'echo "BIN_(PKG|HASH)=\$\(ls -1 binaries/' .github/workflows

Repository: sysown/proxysql

Length of output: 22335


🏁 Script executed:

# Check for other variations of GITHUB_ENV assignments that might be similarly vulnerable
rg -n 'echo.*=.*\$\(' .github/workflows | grep -E 'GITHUB_ENV|GITHUB_OUTPUT' | head -20

Repository: sysown/proxysql

Length of output: 2636


🏁 Script executed:

# Check for GITHUB_OUTPUT usage and multiline patterns that might handle this differently
rg -n 'GITHUB_OUTPUT' .github/workflows | head -10

Repository: sysown/proxysql

Length of output: 41


🏁 Script executed:

# Also verify if there are any x86_64 workflows with similar patterns
fd '\.yml$' .github/workflows | grep -v 'arm64' | head -10 | xargs grep -l 'BIN_PKG\|BIN_HASH' 2>/dev/null || echo "No matches in non-arm64 workflows"

Repository: sysown/proxysql

Length of output: 92


Fix $GITHUB_ENV writes to handle multiple artifacts safely.

Lines 41–42 write raw ls -1 output into $GITHUB_ENV. If the build emits multiple .deb/.rpm or hash files, the embedded newlines corrupt the environment file format before artifact upload runs. Collapse the list into a single line or use multiline syntax; this pattern affects all 38 arm64 CI package workflows.

🛠️ Proposed robust package/hash export
     - name: Build package
       run: |
         PROXYSQL31=1 make ${{ env.DIST }}
-        echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV
-        echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV
+        bin_pkg="$(find binaries -maxdepth 1 -type f \( -name '*.deb' -o -name '*.rpm' \) -print | paste -sd ' ' -)"
+        test -n "$bin_pkg"
+        bin_hash="$(find binaries -maxdepth 1 -type f -name '*.id-hash' -print | paste -sd ' ' -)"
+        {
+          echo "BIN_PKG=$bin_pkg"
+          echo "BIN_HASH=$bin_hash"
+        } >> "$GITHUB_ENV"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-fedora43-v31.yml around lines 38 - 42,
The existing writes to $GITHUB_ENV for BIN_PKG and BIN_HASH are embedding raw
newline-separated ls output which can corrupt the env file when multiple
artifacts exist; update the commands that set BIN_PKG and BIN_HASH (the lines
that currently run echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV and
echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV)
to emit a single-line value or use GitHub Actions multiline env file syntax:
collapse the ls output into one joined string (e.g., join with spaces or another
safe delimiter) or write a proper multiline block to $GITHUB_ENV so multiple
artifacts do not break the env file format.

Comment thread .github/workflows/CI-package-arm64-opensuse16-v31.yml Outdated
Comment on lines +41 to +42
echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV
echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fragile artifact discovery — a failed build will still "succeed" with an empty BIN_PKG.

ls -1 binaries/*[mb] runs with the default shell (no set -e -o pipefail for the subshell), and its stderr is inherited. If the make step produces no matching file (e.g. build produced only a .rpm, or failed partway but exited 0, or the glob simply doesn't match), ls writes an error to stderr and $(...) expands to empty — BIN_PKG= is still exported and the job proceeds to upload. The [mb] character class (matching files ending in m or b, intended for .deb/.rpm) is also quite loose and will match any stray file ending in those letters.

Consider validating explicitly, e.g.:

-        PROXYSQLGENAI=1 make ${{ env.DIST }}
-        echo "BIN_PKG=$(ls -1 binaries/*[mb])" >> $GITHUB_ENV
-        echo "BIN_HASH=$(ls -1 binaries/*.id-hash 2>/dev/null || true)" >> $GITHUB_ENV
+        set -euo pipefail
+        PROXYSQLGENAI=1 make ${{ env.DIST }}
+        shopt -s nullglob
+        pkgs=(binaries/*.deb binaries/*.rpm)
+        if (( ${`#pkgs`[@]} == 0 )); then
+          echo "No package artifacts produced under binaries/" >&2
+          exit 1
+        fi
+        echo "BIN_PKG=${pkgs[0]}" >> "$GITHUB_ENV"
+        hashes=(binaries/*.id-hash)
+        (( ${`#hashes`[@]} )) && echo "BIN_HASH=${hashes[0]}" >> "$GITHUB_ENV" || true

Since this same pattern is duplicated across all 39 workflows in this PR, fixing it here means fixing it everywhere — worth getting right once.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-ubuntu22-genai.yml around lines 41 - 42,
The BIN_PKG export is fragile because the subshell expansion `$(ls -1
binaries/*[mb])` can produce an empty value and let the job continue; replace
this pattern by explicitly checking for artifacts and failing the step if none
are found: detect files matching explicit globs like `binaries/*.deb` and
`binaries/*.rpm` (instead of `*[mb]`), set BIN_PKG to the discovered path only
when a file exists, and call `exit 1` (or use `set -e`) if no matching artifact
is found; do the same defensive existence check for BIN_HASH (the
`binaries/*.id-hash` export) so you don't export an empty value and the job
won't proceed silently with missing artifacts.

Comment thread .github/workflows/CI-package-arm64-ubuntu24-genai.yml
Add explicit permissions (contents: read, checks: write) to ensure
checks-action works under read-only default token permissions.

Remove dead BIN_PKG and BIN_HASH environment variable assignments
that could corrupt $GITHUB_ENV with multi-line ls output.
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
Image 78 Security Hotspots

See analysis details on SonarQube Cloud

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
.github/workflows/CI-package-arm64-debian12-genai.yml (2)

24-26: Nit: if: always() is redundant on the first step.

Nothing precedes this step, so if: always() has no effect here. It's meaningful only on the final checks-update step (line 55) where preceding steps may have failed. Harmless; fix only if you're doing a sweep.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-debian12-genai.yml around lines 24 - 26,
The workflow step defining the checks action (uses:
LouisBrunner/checks-action@v2.0.0, id: checks) includes an unnecessary "if:
always()" because it's the first step and nothing precedes it; remove the "if:
always()" from that step so the condition is not redundantly applied (keep "if:
always()" only on the final checks-update step where it matters).

1-62: Consider consolidating the 39 near-identical workflows via a reusable workflow.

All 39 workflows in this PR differ only in DIST, MATRIX label, artifact name, and the build flag (PROXYSQL31=1 / PROXYSQLGENAI=1 / none). A single reusable workflow (workflow_call) invoked by 39 thin dispatch wrappers (or a single dispatcher with a choice input) would eliminate ~2k lines of duplication and make future edits (e.g., runner image bump, checks-action version pin) a one-line change instead of 39.

The PR description acknowledges self-containment as a design choice, so feel free to defer — flagging as optional maintainability improvement.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/CI-package-arm64-debian12-genai.yml around lines 1 - 62,
Consolidate the near-duplicate workflow by extracting the core job (the "build"
job that runs on ubuntu-24.04-arm, sets env vars ARCH/DIST/MATRIX, executes
PROXYSQLGENAI=1 make ${{ env.DIST }}, uploads binaries/, and reports status via
LouisBrunner/checks-action) into a reusable workflow using workflow_call; then
replace each of the 39 copies with tiny dispatcher workflows that call the
reusable workflow and pass the varying inputs (DIST, MATRIX label, artifact
name, and optional build flag like PROXYSQL31 or PROXYSQLGENAI) so changes to
runner, checks-action version, or steps live in one place (refer to the existing
job "build", env keys DIST and MATRIX, and the PROXYSQLGENAI build flag to
locate code to extract).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In @.github/workflows/CI-package-arm64-debian12-genai.yml:
- Around line 24-26: The workflow step defining the checks action (uses:
LouisBrunner/checks-action@v2.0.0, id: checks) includes an unnecessary "if:
always()" because it's the first step and nothing precedes it; remove the "if:
always()" from that step so the condition is not redundantly applied (keep "if:
always()" only on the final checks-update step where it matters).
- Around line 1-62: Consolidate the near-duplicate workflow by extracting the
core job (the "build" job that runs on ubuntu-24.04-arm, sets env vars
ARCH/DIST/MATRIX, executes PROXYSQLGENAI=1 make ${{ env.DIST }}, uploads
binaries/, and reports status via LouisBrunner/checks-action) into a reusable
workflow using workflow_call; then replace each of the 39 copies with tiny
dispatcher workflows that call the reusable workflow and pass the varying inputs
(DIST, MATRIX label, artifact name, and optional build flag like PROXYSQL31 or
PROXYSQLGENAI) so changes to runner, checks-action version, or steps live in one
place (refer to the existing job "build", env keys DIST and MATRIX, and the
PROXYSQLGENAI build flag to locate code to extract).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: bcac638b-4c2d-4136-ac39-af9fca95cde3

📥 Commits

Reviewing files that changed from the base of the PR and between cec72a8 and 53e9716.

📒 Files selected for processing (39)
  • .github/workflows/CI-package-arm64-almalinux10-genai.yml
  • .github/workflows/CI-package-arm64-almalinux10-v31.yml
  • .github/workflows/CI-package-arm64-almalinux10.yml
  • .github/workflows/CI-package-arm64-almalinux8-genai.yml
  • .github/workflows/CI-package-arm64-almalinux8-v31.yml
  • .github/workflows/CI-package-arm64-almalinux8.yml
  • .github/workflows/CI-package-arm64-almalinux9-genai.yml
  • .github/workflows/CI-package-arm64-almalinux9-v31.yml
  • .github/workflows/CI-package-arm64-almalinux9.yml
  • .github/workflows/CI-package-arm64-centos10-genai.yml
  • .github/workflows/CI-package-arm64-centos10-v31.yml
  • .github/workflows/CI-package-arm64-centos10.yml
  • .github/workflows/CI-package-arm64-centos9-genai.yml
  • .github/workflows/CI-package-arm64-centos9-v31.yml
  • .github/workflows/CI-package-arm64-centos9.yml
  • .github/workflows/CI-package-arm64-debian12-genai.yml
  • .github/workflows/CI-package-arm64-debian12-v31.yml
  • .github/workflows/CI-package-arm64-debian12.yml
  • .github/workflows/CI-package-arm64-debian13-genai.yml
  • .github/workflows/CI-package-arm64-debian13-v31.yml
  • .github/workflows/CI-package-arm64-debian13.yml
  • .github/workflows/CI-package-arm64-fedora42-genai.yml
  • .github/workflows/CI-package-arm64-fedora42-v31.yml
  • .github/workflows/CI-package-arm64-fedora42.yml
  • .github/workflows/CI-package-arm64-fedora43-genai.yml
  • .github/workflows/CI-package-arm64-fedora43-v31.yml
  • .github/workflows/CI-package-arm64-fedora43.yml
  • .github/workflows/CI-package-arm64-opensuse15-genai.yml
  • .github/workflows/CI-package-arm64-opensuse15-v31.yml
  • .github/workflows/CI-package-arm64-opensuse15.yml
  • .github/workflows/CI-package-arm64-opensuse16-genai.yml
  • .github/workflows/CI-package-arm64-opensuse16-v31.yml
  • .github/workflows/CI-package-arm64-opensuse16.yml
  • .github/workflows/CI-package-arm64-ubuntu22-genai.yml
  • .github/workflows/CI-package-arm64-ubuntu22-v31.yml
  • .github/workflows/CI-package-arm64-ubuntu22.yml
  • .github/workflows/CI-package-arm64-ubuntu24-genai.yml
  • .github/workflows/CI-package-arm64-ubuntu24-v31.yml
  • .github/workflows/CI-package-arm64-ubuntu24.yml
✅ Files skipped from review due to trivial changes (20)
  • .github/workflows/CI-package-arm64-centos9-genai.yml
  • .github/workflows/CI-package-arm64-centos10.yml
  • .github/workflows/CI-package-arm64-centos10-genai.yml
  • .github/workflows/CI-package-arm64-almalinux9-genai.yml
  • .github/workflows/CI-package-arm64-almalinux10-genai.yml
  • .github/workflows/CI-package-arm64-ubuntu24-v31.yml
  • .github/workflows/CI-package-arm64-centos9-v31.yml
  • .github/workflows/CI-package-arm64-fedora43-v31.yml
  • .github/workflows/CI-package-arm64-centos9.yml
  • .github/workflows/CI-package-arm64-ubuntu24.yml
  • .github/workflows/CI-package-arm64-opensuse15-genai.yml
  • .github/workflows/CI-package-arm64-debian13-genai.yml
  • .github/workflows/CI-package-arm64-centos10-v31.yml
  • .github/workflows/CI-package-arm64-debian13-v31.yml
  • .github/workflows/CI-package-arm64-opensuse15.yml
  • .github/workflows/CI-package-arm64-fedora42-genai.yml
  • .github/workflows/CI-package-arm64-fedora43-genai.yml
  • .github/workflows/CI-package-arm64-almalinux8.yml
  • .github/workflows/CI-package-arm64-almalinux9-v31.yml
  • .github/workflows/CI-package-arm64-ubuntu22.yml
🚧 Files skipped from review as they are similar to previous changes (13)
  • .github/workflows/CI-package-arm64-fedora42.yml
  • .github/workflows/CI-package-arm64-almalinux9.yml
  • .github/workflows/CI-package-arm64-fedora42-v31.yml
  • .github/workflows/CI-package-arm64-opensuse16.yml
  • .github/workflows/CI-package-arm64-debian13.yml
  • .github/workflows/CI-package-arm64-almalinux10-v31.yml
  • .github/workflows/CI-package-arm64-opensuse15-v31.yml
  • .github/workflows/CI-package-arm64-almalinux8-genai.yml
  • .github/workflows/CI-package-arm64-fedora43.yml
  • .github/workflows/CI-package-arm64-ubuntu22-genai.yml
  • .github/workflows/CI-package-arm64-opensuse16-genai.yml
  • .github/workflows/CI-package-arm64-debian12.yml
  • .github/workflows/CI-package-arm64-ubuntu24-genai.yml
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: claude-review
🔇 Additional comments (9)
.github/workflows/CI-package-arm64-debian12-genai.yml (1)

54-62: LGTM — graceful on initial-checks failure.

If the initial checks-action step itself fails, steps.checks.outputs.check_id will be empty and this update step will no-op/error, but the if: always() plus job.status mapping (success/failure/cancelled) to checks-action conclusion is correct.

.github/workflows/CI-package-arm64-debian12-v31.yml (1)

1-62: LGTM.

Identical pattern to the other *-v31 workflows; PROXYSQL31=1 make debian12 correctly bumps the minor version per Makefile:63-86. See duplication note on CI-package-arm64-debian12-genai.yml regarding consolidation.

.github/workflows/CI-package-arm64-almalinux8-v31.yml (1)

1-62: LGTM.

Matches the established pattern; make almalinux8 target resolves correctly (Makefile:413-439) and artifact naming is consistent.

.github/workflows/CI-package-arm64-ubuntu22-v31.yml (1)

1-62: LGTM.

Consistent with the rest of the *-v31 workflow set.

.github/workflows/CI-package-arm64-opensuse16-v31.yml (1)

42-44: Dead BIN_PKG/BIN_HASH assignments correctly removed.

Prior concern about multiline $GITHUB_ENV corruption from ls -1 binaries/*[mb] is resolved — the build step is now a single make invocation.

.github/workflows/CI-package-arm64-almalinux10.yml (4)

1-13: LGTM — trigger, permissions, and concurrency match the PR intent.

This is manual-only, grants the minimal extra checks: write permission needed for the check run, and scopes cancellation per workflow/ref.


15-21: LGTM — the job targets the intended ARM64 AlmaLinux 10 build.

DIST=almalinux10 aligns with the referenced Makefile target and docker-compose build service.


23-52: LGTM — build and artifact handling follow the established ARM64 workflow pattern.

The workflow checks out the dispatched SHA, builds the expected almalinux10 target, and fails clearly if no package artifacts are produced.


54-62: LGTM — final check status is updated on all job outcomes.

Using if: always() here keeps the custom check result aligned with the job conclusion after build or upload failures.

@renecannao
renecannao merged commit 5cfeb2e into v3.0 Apr 23, 2026
4 of 5 checks passed
@renecannao
renecannao deleted the feat/arm64-on-demand-package-builds branch June 10, 2026 11:17
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.

1 participant