Skip to content

Conversation

@rodrigok
Copy link
Member

@rodrigok rodrigok commented Nov 6, 2025

Depends on #37467

Proposed changes (including videos or screenshots)

Issue(s)

Steps to test or reproduce

Further comments

Summary by CodeRabbit

  • Chores
    • Updated build system default architecture configuration to ARM64
    • Modified CI/CD pipeline runners to target ARM architecture across multiple workflows
    • Refined environment variable handling in deployment configuration with improved default fallback values
    • Updated build tool dependency version

@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Nov 6, 2025

Looks like this PR is ready to merge! 🎉
If you have any trouble, please check the PR guidelines

@changeset-bot
Copy link

changeset-bot bot commented Nov 6, 2025

⚠️ No Changeset found

Latest commit: d892cd2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 6, 2025

Walkthrough

This PR shifts CI infrastructure to ARM64 architecture by changing the build-docker action default from amd64 to arm64, updating all CI workflow runners from ubuntu-24.04 to ubuntu-24.04-arm, removing platform constraints from docker-compose-ci.yml services, and adding defensive environment variable defaults throughout the compose configuration.

Changes

Cohort / File(s) Summary
Build Docker Configuration
.github/actions/build-docker/action.yml, docker-compose-ci.yml
Changed build-docker action's default arch input from amd64 to arm64; removed platform: linux/amd64 declarations from docker-compose services and added defensive parameter expansion defaults for environment variables (DENO_VERSION, DOCKER_TAG_SUFFIX_ROCKETCHAT, ROCKETCHAT_LICENSE, COVERAGE_DIR, COVERAGE_REPORTER, COVERAGE_FILE_NAME, DISABLE_DB_WATCHERS, DEBUG)
CI Workflows
.github/workflows/ci-code-check.yml, ci-deploy-gh-pages.yml, ci-test-storybook.yml, ci-test-unit.yml, ci.yml
Updated runner specifications from ubuntu-24.04 to ubuntu-24.04-arm across all CI jobs; no changes to workflow logic, steps, or conditions
Dependencies
packages/jest-presets/package.json
Downgraded @swc/core from ~1.13.20 to 1.13.19

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Docker-compose configuration changes with multiple environment variable defaults require verification that fallback values are appropriate across all services
  • Verify ARM64 runner availability and compatibility with all jobs
  • Check that the @swc/core downgrade doesn't introduce regressions or security issues

Possibly related PRs

Suggested labels

stat: ready to merge, stat: QA assured

Suggested reviewers

  • sampaiodiego

Poem

🐰 ARM64 hops into the fold,
Where ubuntu-24.04 workflows unfold,
No amd64 chains in sight—just defaults so bold,
The docker-compose sings of freedom untold,
Architecture shifts make CI stories retold! 🔧

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 clearly summarizes the main change: switching CI build and test workflows to use ARM architecture by default across multiple workflow files and configurations.
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 chore/ci-arm-improvements

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.

@rodrigok rodrigok force-pushed the chore/ci-arm-improvements branch 9 times, most recently from 6ad4850 to a95fb3b Compare November 7, 2025 22:10
@codecov
Copy link

codecov bot commented Nov 7, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.97%. Comparing base (bd9307b) to head (d892cd2).
⚠️ Report is 1 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #37404      +/-   ##
===========================================
- Coverage    68.98%   68.97%   -0.01%     
===========================================
  Files         3357     3357              
  Lines       114243   114243              
  Branches     20531    20531              
