diff --git a/.github/workflows/e2e-ddil.yml b/.github/workflows/e2e-ddil.yml index 42d5cd8b1..647ef55bf 100644 --- a/.github/workflows/e2e-ddil.yml +++ b/.github/workflows/e2e-ddil.yml @@ -10,10 +10,11 @@ on: required: false default: "" -# Shared with e2e-nightly.yml, e2e-suites.yml and e2e-ddil.yml: every one of -# them provisions on the same runner pools and the same hypervisors, so two in +# Shared with e2e-nightly.yml and e2e-suites.yml: every one of them provisions +# many cells on the same runner pools and the same hypervisors, so two in # flight compete for their disks and their libvirt guests. Queued rather than -# cancelled — a run in progress is someone's result, not a stale one. +# cancelled — a run in progress is someone's result, not a stale one. e2e.yml +# is outside the group: one cluster per run is cheap enough to overlap. concurrency: group: e2e-hypervisors cancel-in-progress: false diff --git a/.github/workflows/e2e-nightly.yml b/.github/workflows/e2e-nightly.yml index eb7f31959..e6fc1d647 100644 --- a/.github/workflows/e2e-nightly.yml +++ b/.github/workflows/e2e-nightly.yml @@ -21,17 +21,17 @@ permissions: # second rather than cancelling it: a dispatch is usually a verification run # and discarding it loses the result someone is waiting on. # -# The group is shared with e2e.yml, e2e-suites.yml and e2e-ddil.yml, which draw -# on the same runner pools. A per-workflow group let a push-triggered E2E land -# on top of a nightly cell and take libvirt down under both. +# The group is shared with e2e-suites.yml and e2e-ddil.yml, which draw on the +# same runner pools. e2e.yml is deliberately outside it: a single-cluster push +# run is cheap enough to overlap, and grouping it stalled every push behind a +# multi-hour nightly. concurrency: group: e2e-hypervisors cancel-in-progress: false # Scheduled runs are loaded from the default branch (main), so the schedule # trigger must stay in sync on main for cron to fire — and so must the -# concurrency block above. main currently has none, which is why the nightly -# cron runs ungrouped and a dispatch on any branch can land on top of it. +# concurrency block above. env: GIT_BRANCH: ${{ github.event_name == 'schedule' && 'dev' || github.ref_name }} UBUNTU_GOLD_IMAGE: /mnt/disk1/gold-images/spinifex-image-builder-ubuntu-26.04.qcow2 @@ -125,7 +125,7 @@ jobs: max-parallel: 3 matrix: include: ${{ fromJSON(needs.select.outputs.cells) }} - runs-on: [ self-hosted, "${{ matrix.runner }}" ] + runs-on: [self-hosted, "${{ matrix.runner }}"] timeout-minutes: ${{ matrix.timeout_minutes || 50 }} env: TOFU_LOG: /tmp/e2e-nightly-cell-${{ matrix.cell }}-${{ github.run_id }}.log @@ -1478,7 +1478,17 @@ jobs: # every cell so this runs last; always() so a red run is the one it describes. summary: name: run summary - needs: [select, matrix, baremetal, diskperf, iso-single, iso-multi, performance, stress] + needs: + [ + select, + matrix, + baremetal, + diskperf, + iso-single, + iso-multi, + performance, + stress, + ] if: always() runs-on: ubuntu-26.04 steps: diff --git a/.github/workflows/e2e-suites.yml b/.github/workflows/e2e-suites.yml index 630cac569..31a40c6bb 100644 --- a/.github/workflows/e2e-suites.yml +++ b/.github/workflows/e2e-suites.yml @@ -43,10 +43,11 @@ on: required: false default: "" -# Shared with e2e-nightly.yml, e2e-suites.yml and e2e-ddil.yml: every one of -# them provisions on the same runner pools and the same hypervisors, so two in +# Shared with e2e-nightly.yml and e2e-ddil.yml: every one of them provisions +# many cells on the same runner pools and the same hypervisors, so two in # flight compete for their disks and their libvirt guests. Queued rather than -# cancelled — a run in progress is someone's result, not a stale one. +# cancelled — a run in progress is someone's result, not a stale one. e2e.yml +# is outside the group: one cluster per run is cheap enough to overlap. concurrency: group: e2e-hypervisors cancel-in-progress: false diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index af89a551f..72ea33b84 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -24,27 +24,15 @@ on: required: false default: "" -# Shared with e2e-nightly.yml, e2e-suites.yml and e2e-ddil.yml: every one of -# them provisions on the same runner pools and the same hypervisors, so two in -# flight compete for their disks and their libvirt guests. Queued rather than -# cancelled — a run in progress is someone's result, not a stale one. -concurrency: - group: e2e-hypervisors - cancel-in-progress: false - permissions: contents: read statuses: write - # actions: read lets the otel-job-id action look up a job's numeric id via - # the Actions API — github.job is only the YAML key, no context exposes it. actions: read env: GIT_BRANCH: ${{ github.ref_name }} SUITES: ${{ inputs.suites || 'e2e-single e2e-multinode e2e-cert e2e-lb e2e-iam e2e-partialblock' }} TEST_RUN: ${{ inputs.test_run || '' }} - # OTLP export to the central Elastic sink (wattle). Repo variable overrides; - # empty string disables telemetry entirely. SPINIFEX_OTLP_ENDPOINT: ${{ vars.SPINIFEX_OTLP_ENDPOINT || 'http://192.168.1.13:8200' }} SPINIFEX_OTEL_ATTRS: ci.run_id=${{ github.run_id }},ci.workflow=${{ github.workflow }}