From 34f8cb28f5727cdc306fb18bb5f3fe21a3dd367f Mon Sep 17 00:00:00 2001 From: Cao Yuhang Date: Fri, 24 Jul 2026 15:54:57 +0000 Subject: [PATCH 1/4] ci: run QEMU chaos on native architecture runners --- .github/workflows/weekly-randomized-model.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/weekly-randomized-model.yml b/.github/workflows/weekly-randomized-model.yml index 0f123ae..3df2e31 100644 --- a/.github/workflows/weekly-randomized-model.yml +++ b/.github/workflows/weekly-randomized-model.yml @@ -503,13 +503,14 @@ jobs: qemu-chaos-matrix: name: QEMU chaos (${{ matrix.suite }}, ${{ matrix.arch }}) needs: qemu-image-build - runs-on: ubuntu-24.04 + runs-on: ${{ matrix.runner }} timeout-minutes: ${{ matrix.job_timeout }} strategy: fail-fast: false matrix: include: - arch: x86_64 + runner: ubuntu-24.04 suite: rootfs-stress script: scripts/qemu/rootfs_stress.sh qemu_timeout: "4800" @@ -518,6 +519,7 @@ jobs: chaos_workers: "" job_timeout: 95 - arch: arm64 + runner: ubuntu-24.04-arm suite: rootfs-stress script: scripts/qemu/rootfs_stress.sh qemu_timeout: "5400" @@ -526,6 +528,7 @@ jobs: chaos_workers: "" job_timeout: 110 - arch: x86_64 + runner: ubuntu-24.04 suite: block-lifecycle-stress script: scripts/qemu/block_lifecycle_stress.sh qemu_timeout: "2400" @@ -534,6 +537,7 @@ jobs: chaos_workers: "" job_timeout: 55 - arch: arm64 + runner: ubuntu-24.04-arm suite: block-lifecycle-stress script: scripts/qemu/block_lifecycle_stress.sh qemu_timeout: "3000" @@ -542,6 +546,7 @@ jobs: chaos_workers: "" job_timeout: 65 - arch: x86_64 + runner: ubuntu-24.04 suite: crash-recovery script: scripts/qemu/crash_recovery.sh qemu_timeout: "2400" @@ -550,6 +555,7 @@ jobs: chaos_workers: "" job_timeout: 60 - arch: arm64 + runner: ubuntu-24.04-arm suite: crash-recovery script: scripts/qemu/crash_recovery.sh qemu_timeout: "3000" @@ -558,6 +564,7 @@ jobs: chaos_workers: "" job_timeout: 75 - arch: x86_64 + runner: ubuntu-24.04 suite: mixed-chaos script: scripts/qemu/mixed_chaos.sh qemu_timeout: "4800" @@ -566,6 +573,7 @@ jobs: chaos_workers: "10" job_timeout: 100 - arch: arm64 + runner: ubuntu-24.04-arm suite: mixed-chaos script: scripts/qemu/mixed_chaos.sh qemu_timeout: "5400" From c838f8dd376186297dd3bfdb9fdae04d0757d0dc Mon Sep 17 00:00:00 2001 From: Cao Yuhang Date: Fri, 24 Jul 2026 16:12:35 +0000 Subject: [PATCH 2/4] ci: validate native arm64 mixed-chaos --- .../validate-native-arm64-mixed-chaos.yml | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .github/workflows/validate-native-arm64-mixed-chaos.yml diff --git a/.github/workflows/validate-native-arm64-mixed-chaos.yml b/.github/workflows/validate-native-arm64-mixed-chaos.yml new file mode 100644 index 0000000..d12dcf9 --- /dev/null +++ b/.github/workflows/validate-native-arm64-mixed-chaos.yml @@ -0,0 +1,63 @@ +name: Validate native arm64 mixed chaos + +on: + pull_request: + paths: + - .github/workflows/weekly-randomized-model.yml + - .github/workflows/validate-native-arm64-mixed-chaos.yml + - scripts/qemu/** + - scripts/ci/prepare-qemu-test-env.sh + +permissions: + actions: read + contents: read + +jobs: + validate-arm64-mixed-chaos: + name: Native arm64 mixed-chaos validation + runs-on: ubuntu-24.04-arm + timeout-minutes: 115 + steps: + - name: Checkout ArgosFS + uses: actions/checkout@v7 + + - name: Verify native arm64 host + run: test "$(uname -m)" = aarch64 + + - name: Install QEMU test dependencies + env: + ARGOSFS_CI_QEMU_ARCH: arm64 + run: scripts/ci/install-deps.sh + + - name: Download recent arm64 QEMU bundle + env: + GH_TOKEN: ${{ github.token }} + BUNDLE_DIR: ${{ runner.temp }}/weekly-capos-qemu-bundle-arm64 + run: | + gh run download 30002680798 \ + --repo "$GITHUB_REPOSITORY" \ + --name weekly-capos-qemu-bundle-arm64 \ + --dir "$BUNDLE_DIR" + + - name: Prepare mutable QEMU image + env: + ARGOSFS_QEMU_BUNDLE_DIR: ${{ runner.temp }}/weekly-capos-qemu-bundle-arm64 + ARGOSFS_QEMU_WORKDIR: ${{ runner.temp }}/native-arm64-mixed-chaos-work + run: scripts/ci/prepare-qemu-test-env.sh + + - name: Run arm64 mixed chaos with production limits + env: + ARGOSFS_TEST_ARTIFACTS: ${{ runner.temp }}/native-arm64-mixed-chaos + ARGOSFS_QEMU_MEM: "1536" + ARGOSFS_QEMU_TIMEOUT: "5400" + ARGOSFS_QEMU_CHAOS_FILES: "280" + ARGOSFS_QEMU_CHAOS_WORKERS: "8" + run: scripts/qemu/mixed_chaos.sh + + - name: Upload validation artifacts + if: always() + uses: actions/upload-artifact@v7 + with: + name: native-arm64-mixed-chaos-validation + path: ${{ runner.temp }}/native-arm64-mixed-chaos + if-no-files-found: ignore From 62e9726edeb90969ed35f25bdf8299f8c24b987c Mon Sep 17 00:00:00 2001 From: Cao Yuhang Date: Sat, 1 Aug 2026 07:07:38 +0000 Subject: [PATCH 3/4] ci: budget both mixed chaos phases --- .github/workflows/validate-native-arm64-mixed-chaos.yml | 3 ++- .github/workflows/weekly-randomized-model.yml | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/validate-native-arm64-mixed-chaos.yml b/.github/workflows/validate-native-arm64-mixed-chaos.yml index d12dcf9..04dcada 100644 --- a/.github/workflows/validate-native-arm64-mixed-chaos.yml +++ b/.github/workflows/validate-native-arm64-mixed-chaos.yml @@ -16,7 +16,8 @@ jobs: validate-arm64-mixed-chaos: name: Native arm64 mixed-chaos validation runs-on: ubuntu-24.04-arm - timeout-minutes: 115 + # mixed_chaos.sh has two independently bounded QEMU phases. + timeout-minutes: 210 steps: - name: Checkout ArgosFS uses: actions/checkout@v7 diff --git a/.github/workflows/weekly-randomized-model.yml b/.github/workflows/weekly-randomized-model.yml index 3df2e31..fff4588 100644 --- a/.github/workflows/weekly-randomized-model.yml +++ b/.github/workflows/weekly-randomized-model.yml @@ -563,6 +563,8 @@ jobs: chaos_files: "" chaos_workers: "" job_timeout: 75 + # mixed_chaos.sh runs two sequential QEMU phases. The job timeout must + # cover both per-phase timeouts plus runner setup and artifact upload. - arch: x86_64 runner: ubuntu-24.04 suite: mixed-chaos @@ -571,7 +573,7 @@ jobs: stress_workers: "" chaos_files: "320" chaos_workers: "10" - job_timeout: 100 + job_timeout: 180 - arch: arm64 runner: ubuntu-24.04-arm suite: mixed-chaos @@ -580,7 +582,7 @@ jobs: stress_workers: "" chaos_files: "280" chaos_workers: "8" - job_timeout: 115 + job_timeout: 210 steps: - name: Checkout ArgosFS uses: actions/checkout@v7 From 2fe159400b63da6ed3eedbd0f53dca90a81cc184 Mon Sep 17 00:00:00 2001 From: Cao Yuhang Date: Sat, 1 Aug 2026 07:17:47 +0000 Subject: [PATCH 4/4] ci: remove one-off mixed chaos validation --- .../validate-native-arm64-mixed-chaos.yml | 64 ------------------- 1 file changed, 64 deletions(-) delete mode 100644 .github/workflows/validate-native-arm64-mixed-chaos.yml diff --git a/.github/workflows/validate-native-arm64-mixed-chaos.yml b/.github/workflows/validate-native-arm64-mixed-chaos.yml deleted file mode 100644 index 04dcada..0000000 --- a/.github/workflows/validate-native-arm64-mixed-chaos.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Validate native arm64 mixed chaos - -on: - pull_request: - paths: - - .github/workflows/weekly-randomized-model.yml - - .github/workflows/validate-native-arm64-mixed-chaos.yml - - scripts/qemu/** - - scripts/ci/prepare-qemu-test-env.sh - -permissions: - actions: read - contents: read - -jobs: - validate-arm64-mixed-chaos: - name: Native arm64 mixed-chaos validation - runs-on: ubuntu-24.04-arm - # mixed_chaos.sh has two independently bounded QEMU phases. - timeout-minutes: 210 - steps: - - name: Checkout ArgosFS - uses: actions/checkout@v7 - - - name: Verify native arm64 host - run: test "$(uname -m)" = aarch64 - - - name: Install QEMU test dependencies - env: - ARGOSFS_CI_QEMU_ARCH: arm64 - run: scripts/ci/install-deps.sh - - - name: Download recent arm64 QEMU bundle - env: - GH_TOKEN: ${{ github.token }} - BUNDLE_DIR: ${{ runner.temp }}/weekly-capos-qemu-bundle-arm64 - run: | - gh run download 30002680798 \ - --repo "$GITHUB_REPOSITORY" \ - --name weekly-capos-qemu-bundle-arm64 \ - --dir "$BUNDLE_DIR" - - - name: Prepare mutable QEMU image - env: - ARGOSFS_QEMU_BUNDLE_DIR: ${{ runner.temp }}/weekly-capos-qemu-bundle-arm64 - ARGOSFS_QEMU_WORKDIR: ${{ runner.temp }}/native-arm64-mixed-chaos-work - run: scripts/ci/prepare-qemu-test-env.sh - - - name: Run arm64 mixed chaos with production limits - env: - ARGOSFS_TEST_ARTIFACTS: ${{ runner.temp }}/native-arm64-mixed-chaos - ARGOSFS_QEMU_MEM: "1536" - ARGOSFS_QEMU_TIMEOUT: "5400" - ARGOSFS_QEMU_CHAOS_FILES: "280" - ARGOSFS_QEMU_CHAOS_WORKERS: "8" - run: scripts/qemu/mixed_chaos.sh - - - name: Upload validation artifacts - if: always() - uses: actions/upload-artifact@v7 - with: - name: native-arm64-mixed-chaos-validation - path: ${{ runner.temp }}/native-arm64-mixed-chaos - if-no-files-found: ignore