[PR #2610] [MERGED] feat(ci): add multi-architecture support for OS package builds #8400

Closed
opened 2026-04-20 18:11:46 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/go-vikunja/vikunja/pull/2610
Author: @kolaente
Created: 4/12/2026
Status: Merged
Merged: 4/12/2026
Merged by: @kolaente

Base: mainHead: claude/multi-arch-so-bundles-iFV9B


📝 Commits (3)

  • 573869a feat(ci): build OS packages for arm64 and armv7 in addition to amd64
  • 56e0ba8 fix(ci): validate NFPM_ARCH against allowlist to satisfy gosec
  • 5cc65a4 fix(ci): use nfpm-native arch identifiers and fix gosec taint

📊 Changes

3 files changed (+31 additions, -22 deletions)

View changed files

📝 .github/workflows/release.yml (+17 -21)
📝 magefile.go (+13 -0)
📝 nfpm.yaml (+1 -1)

📄 Description

Summary

This PR extends the OS package build pipeline to support multiple CPU architectures (amd64, arm64, and armv7) instead of being limited to x86_64 only.

Key Changes

  • GitHub Actions Workflow: Added architecture matrix to the package build job that defines mappings between Go architecture names, nfpm architecture names, and package architecture names
  • Binary Selection: Updated the artifact download and preparation steps to dynamically select binaries for the target architecture instead of hardcoding linux-amd64
  • Package Naming: Modified output package filenames to include the architecture identifier (e.g., vikunja-version-aarch64.deb)
  • Artifact Management: Consolidated multiple OS package download steps into a single step using pattern matching and merge-multiple flag
  • Configuration: Updated nfpm configuration to accept architecture as a template variable, with amd64 as the default fallback
  • Mage Build System: Modified the PrepareNFPMConfig task to read the NFPM_ARCH environment variable and substitute it into the nfpm configuration template

Implementation Details

The architecture matrix defines three build targets:

  • linux-amd64 → nfpm: amd64 → package: x86_64
  • linux-arm64 → nfpm: arm64 → package: aarch64
  • linux-arm-7 → nfpm: armhf → package: armv7

Each package type (rpm, deb, apk, archlinux) is now built for all three architectures, with the architecture passed through environment variables to the build process.

https://claude.ai/code/session_018MXXUvQZM8M8frZu5iXDzc


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/go-vikunja/vikunja/pull/2610 **Author:** [@kolaente](https://github.com/kolaente) **Created:** 4/12/2026 **Status:** ✅ Merged **Merged:** 4/12/2026 **Merged by:** [@kolaente](https://github.com/kolaente) **Base:** `main` ← **Head:** `claude/multi-arch-so-bundles-iFV9B` --- ### 📝 Commits (3) - [`573869a`](https://github.com/go-vikunja/vikunja/commit/573869a797df4d8b1a9f0183453da353e95a07c9) feat(ci): build OS packages for arm64 and armv7 in addition to amd64 - [`56e0ba8`](https://github.com/go-vikunja/vikunja/commit/56e0ba814bb59e118205223016ddfcce158b9cfa) fix(ci): validate NFPM_ARCH against allowlist to satisfy gosec - [`5cc65a4`](https://github.com/go-vikunja/vikunja/commit/5cc65a4e1b4b6eac7418eca83f4bf34e5db1d333) fix(ci): use nfpm-native arch identifiers and fix gosec taint ### 📊 Changes **3 files changed** (+31 additions, -22 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/release.yml` (+17 -21) 📝 `magefile.go` (+13 -0) 📝 `nfpm.yaml` (+1 -1) </details> ### 📄 Description ## Summary This PR extends the OS package build pipeline to support multiple CPU architectures (amd64, arm64, and armv7) instead of being limited to x86_64 only. ## Key Changes - **GitHub Actions Workflow**: Added architecture matrix to the package build job that defines mappings between Go architecture names, nfpm architecture names, and package architecture names - **Binary Selection**: Updated the artifact download and preparation steps to dynamically select binaries for the target architecture instead of hardcoding linux-amd64 - **Package Naming**: Modified output package filenames to include the architecture identifier (e.g., `vikunja-version-aarch64.deb`) - **Artifact Management**: Consolidated multiple OS package download steps into a single step using pattern matching and merge-multiple flag - **Configuration**: Updated nfpm configuration to accept architecture as a template variable, with amd64 as the default fallback - **Mage Build System**: Modified the `PrepareNFPMConfig` task to read the `NFPM_ARCH` environment variable and substitute it into the nfpm configuration template ## Implementation Details The architecture matrix defines three build targets: - `linux-amd64` → nfpm: `amd64` → package: `x86_64` - `linux-arm64` → nfpm: `arm64` → package: `aarch64` - `linux-arm-7` → nfpm: `armhf` → package: `armv7` Each package type (rpm, deb, apk, archlinux) is now built for all three architectures, with the architecture passed through environment variables to the build process. https://claude.ai/code/session_018MXXUvQZM8M8frZu5iXDzc --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-20 18:11:46 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/vikunja#8400