Skip to content

Commit f7f0cc4

Browse files
aledbfclaude
andcommitted
ci(parity): emulación QEMU arm64 en el lane runtime
Los casos up.update-uid-arm64* / arm64v8* arrancan contenedores arm64 reales; en el runner amd64 quedaban inconclusive por exec-format. Registrar binfmt via docker/setup-qemu-action los hace ejecutables y comparables. - go-cli.yml: docker/setup-qemu-action@v3 (platforms: arm64) en parity-runtime. - parity_matrix_test.go: runtimeTimeout overridable por PARITY_RUNTIME_TIMEOUT; CI lo fija en 10m para dar aire a la emulación (lenta) sin frenar amd64. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 4963877 commit f7f0cc4

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

.github/workflows/go-cli.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,18 @@ jobs:
101101
parity-runtime:
102102
runs-on: ubuntu-latest
103103
needs: lint-and-test
104+
env:
105+
# Los casos update-uid-arm64* arrancan contenedores arm64 reales; en un
106+
# runner amd64 se ejecutan emulados vía QEMU (binfmt), que es lento.
107+
PARITY_RUNTIME_TIMEOUT: "10m"
104108
steps:
105109
- uses: actions/checkout@v7
106110
with:
107111
submodules: recursive
112+
- name: Set up QEMU (emulación arm64)
113+
uses: docker/setup-qemu-action@v3
114+
with:
115+
platforms: arm64
108116
- uses: actions/setup-go@v6
109117
with:
110118
go-version-file: go.mod

internal/cli/parity_matrix_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,15 @@ func TestParityMatrix(t *testing.T) {
196196
cliTS := envOr("CLI_TS", "node "+filepath.Join(repoRoot, "reference", "devcontainer.js"))
197197
cliGO := envOr("CLI_GO", filepath.Join(repoRoot, "devcontainer"))
198198
defaultTimeout := 60 * time.Second
199+
// Runtime lane default; overridable via PARITY_RUNTIME_TIMEOUT (e.g. "10m")
200+
// so CI can grant headroom to QEMU-emulated arm64 cases without slowing the
201+
// amd64 cases here.
199202
runtimeTimeout := 300 * time.Second
203+
if v := os.Getenv("PARITY_RUNTIME_TIMEOUT"); v != "" {
204+
if d, err := time.ParseDuration(v); err == nil {
205+
runtimeTimeout = d
206+
}
207+
}
200208

201209
// Check TS CLI exists
202210
if _, err := os.Stat(filepath.Join(repoRoot, "reference", "dist", "spec-node", "devContainersSpecCLI.js")); err != nil {

0 commit comments

Comments
 (0)