===========================================
- Hits         78813    78803      -10     
- Misses       33345    33351       +6     
- Partials      2085     2089       +4     
Flag Coverage Δ
e2e 57.46% <ø> (-0.02%) ⬇️
e2e-api 42.79% <ø> (-0.06%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@rodrigok rodrigok force-pushed the chore/ci-arm-improvements branch 17 times, most recently from fba8dec to 4cf2b04 Compare November 9, 2025 03:19
@rodrigok rodrigok force-pushed the chore/ci-arm-improvements branch from b2dcf01 to 85706a2 Compare November 10, 2025 22:44
@rodrigok rodrigok changed the base branch from chore/ci-improvements to chore/ci-improvements-2 November 10, 2025 22:45
@rodrigok rodrigok force-pushed the chore/ci-arm-improvements branch 3 times, most recently from 482fa73 to a5f1336 Compare November 10, 2025 23:08
@rodrigok rodrigok force-pushed the chore/ci-improvements-2 branch 3 times, most recently from 8e80445 to 55ff3dd Compare November 11, 2025 12:50
@rodrigok rodrigok force-pushed the chore/ci-arm-improvements branch from a5f1336 to f9d6b48 Compare November 11, 2025 12:56
@rodrigok rodrigok force-pushed the chore/ci-improvements-2 branch from 55ff3dd to 4ba7db6 Compare November 11, 2025 13:05
@rodrigok rodrigok force-pushed the chore/ci-arm-improvements branch from f9d6b48 to c2076af Compare November 11, 2025 13:06
Base automatically changed from chore/ci-improvements-2 to develop November 11, 2025 14:14
@rodrigok rodrigok force-pushed the chore/ci-arm-improvements branch 3 times, most recently from e8d09af to 6c71b8e Compare November 11, 2025 17:05
@rodrigok rodrigok force-pushed the chore/ci-arm-improvements branch from 3f28d9b to d892cd2 Compare November 11, 2025 17:49
@rodrigok rodrigok marked this pull request as ready for review November 11, 2025 17:50
@rodrigok rodrigok requested a review from a team as a code owner November 11, 2025 17:50
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bd9307b and d892cd2.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (8)
  • .github/actions/build-docker/action.yml (1 hunks)
  • .github/workflows/ci-code-check.yml (1 hunks)
  • .github/workflows/ci-deploy-gh-pages.yml (1 hunks)
  • .github/workflows/ci-test-storybook.yml (1 hunks)
  • .github/workflows/ci-test-unit.yml (1 hunks)
  • .github/workflows/ci.yml (9 hunks)
  • docker-compose-ci.yml (2 hunks)
  • packages/jest-presets/package.json (1 hunks)
⏰ 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). (3)
  • GitHub Check: 📦 Build Packages
  • GitHub Check: CodeQL-Build
  • GitHub Check: CodeQL-Build
🔇 Additional comments (9)
.github/workflows/ci-test-storybook.yml (1)

22-22: Runner migration to ARM is consistent.

The runner update aligns with the broader CI infrastructure shift to ubuntu-24.04-arm. No functional changes to the workflow logic.

.github/workflows/ci-code-check.yml (1)

18-18: Runner migration to ARM is consistent.

The runner update aligns with the PR's infrastructure shift. The swap space configuration at line 29–31 is architecture-agnostic.

.github/workflows/ci-test-unit.yml (1)

26-26: Runner migration to ARM is consistent.

The runner update aligns with the broader CI infrastructure shift. Test logic remains unchanged.

.github/actions/build-docker/action.yml (1)

15-15: Default arch changed to ARM64.

The architecture default is now arm64 instead of amd64. Since ci.yml's build-gh-docker job explicitly specifies the arch parameter in the matrix (line 324, 337, 351, 366), this change is safe. Verify that any other callers of this action also explicitly specify the architecture.

.github/workflows/ci-deploy-gh-pages.yml (1)

12-12: Runner migration to ARM is consistent.

The runner update aligns with the PR's infrastructure shift. Static asset deployment logic is platform-agnostic.

.github/workflows/ci.yml (2)

272-272: Conditional runner selection based on architecture is correct.

Line 272's logic (ubuntu-24.04${{ matrix.arch == 'arm64' && '-arm' || '' }}) correctly selects the runner based on the target architecture in the matrix. Combined with the multi-arch matrix at line 281 (arm64 and amd64), this ensures:

  • ARM builds run on ubuntu-24.04-arm
  • AMD64 builds run on ubuntu-24.04

This preserves cross-platform build capability.


26-26: Runner migration to ARM is consistent across all jobs.

