-
-
Notifications
You must be signed in to change notification settings - Fork 269
Remove 32bit builds #1000
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Remove 32bit builds #1000
Conversation
WalkthroughWorkflows now assign a per-platform runner via matrix.include and remove Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Dev as Maintainer
participant GH as GitHub Actions
participant MX as Matrix (include entries)
participant Job as Build Job
participant Registry as Docker Registry
Dev->>GH: Push / tag / dispatch
GH->>MX: Expand matrix.include (platform + runner)
Note over MX: Entries: linux/amd64 → ubuntu-latest<br/>linux/arm64 → ubuntu-24.04-arm
MX-->>Job: Spawn job with runs-on: matrix.runner
rect rgb(235,245,255)
Job->>Registry: Build and push images (per-platform)
end
GH-->>Dev: Report artifacts / digests
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20–30 minutes Areas to focus during review:
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
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. Comment |
Deploying homebox-docs with
|
| Latest commit: |
c70005a
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://3fab7600.homebox-docs.pages.dev |
| Branch Preview URL: | https://mk-kill-32-bit.homebox-docs.pages.dev |
|
@coderabbitai review full |
|
@tankerkiller125, I'll conduct a full review of this PR that removes 32-bit builds across all architectures. Based on the comprehensive context you've provided, this appears to be a well-reasoned decision given the industry-wide trend away from 32-bit architectures. The rationale covers CPU manufacturers, operating systems, and practical considerations like build times and testing capabilities. For security considerations: Dropping 32-bit support actually improves the security posture by:
I'll review all the changes to ensure the 32-bit removal is comprehensive and doesn't introduce any issues. ✅ Actions performedFull review triggered. |
|
@coderabbitai review full |
|
@tankerkiller125, I'll conduct a full review of this PR to examine the removal of 32-bit builds across all architectures and build workflows. I'll analyze:
✅ Actions performedFull review triggered. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/docker-publish.yaml (1)
116-116: Fix unintended whitespace in environment variable substitution.Line 116 contains extra whitespace (likely a tab) between
github.shaand}}, which will cause the environment variable to include trailing whitespace. This could cause downstream comparison or tagging issues.Apply this fix:
build-args: | VERSION=${{ github.ref_name }} - COMMIT=${{ github.sha }} + COMMIT=${{ github.sha }}
🧹 Nitpick comments (1)
.github/workflows/docker-publish-rootless.yaml (1)
99-102: QEMU setup is now optional but harmless.With the shift to native
ubuntu-24.04-armrunners for arm64 builds, the QEMU setup may no longer be strictly necessary. However, keeping it in place is benign and provides defensive compatibility if future workflows add cross-platform builds. You may optionally remove it to streamline the workflow.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
.github/workflows/docker-publish-hardened.yaml(2 hunks).github/workflows/docker-publish-rootless.yaml(2 hunks).github/workflows/docker-publish.yaml(2 hunks)backend/.goreleaser.yaml(0 hunks)
💤 Files with no reviewable changes (1)
- backend/.goreleaser.yaml
🔇 Additional comments (4)
.github/workflows/docker-publish-rootless.yaml (1)
40-40: Per-platform runner mapping is correctly configured for 64-bit builds.The ubuntu-24.04-arm label is valid for public repository workflows, and the matrix.include approach provides optimal performance by using native runners instead of emulation. This aligns well with the 32-bit removal strategy—eliminating
linux/arm/v7and using dedicated runners forlinux/amd64andlinux/arm64reduces build times and complexity.Also applies to: 50-54
.github/workflows/docker-publish-hardened.yaml (2)
36-36: Matrix and runner configuration mirrors the rootless workflow—well structured for 64-bit builds.The per-entry runner mapping correctly eliminates
linux/arm/v7and optimizes platform assignment. The Cobalt 100-based arm64 runners provide native execution without virtualization, improving performance over emulation.Also applies to: 46-50
76-76: Best practice: Action SHAs are pinned for reproducibility.Pinning action versions to commit SHAs (e.g.,
c1e51972afc2...instead ofv5) ensures deterministic workflows and reduces supply-chain attack surface. This is a security best practice that complements the 32-bit removal by narrowing the attack surface further.Also applies to: 83-83, 90-90, 97-97, 102-102, 109-109, 133-133, 153-153
.github/workflows/docker-publish.yaml (1)
40-40: Matrix and runner configuration correctly supports 64-bit platforms only.The per-entry runner mapping eliminates
linux/arm/v7and uses appropriate runners for each platform. This achieves the PR's goal of removing 32-bit builds while maintaining efficient native execution.Also applies to: 50-54
What type of PR is this?
What this PR does / why we need it:
This PR drops 32 bit builds entirely (docker, binary, etc.) for all CPU architectures (ARM, x86, etc.)
Context
For some context as to why we would do this, there's quite a bit of background.
CPUs Manufacturers
OSes
Applications
Our Own Things
We've regularly encountered some issues with building for 32 bit architectures, especially just builds taking a very long time to complete, resulting in slower than planned release build times. We also don't test on any 32 bit architectures, so any bugs caused by 32 bit we don't know about, and we really don't have a way to test short of spinning up a 32 bit VM (with who knows what OS)
Additionally, of those with
HBOX_OPTIONS_ALLOW_ANALYTICS=truethere is maybe one user of a 32bit architecture system. (As a reminder, our analytics are always open to view https://homebox.software/en/analytics/ )Some Final Thoughts on Our End
32 bit doesn't really take extra effort on a day to day for us, Golang cross-compiles to 32 bit pretty well and Javascript just doesn't care. However, it does eat up time during releases (time we could be using to help people upgrade, or work on bug fixes), and it does eat up time during PR tests and builds.
We also have zero way to validate and test against 32 bit CPUs, Github doesn't have 32 bit Action Runners, and emulating inside Github Actions is a royal PITA (and very slow). Which means that there could be some major bugs in 32 bit builds we've never seen, and never will see in our regular development efforts.
Dropping 32 bit seems like a good way forward to speed up release times a bit, and prevent bug reports for things we'll never be able to replicate. You will of course always be able to download the sources of Homebox and build it for 32 bit if you so choosed.
Summary by CodeRabbit