-
Notifications
You must be signed in to change notification settings - Fork 0
ci: remove Apple Containers jobs #121
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?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -43,46 +43,6 @@ jobs: | |
| - run: go vet ./... | ||
| - run: go test -race -count=1 ./... | ||
|
|
||
| # Apple-container backend lives in runtime/applecontainer and is | ||
| # darwin/arm64-only (see build tags). This job builds the Swift | ||
| # bridge and runs the Go test suite on macOS so we get coverage of | ||
| # cgo compilation, go:embed of libACBridge.dylib, and the | ||
| # daemon-free unit tests. Daemon-dependent tests skip cleanly via | ||
| # runtimeOrSkip when Apple's `container` apiserver isn't running. | ||
| test-darwin: | ||
| runs-on: macos-26 | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| go: ["1.25", "1.26"] | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-go@v6 | ||
| with: | ||
| go-version: ${{ matrix.go }} | ||
| cache: true | ||
| - name: Select Xcode with Swift 6.2 | ||
| # apple/container 0.12.3 declares swift-tools-version 6.2; | ||
| # the macos-15 image ships an older Xcode by default. Pick | ||
| # the newest installed so SwiftPM can resolve the package. | ||
| run: sudo xcode-select -s /Applications/Xcode_latest.app || sudo xcode-select -s "$(ls -d /Applications/Xcode_*.app | sort -V | tail -1)" | ||
| - name: Cache SwiftPM artifacts | ||
| uses: actions/cache@v5 | ||
| with: | ||
| path: | | ||
| applecontainer-bridge/.build | ||
| ~/Library/Caches/org.swift.swiftpm | ||
| # Key on Package.resolved so the cache busts when dependency | ||
| # versions move. Bump the `v1` prefix to force a full miss | ||
| # after a toolchain change that breaks artifact compat. | ||
| key: swiftpm-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('applecontainer-bridge/Package.resolved') }} | ||
| restore-keys: | | ||
| swiftpm-v1-${{ runner.os }}-${{ runner.arch }}- | ||
| - name: Build Swift bridge | ||
| run: make bridge | ||
| - run: go vet ./... | ||
| - run: go test -race -count=1 ./... | ||
|
Comment on lines
-46
to
-84
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [LOW] [D11] README still claims CI runs the removed macOS Apple-container job
Comment on lines
-46
to
-84
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [MEDIUM] [R8] Removing the only macOS job leaves the supported Apple backend completely outside CI
|
||
|
|
||
| test-integration-linux: | ||
| runs-on: ubuntu-latest | ||
| needs: [lint, test-linux] | ||
|
|
@@ -108,8 +68,8 @@ jobs: | |
| run: | | ||
| # Enumerate tests under the integration tag, partition them | ||
| # deterministically by sorted-index modulo SHARD_TOTAL, and | ||
| # run only this shard's subset. Apple-container tests are | ||
| # build-tagged darwin/arm64, so they don't appear here. | ||
| # run only this shard's subset. Platform-specific tests are | ||
| # excluded here by their build constraints. | ||
| set -euo pipefail | ||
| tests=$(go test -tags=integration -list '.*' ./test/integration/... \ | ||
| | grep -E '^Test' | sort -u) | ||
|
|
@@ -163,121 +123,3 @@ jobs: | |
| --security-opt label=disable \ | ||
| -v "$PWD":/w -w /w \ | ||
| quay.io/podman/stable bash /w/.github/scripts/podman-cr.sh | ||
|
|
||
| # Integration tests against a live Apple `container` daemon. | ||
| # | ||
| # Verified-on-CI status: | ||
| # - pkg install : OK on macos-15 and macos-26 | ||
| # - system start : OK | ||
| # - kernel set : OK | ||
| # - builder start : FAILS on both macos-15 and macos-26 with | ||
| # "VZErrorDomain Code=2 Virtualization is not available on | ||
| # this hardware." | ||
| # | ||
| # i.e. GitHub-hosted macOS runners do not expose | ||
| # Virtualization.framework for Linux guests, regardless of image | ||
| # version. Apple's `container` runtime is hardcoded to VZ (no QEMU | ||
| # fallback like Colima/Lima), so there is no workaround at the | ||
| # workflow level. The only paths to a passing job today are: | ||
| # 1. Self-hosted macOS runner with virtualization entitlements | ||
| # 2. GH exposing VZ on hosted runners (no announced timeline) | ||
| # | ||
| # continue-on-error keeps the failure visible without blocking | ||
| # merges. Drop it once a real green run is available. | ||
| test-integration-darwin: | ||
| runs-on: macos-26 | ||
| needs: [test-darwin] | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| go: ["1.25", "1.26"] | ||
| shard: [1, 2, 3] | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - uses: actions/setup-go@v6 | ||
| with: | ||
| go-version: ${{ matrix.go }} | ||
| cache: true | ||
| - name: Install apple/container | ||
| env: | ||
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| run: | | ||
| # `gh release download` authenticates with GH_TOKEN, dodging | ||
| # the strict anonymous rate limit on api.github.com that | ||
| # bit us when curling the unauth'd releases endpoint. | ||
| gh release download --repo apple/container \ | ||
| --pattern '*installer-signed.pkg' \ | ||
| --output /tmp/container.pkg | ||
| sudo installer -pkg /tmp/container.pkg -target / | ||
| container --version | ||
| - name: Select Xcode with Swift 6.2 | ||
| # apple/container 0.12.3 declares swift-tools-version 6.2; | ||
| # the macos-15 image ships an older Xcode by default. Pick | ||
| # the newest installed so SwiftPM can resolve the package. | ||
| run: sudo xcode-select -s /Applications/Xcode_latest.app || sudo xcode-select -s "$(ls -d /Applications/Xcode_*.app | sort -V | tail -1)" | ||
| - name: Cache SwiftPM artifacts | ||
| uses: actions/cache@v5 | ||
| with: | ||
| path: | | ||
| applecontainer-bridge/.build | ||
| ~/Library/Caches/org.swift.swiftpm | ||
| key: swiftpm-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('applecontainer-bridge/Package.resolved') }} | ||
| restore-keys: | | ||
| swiftpm-v1-${{ runner.os }}-${{ runner.arch }}- | ||
| - name: Build Swift bridge | ||
| run: make bridge | ||
| - name: Start container apiserver | ||
| run: | | ||
| # --disable-kernel-install skips the interactive kernel prompt | ||
| # that would otherwise hang in CI; we install the recommended | ||
| # kernel explicitly in the next step. | ||
| container system start --disable-kernel-install | ||
| container system status | ||
| - name: Install default kernel | ||
| # The builder (and any container) needs a configured kernel. | ||
| # `--recommended` pulls Apple's recommended binary | ||
| # non-interactively, which `--disable-kernel-install` skipped. | ||
| run: container system kernel set --recommended | ||
| - name: Start builder | ||
| id: builder | ||
| # On GH-hosted macOS runners VZ is unavailable, so this step | ||
| # always fails. Mark it continue-on-error so the JOB stays | ||
| # green (continue-on-error at job level wouldn't — that only | ||
| # affects workflow status, not the per-job check). The next | ||
| # step gates on this step's outcome so we don't run the | ||
| # integration tests against a missing daemon. | ||
| continue-on-error: true | ||
| run: container builder start | ||
| - name: Run apple-container integration tests (shard ${{ matrix.shard }}/3) | ||
| if: steps.builder.outcome == 'success' | ||
| env: | ||
| SHARD_INDEX: ${{ matrix.shard }} | ||
| SHARD_TOTAL: 3 | ||
| run: | | ||
| # Filter to TestAppleContainer_* — the docker-backed tests | ||
| # share the `integration` build tag and would fail without a | ||
| # Docker daemon on this runner. Then partition that subset | ||
| # across shards. | ||
| set -euo pipefail | ||
| tests=$(go test -tags=integration -list '^TestAppleContainer_' ./test/integration/... \ | ||
| | grep -E '^TestAppleContainer_' | sort -u) | ||
| if [ -z "$tests" ]; then | ||
| echo "no apple-container integration tests discovered" >&2 | ||
| exit 1 | ||
| fi | ||
| selected=$(echo "$tests" | awk -v s="$SHARD_INDEX" -v t="$SHARD_TOTAL" \ | ||
| '{ if ((NR - 1) % t == (s - 1)) print }') | ||
| echo "Shard ${SHARD_INDEX}/${SHARD_TOTAL} will run:" | ||
| echo "$selected" | ||
| if [ -z "$selected" ]; then | ||
| echo "shard is empty; nothing to run" | ||
| exit 0 | ||
| fi | ||
| pattern="^($(echo "$selected" | paste -sd '|' -))$" | ||
| go test -race -count=1 -tags=integration -timeout=15m \ | ||
| -run "$pattern" ./test/integration/... | ||
| - name: Stop container services | ||
| if: always() | ||
| run: | | ||
| container builder stop || true | ||
| container system stop || true | ||
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.
[MEDIUM] [R8] Removing the only macOS job leaves the supported Apple backend completely outside CI
test-darwinjob was the only workflow job that ranmake bridgeandgo vet ./.../go test ./...on macOS. Verbatim checks on the new workflow:grep -nE 'go test|go vet|runs-on|test-darwin|test-integration-darwin' .github/workflows/ci.ymlreturns onlyruns-on: ubuntu-latestand the Linux/Podman commands; separately,grep -RIl '^//go:build darwin && arm64' runtime/applecontainer test/integrationreturns the Apple runtime and test files. Thus a broken cgo/Swift embed or any Darwin-only compile/test regression can pass every remaining CI job.runtime/applecontainer/runtime_darwin_arm64.go:1is guarded by//go:build darwin && arm64, so the remaining Ubuntugo test ./...at.github/workflows/ci.yml:44excludes the supported Apple implementation and its Darwin tests; macOS consumers can consequently receive a release that CI never compiled.