Skip to content

feat: Add Linux ARM64 (aarch64) build support#55

Merged
technicalpickles merged 3 commits intomainfrom
add-linux-arm64-support
Sep 11, 2025
Merged

feat: Add Linux ARM64 (aarch64) build support#55
technicalpickles merged 3 commits intomainfrom
add-linux-arm64-support

Conversation

@technicalpickles
Copy link
Copy Markdown
Owner

@technicalpickles technicalpickles commented Sep 11, 2025

Overview

This PR adds Linux ARM64 (aarch64) build support to the release workflow, enabling envsense distribution on ARM64 Linux systems including AWS Graviton, Raspberry Pi, Apple Silicon Linux VMs, and other ARM64 platforms.

Version: Bumped to 0.4.0 to reflect the new platform capability (minor version bump per semantic versioning).

Changes Made

1. Release Workflow (.github/workflows/release.yml)

  • Added `ubuntu-24.04-arm` runner with `aarch64-unknown-linux-gnu` target
  • Leverages existing modular build scripts without modification

2. Local Testing Script (`scripts/test-release.sh`)

  • Added ARM64 target to maintain test coverage parity with release workflow

3. Version Bump (`Cargo.toml` and workspace crates)

  • Package version: 0.3.4 → 0.4.0 (new platform support = minor version bump)
  • Schema version: unchanged at 0.3.0 (no API changes)
  • Updated all workspace crates for consistency

What Was Already Ready ✅

The project's excellent architecture meant most components required zero changes:

  • Rust Configuration: `rust-toolchain.toml` already includes `aarch64-unknown-linux-gnu`
  • Build Scripts: `build-target.sh` works generically with any Rust target
  • Binary Preparation: `prepare-binary.sh` handles any target automatically
  • Signing Infrastructure: Cosign signing works for all binaries
  • Testing Infrastructure: `test-release-scripts.yml` already tests on ARM64 runners
  • Distribution: `aqua-registry-entry.yaml` already supports `linux/arm64` architecture

Implementation Impact

With the next release, users will be able to install envsense on:

  • Linux x86_64 - existing support
  • Linux ARM64 - 🆕 new support
  • macOS Universal - existing support (Intel + Apple Silicon)

The ARM64 binary will be named: `envsense-0.4.0-aarch64-unknown-linux-gnu`

Testing

  • Local testing with `./scripts/test-release.sh` (requires ARM64 Linux system)
  • CI will test ARM64 builds automatically via existing `test-release-scripts.yml`
  • Full release workflow testing on version bump

Risk Assessment

Very Low Risk:

  • Minimal changes to proven, modular architecture
  • No impact on existing x86_64 or macOS builds
  • ARM64 target already tested in CI infrastructure
  • Uses native ARM64 runners (no cross-compilation complexity)

Distribution Ready

The aqua package manager configuration already supports ARM64, so this will be immediately available to users upon release.

- Add aarch64-unknown-linux-gnu target to release workflow
- Use ubuntu-24.04-arm runner for native ARM64 builds
- Update test-release.sh to include ARM64 target for local testing
- Leverage existing infrastructure: rust-toolchain.toml already includes target
- Binary will be named: envsense-{version}-aarch64-unknown-linux-gnu
- Enables installation on AWS Graviton, Raspberry Pi, Apple Silicon Linux VMs

All existing build scripts and signing infrastructure work without changes.
- Package version: 0.3.4 → 0.4.0 (minor bump for new platform support)
- Schema version: unchanged at 0.3.0 (no API changes)
- Updated all workspace crates to maintain version consistency
- Follows semantic versioning: new platform capability = minor version bump
@technicalpickles technicalpickles marked this pull request as ready for review September 11, 2025 19:45
Copilot AI review requested due to automatic review settings September 11, 2025 19:45
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds Linux ARM64 (aarch64) build support to enable envsense distribution on ARM64 Linux systems. The version is bumped from 0.3.4 to 0.4.0 to reflect the new platform capability.

  • Added ARM64 Linux as a supported build target in the release workflow
  • Updated local testing script to include ARM64 target for test coverage parity
  • Bumped package version across all workspace crates to 0.4.0

Reviewed Changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
.github/workflows/release.yml Added ubuntu-24.04-arm runner with aarch64-unknown-linux-gnu target
scripts/test-release.sh Added ARM64 target to local testing configuration
Cargo.toml Bumped main package version from 0.3.4 to 0.4.0
envsense-macros/Cargo.toml Bumped macro package version from 0.3.4 to 0.4.0
envsense-macros/envsense-macros-impl/Cargo.toml Bumped macro implementation package version from 0.3.4 to 0.4.0

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@technicalpickles technicalpickles merged commit a13a6f0 into main Sep 11, 2025
11 checks passed
@technicalpickles technicalpickles deleted the add-linux-arm64-support branch September 11, 2025 19:48
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.

2 participants