diff --git a/.github/workflows/rust-ci-full-nextest-platform.yml b/.github/workflows/rust-ci-full-nextest-platform.yml index 3fdf7b51ee..87ffe56a8e 100644 --- a/.github/workflows/rust-ci-full-nextest-platform.yml +++ b/.github/workflows/rust-ci-full-nextest-platform.yml @@ -47,6 +47,10 @@ on: required: false default: false type: boolean + retry_archive: + required: false + default: false + type: boolean # Caller workflow-level env does not flow through workflow_call, so keep the # Cargo git transport hardening on the archive and shard jobs directly here. @@ -57,7 +61,10 @@ jobs: archive: name: Build nextest archive runs-on: ${{ inputs.archive_runner_group != '' && fromJSON(format('{{"group":"{0}","labels":"{1}"}}', inputs.archive_runner_group, inputs.archive_runner_labels)) || inputs.archive_runner != '' && inputs.archive_runner || inputs.runner_group != '' && fromJSON(format('{{"group":"{0}","labels":"{1}"}}', inputs.runner_group, inputs.runner_labels)) || inputs.runner }} + continue-on-error: ${{ inputs.retry_archive }} timeout-minutes: 60 + outputs: + completed: ${{ steps.archive_completed.outputs.completed }} defaults: run: working-directory: codex-rs @@ -71,7 +78,7 @@ jobs: SCCACHE_CACHE_SIZE: 10G NEXTEST_ARCHIVE_FILE: nextest-${{ inputs.artifact_id }}.tar.zst TEST_HELPERS_ARTIFACT: nextest-test-helpers-${{ inputs.artifact_id }} - steps: + steps: &archive_steps - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false @@ -249,6 +256,11 @@ jobs: if-no-files-found: error retention-days: 1 + - name: Mark archive complete + id: archive_completed + shell: bash + run: echo "completed=true" >> "$GITHUB_OUTPUT" + - name: Save cargo home cache if: always() && !cancelled() && steps.cache_cargo_home_restore.outputs.cache-hit != 'true' continue-on-error: true @@ -286,9 +298,30 @@ jobs: echo '```'; } >> "$GITHUB_STEP_SUMMARY" + archive_retry: + name: Retry build nextest archive + needs: archive + if: inputs.retry_archive && always() && needs.archive.outputs.completed != 'true' + runs-on: ${{ inputs.archive_runner_group != '' && fromJSON(format('{{"group":"{0}","labels":"{1}"}}', inputs.archive_runner_group, inputs.archive_runner_labels)) || inputs.archive_runner != '' && inputs.archive_runner || inputs.runner_group != '' && fromJSON(format('{{"group":"{0}","labels":"{1}"}}', inputs.runner_group, inputs.runner_labels)) || inputs.runner }} + timeout-minutes: 60 + outputs: + completed: ${{ steps.archive_completed.outputs.completed }} + defaults: + run: + working-directory: codex-rs + env: + ARCHIVE_CACHE_RUNNER: ${{ inputs.archive_runner != '' && inputs.archive_runner || inputs.runner }} + USE_SCCACHE: ${{ inputs.use_sccache && 'true' || 'false' }} + CARGO_INCREMENTAL: "0" + SCCACHE_CACHE_SIZE: 10G + NEXTEST_ARCHIVE_FILE: nextest-${{ inputs.artifact_id }}.tar.zst + TEST_HELPERS_ARTIFACT: nextest-test-helpers-${{ inputs.artifact_id }} + steps: *archive_steps + shard: name: Tests shard ${{ matrix.shard }}/4 - needs: archive + needs: [archive, archive_retry] + if: always() && (needs.archive.outputs.completed == 'true' || needs.archive_retry.outputs.completed == 'true') runs-on: ${{ inputs.runner_group != '' && fromJSON(format('{{"group":"{0}","labels":"{1}"}}', inputs.runner_group, inputs.runner_labels)) || inputs.runner }} timeout-minutes: 60 defaults: diff --git a/.github/workflows/rust-ci-full.yml b/.github/workflows/rust-ci-full.yml index 084e663bfd..9d9cfe2509 100644 --- a/.github/workflows/rust-ci-full.yml +++ b/.github/workflows/rust-ci-full.yml @@ -489,7 +489,6 @@ jobs: tests_linux_arm64: name: Tests — ubuntu-24.04-arm - aarch64-unknown-linux-gnu - continue-on-error: true uses: ./.github/workflows/rust-ci-full-nextest-platform.yml with: runner: ubuntu-24.04-arm @@ -499,21 +498,7 @@ jobs: profile: ci-test artifact_id: linux-arm64 use_sccache: true - secrets: inherit - - tests_linux_arm64_retry: - name: Tests — ubuntu-24.04-arm - aarch64-unknown-linux-gnu (retry) - needs: tests_linux_arm64 - if: always() && needs.tests_linux_arm64.result != 'success' - uses: ./.github/workflows/rust-ci-full-nextest-platform.yml - with: - runner: ubuntu-24.04-arm - runner_group: codex-runners - runner_labels: codex-linux-arm64 - target: aarch64-unknown-linux-gnu - profile: ci-test - artifact_id: linux-arm64-retry - use_sccache: true + retry_archive: true secrets: inherit tests_windows_x64: @@ -559,7 +544,6 @@ jobs: tests_macos_aarch64, tests_linux_x64_remote, tests_linux_arm64, - tests_linux_arm64_retry, tests_windows_x64, tests_windows_arm64, ] @@ -577,7 +561,6 @@ jobs: echo "test macos : ${{ needs.tests_macos_aarch64.result }}" echo "test linux : ${{ needs.tests_linux_x64_remote.result }}" echo "test arm64 : ${{ needs.tests_linux_arm64.result }}" - echo "test arm64 retry: ${{ needs.tests_linux_arm64_retry.result }}" echo "test winx64: ${{ needs.tests_windows_x64.result }}" echo "test winarm: ${{ needs.tests_windows_arm64.result }}" [[ '${{ needs.argument_comment_lint_package.result }}' == 'success' ]] || { echo 'argument_comment_lint_package failed'; exit 1; } @@ -587,7 +570,7 @@ jobs: [[ '${{ needs.lint_build.result }}' == 'success' ]] || { echo 'lint_build failed'; exit 1; } [[ '${{ needs.tests_macos_aarch64.result }}' == 'success' ]] || { echo 'tests_macos_aarch64 failed'; exit 1; } [[ '${{ needs.tests_linux_x64_remote.result }}' == 'success' ]] || { echo 'tests_linux_x64_remote failed'; exit 1; } - [[ '${{ needs.tests_linux_arm64.result }}' == 'success' || '${{ needs.tests_linux_arm64_retry.result }}' == 'success' ]] || { echo 'tests_linux_arm64 failed'; exit 1; } + [[ '${{ needs.tests_linux_arm64.result }}' == 'success' ]] || { echo 'tests_linux_arm64 failed'; exit 1; } [[ '${{ needs.tests_windows_x64.result }}' == 'success' ]] || { echo 'tests_windows_x64 failed'; exit 1; } [[ '${{ needs.tests_windows_arm64.result }}' == 'success' ]] || { echo 'tests_windows_arm64 failed'; exit 1; }