Skip to content

ci: add Apple Silicon smoke workflow #3

ci: add Apple Silicon smoke workflow

ci: add Apple Silicon smoke workflow #3

name: Apple Silicon CI
on:
pull_request:
branches: [dev, main]
push:
branches: [dev, main]
schedule:
- cron: "17 4 * * 1"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: apple-silicon-ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
dry-run-smoke:
name: Apple Silicon dry-run smoke
runs-on: macos-15
timeout-minutes: 20
env:
HOMEBREW_NO_AUTO_UPDATE: "1"
HOMEBREW_NO_INSTALL_CLEANUP: "1"
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
persist-credentials: false
- name: Verify Apple Silicon runner
run: |
test "$(uname -s)" = "Darwin"
test "$(uname -m)" = "arm64"
sw_vers
/bin/bash --version | head -n 1
- name: Run rig smoke checks
run: |
export HOME="$RUNNER_TEMP/rig-dry-run-home"
export RIG_CONFIG_DIR="$HOME/.config/rig"
mkdir -p "$HOME"
assert_empty_stderr() {
local stderr_file
stderr_file=$1
if [ -s "$stderr_file" ]; then
cat "$stderr_file" >&2
return 1
fi
return 0
}
for f in install.sh rig lib/rig/*.sh scripts/*.sh tests/*.sh; do
bash -n "$f"
done
bash tests/run-tests.sh
./scripts/validate-catalog.sh
./rig dry-run --select vscode,chrome,node-npm --defaults finder-show-hidden-files 2>"$RUNNER_TEMP/rig-dry-run.stderr"
assert_empty_stderr "$RUNNER_TEMP/rig-dry-run.stderr"
./install.sh --dry-run 2>"$RUNNER_TEMP/install-dry-run.stderr"
assert_empty_stderr "$RUNNER_TEMP/install-dry-run.stderr"
test ! -e "$RIG_CONFIG_DIR"
test ! -e "$HOME/.local/share/rig"
test ! -e "$HOME/.local/bin/rig"
git diff --check
- name: Install validation tools
run: |
if ! command -v shellcheck >/dev/null 2>&1; then
brew install shellcheck
fi
if ! command -v actionlint >/dev/null 2>&1; then
brew install actionlint
fi
- name: Run validation tools
run: |
shellcheck install.sh rig lib/rig/*.sh scripts/*.sh tests/*.sh
actionlint .github/workflows/*.yml
install-smoke:
name: Apple Silicon install smoke
needs: dry-run-smoke
runs-on: macos-15
timeout-minutes: 30
env:
HOMEBREW_NO_AUTO_UPDATE: "1"
HOMEBREW_NO_INSTALL_CLEANUP: "1"
RIG_SKIP_HOMEBREW_INSTALL: "yes"
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
persist-credentials: false
- name: Verify Apple Silicon runner
run: |
test "$(uname -s)" = "Darwin"
test "$(uname -m)" = "arm64"
sw_vers
/bin/bash --version | head -n 1
- name: Run formula-only install smoke
run: |
export HOME="$RUNNER_TEMP/rig-home"
export RIG_CONFIG_DIR="$HOME/.config/rig"
mkdir -p "$HOME"
./rig install --write-config-only --select gh
grep -F 'brew "gh"' "$RIG_CONFIG_DIR/Brewfile"
./rig install --from-config
brew bundle check --file="$RIG_CONFIG_DIR/Brewfile"
gh --version