All primary workflow jobs are migrated to ubuntu-24.04-arm. The report-coverage job at line 590 correctly remains on ubuntu-24.04 (amd64) since it only aggregates coverage reports and doesn't need ARM architecture.

The multi-architecture build matrix is preserved via conditional runner selection at line 272.

Also applies to: 124-124, 167-167, 241-241, 373-373, 642-642, 680-680, 734-734, 850-850

docker-compose-ci.yml (2)

6-6: Defensive environment variable defaults improve robustness.

The addition of ${VAR:-} defaults throughout the compose configuration prevents container initialization failures when environment variables are not set. This is particularly important for:

  • DENO_VERSION: empty default is safe (build arg)
  • DEBUG: empty default disables debug logging
  • ROCKETCHAT_LICENSE: empty default runs without enterprise features
  • COVERAGE_*: empty defaults safely disable coverage instrumentation
  • DISABLE_DB_WATCHERS: empty default is treated as false

This aligns with the goal of making the ARM-based CI more resilient.

Also applies to: 13-13, 17-17, 23-27


8-11: Multi-architecture buildx platform specifications are preserved.

The x-bake platform definitions (lines 8–11, 52–55, etc.) correctly specify both linux/amd64 and linux/arm64. These are buildx build platform specifications that determine what the build system produces, not runtime platform constraints. Retaining both architectures is correct for supporting multi-arch deployments from the CI system.

Also applies to: 52-55, 72-75, 92-95, 112-115, 138-141, 159-162, 179-182

],
"dependencies": {
"@swc/core": "~1.13.20",
"@swc/core": "1.13.19",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify the @swc/core version downgrade.

The version was changed from ~1.13.20 to 1.13.19, which:

  1. Downgrades to an older patch version
  2. Removes the tilde (~), enforcing strict pinning instead of allowing minor version flexibility

This appears unusual. Clarify whether this downgrade is intentional (e.g., to work around an ARM64 compatibility issue) or unintended.


🌐 Web query:

Does @swc/core version 1.13.20 have known issues with ARM64 architecture?

💡 Result:

Short answer: Yes — v1.13.20 had known ARM64 (and Alpine/musl) binary-loading crashes/segfaults; a fix was merged and released in 1.13.21 that improves ARM64 and Alpine (musl) binary loading/validation. [1][2]

Sources:

  • PR/commit summary describing ARM64 + musl segfaults and the fix (binary loading/validation + workaround). [1]
  • @swc/core changelog showing the 1.13.21 bugfix: "Improve ARM64 and Alpine Linux (musl) binary loading and validation". [2]

Recommendation: upgrade to 1.13.21 (or later).


Upgrade @swc/core to 1.13.21 to fix ARM64 issues.

Version 1.13.20 has known ARM64 (and Alpine/musl) binary-loading crashes/segfaults, with a fix released in 1.13.21. Downgrading to 1.13.19 avoids the bug but leaves an older version in place. Instead, upgrade to 1.13.21 or later where the ARM64 issue is resolved. Additionally, consider using a flexible version constraint (e.g., ^1.13.21) instead of strict pinning to allow patch updates.

🤖 Prompt for AI Agents
In packages/jest-presets/package.json around line 30, the pinned dependency
"@swc/core": "1.13.19" reintroduces an older version that avoids the ARM64 bug
but doesn't include the upstream fix; update the dependency to at least
"1.13.21" (recommended "^1.13.21" to allow patch updates) so the
ARM64/Alpine/musl binary-loading crash is resolved and future patches are picked
up; modify the version string accordingly and run yarn/npm install and tests to
ensure no regressions.

@ggazzo ggazzo added this to the 7.13.0 milestone Nov 11, 2025
@ggazzo ggazzo added the stat: QA assured Means it has been tested and approved by a company insider label Nov 11, 2025
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Nov 11, 2025
@ggazzo ggazzo merged commit b27e9fb into develop Nov 11, 2025
87 of 89 checks passed
@ggazzo ggazzo deleted the chore/ci-arm-improvements branch November 11, 2025 19:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stat: QA assured Means it has been tested and approved by a company insider stat: ready to merge PR tested and approved waiting for merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants