Skip to content

Add macOS Apple Silicon (aarch64-darwin) Habitat build & promote pipelines#475

Closed
sanghinitin wants to merge 2 commits into
mainfrom
mac-pipeline
Closed

Add macOS Apple Silicon (aarch64-darwin) Habitat build & promote pipelines#475
sanghinitin wants to merge 2 commits into
mainfrom
mac-pipeline

Conversation

@sanghinitin

Copy link
Copy Markdown
Contributor

Summary

Add Expeditor/Buildkite pipelines to build and promote the chef-vault Habitat package for macOS Apple Silicon (aarch64-darwin).

This follows the same pattern used by habitat-sh/habitat for their aarch64-darwin builds — using native macOS Anka VMs instead of Docker containers.

Changes

File Description
.expeditor/build.habitat.aarch64-darwin.pipeline.yml Buildkite pipeline definition for building aarch64-darwin habitat package using Anka VM
.expeditor/buildkite/build_hab_aarch64_darwin.sh Build script that installs hab natively on macOS ARM and runs hab pkg build
.expeditor/buildkite/upload_hab_aarch64_darwin.sh Uploads the built .hart artifact to habitat builder (unstable channel)
.expeditor/promote.habitat.aarch64-darwin.pipeline.yml Pipeline definition for promoting aarch64-darwin package between channels
.expeditor/buildkite/promote_hab_aarch64_darwin.sh Promotes aarch64-darwin package via Builder API (auto-detects channels from Expeditor env vars)

Key Design Decisions

  • Anka VM (chef/anka#v0.7.2 with buildkite-core-14-arm64) instead of Docker — required for native aarch64-darwin .hart production
  • Agent queue: default-macos-arm64-privileged — targets Apple Silicon runners
  • vault-util-init for secrets initialization (standard Buildkite/Expeditor pattern)
  • hab installed with -t aarch64-darwin target flag for correct platform binary
  • Key sync to /hab/cache/keys so root-level builds can access signing keys

Lint Validation

Shellcheck (shell scripts)

$ shellcheck .expeditor/buildkite/build_hab_aarch64_darwin.sh \
             .expeditor/buildkite/upload_hab_aarch64_darwin.sh \
             .expeditor/buildkite/promote_hab_aarch64_darwin.sh

SC1091 (info): Not following: ./results/last_build.env — runtime-generated file
SC2154 (warning): pkg_artifact referenced but not assigned — defined in sourced last_build.env

Both are expected false positives (variables from runtime-sourced last_build.env).

YAML Validation

$ ruby -ryaml -e "YAML.safe_load(...);"
YAML validation: PASSED

Testing

  • No Ruby code changed — existing RSpec/Cucumber tests unaffected
  • Pipeline correctness will be validated on first Buildkite trigger

Signed-off-by: nitin sanghi <nsanghi@progress.com>
@sanghinitin sanghinitin requested review from a team as code owners July 1, 2026 12:23
@sanghinitin sanghinitin added the Type: Enhancement Adds new functionality. label Jul 1, 2026
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown

Simplecov Report

Covered Threshold
98.57% 90%

@rishichawda rishichawda left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

You'll need to add a plan file first. Also, if this is not urgent, then we should explore the possibility of waiting till expeditor has support for darwin builds via bldr.toml

Signed-off-by: nitin sanghi <nsanghi@progress.com>
Comment thread .bldr.toml

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I believe pipeline definition is missing in config.yml. See https://expeditor.chef.io/docs/pipelines/habitat/#create-pipeline

@sanghinitin sanghinitin closed this Jul 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Type: Enhancement Adds new functionality.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants