Skip to content

Add multiarch support - #9

Merged
imsudiproy merged 8 commits into
masterfrom
multi-arch
Dec 12, 2025
Merged

Add multiarch support#9
imsudiproy merged 8 commits into
masterfrom
multi-arch

Conversation

@imsudiproy

@imsudiproy imsudiproy commented Dec 12, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

Release Notes

  • Chores
    • Improved CI workflow with an expanded testing matrix covering Ubuntu, macOS, and Windows on x64 and arm64 to improve cross-platform validation.
    • Standardized job naming and added architecture-specific preparation steps for clearer, more reliable builds.

✏️ Tip: You can customize this high-level summary in your review settings.

@imsudiproy imsudiproy self-assigned this Dec 12, 2025
@coderabbitai

coderabbitai Bot commented Dec 12, 2025

Copy link
Copy Markdown

Walkthrough

The GitHub Actions CI workflow was changed to use an include-based matrix that lists explicit platform/architecture combinations (ubuntu-x64, ubuntu-arm64, macos-x64, macos-arm64, windows-x64). Job naming and runs-on now reference matrix properties and a new arch-specific preparation step was added.

Changes

Cohort / File(s) Summary
CI/CD Matrix Expansion
\.github/workflows/ci\.yaml
Replaced a generic OS-based matrix with an explicit include-based matrix enumerating Ubuntu/macOS/Windows x64 and arm64 combinations; updated job name to use matrix.name, updated runs-on to matrix.runs-on; added an arch-specific preparation step that echoes ARCH and RUNS_ON.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Specific attention: verify runs-on values and matrix.name interpolation, confirm matrix.arch values match downstream steps, and check the new preparation step variable usage.

Poem

🐇 I hopped through YAML, lines aglow,
Platforms listed in tidy row.
Ubuntu, macOS, Windows sing,
x64 and arm64 take wing.
CI hums — a carrot-powered flow.

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add multiarch support' directly reflects the main change: introducing explicit multi-architecture build matrix support (ubuntu-x64, ubuntu-arm64, macos-x64, macos-arm64, windows-x64) in the CI workflow.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch multi-arch

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.

@imsudiproy imsudiproy added the enhancement New feature or request label Dec 12, 2025

@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: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e19add8 and 4042dde.

📒 Files selected for processing (1)
  • .github/workflows/ci.yaml (2 hunks)
🧰 Additional context used
🪛 actionlint (1.7.9)
.github/workflows/ci.yaml

30-30: label "ubuntu-latest-arm" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-26-xlarge", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

⏰ 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: Build and Test - windows-latest - x64
🔇 Additional comments (2)
.github/workflows/ci.yaml (2)

65-68: Clarify the purpose of the Prepare for arch-specific build step.

This step echoes ARCH and RUNS_ON but does not export them as environment variables or perform any actual preparation. If this is meant to be informational only (for logging), consider renaming it to reflect that intent (e.g., "Log build configuration"). If it's intended to set up environment variables for downstream steps, export them explicitly using GitHub Actions' syntax.


34-34: Verify macOS runner strategy for architecture consistency.

Both macOS entries (x64 and arm64) use macos-latest, which may not explicitly guarantee the expected architecture. Clarify whether:

  1. macos-latest automatically handles architecture selection, or
  2. Architecture-specific runner labels should be used (e.g., macos-15-xlarge for Intel, which is explicitly x64).

This is important to ensure that the arm64 build actually runs on Apple Silicon hardware.

Also applies to: 39-39

Comment thread .github/workflows/ci.yaml Outdated
Comment thread .github/workflows/ci.yaml Outdated
# - name: windows-arm64
# runs-on: windows-2022-arm # example — likely self-hosted / not available by default
# arch: arm64
name: Build and Test - ${{ matrix.runs-on}} - ${{matrix.arch}}

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

Fix inconsistent spacing in job name expression.

The job name has inconsistent spacing around matrix variables: ${{ matrix.runs-on}} (space before, not after) vs ${{matrix.arch}} (no spaces). Normalize for consistency.

-    name: Build and Test - ${{ matrix.runs-on}} - ${{matrix.arch}}
+    name: Build and Test - ${{ matrix.runs-on }} - ${{ matrix.arch }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
name: Build and Test - ${{ matrix.runs-on}} - ${{matrix.arch}}
name: Build and Test - ${{ matrix.runs-on }} - ${{ matrix.arch }}
🤖 Prompt for AI Agents
.github/workflows/ci.yaml around line 52: the job name expression uses
inconsistent spacing in the matrix variables (`${{ matrix.runs-on}}` vs
`${{matrix.arch}}`); normalize spacing so both variables use the same style
(e.g., `${{ matrix.runs-on }}` and `${{ matrix.arch }}`) to ensure consistent
formatting across the workflow file.

@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: 0

🧹 Nitpick comments (2)
.github/workflows/ci.yaml (2)

52-52: Fix spacing inconsistency in job name expression.

The job name expression uses inconsistent spacing: ${{ matrix.name}} lacks a space before the closing braces. Normalize to match standard formatting.

-    name: Build and Test - ${{ matrix.name}}
+    name: Build and Test - ${{ matrix.name }}

65-68: Clarify intent of arch-specific preparation step.

The step echoes matrix values but does not export them as environment variables. If these values are meant to be used by subsequent steps, they should be written to $GITHUB_ENV. If this step is only for logging/diagnostics, consider inlining the echo into a step that uses them, or clarify the purpose with a comment.

Additionally, the echo statement on line 67 joins both variables in a single echo. Consider separating them for clarity:

-      - name: Prepare for arch-specific build
-        run: |
-          echo "ARCH=${{ matrix.arch }} RUNS_ON=${{ matrix.runs-on }}"
+      - name: Prepare for arch-specific build
+        run: |
+          echo "ARCH=${{ matrix.arch }}"
+          echo "RUNS_ON=${{ matrix.runs-on }}"

Or, if you need these as environment variables for downstream steps:

+      - name: Prepare for arch-specific build
+        run: |
+          echo "ARCH=${{ matrix.arch }}" >> $GITHUB_ENV
+          echo "RUNS_ON=${{ matrix.runs-on }}" >> $GITHUB_ENV
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4042dde and b54ec7c.

📒 Files selected for processing (1)
  • .github/workflows/ci.yaml (2 hunks)
🔇 Additional comments (1)
.github/workflows/ci.yaml (1)

22-51: Good use of include-based matrix for explicit multiarch combinations.

The include-based matrix structure clearly defines platform/architecture combinations with helpful comments. Runner labels (ubuntu-24.04-arm, macos-latest, windows-latest) align with GitHub Actions' available labels, and the intentional omission of Windows ARM (with explanation) is appropriate.

@imsudiproy
imsudiproy merged commit 7f991cd into master Dec 12, 2025
6 checks passed
@imsudiproy
imsudiproy deleted the multi-arch branch December 12, 2025 03:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant