Files
computer-playbook/.github/workflows/call-test-runner-smoke.yml
kevinveenbirkenbachandClaude Opus 5 77d4c6669f fix(ci): keep every orchestrated job in the entry's concurrency group
A workflow the entries call declares its own concurrency group, and its jobs then leave the entry's group. The entry's cancel-in-progress no longer reaches them, so a superseded run keeps the runners its remaining jobs hold. Run 34614940508 held its runners after its successor arrived and only a manual force cancel ended it; its check runs carry no 'Canceling since a higher priority waiting request' annotation, only the forced cancel.

call-orchestrator.yml and call-test-runner-smoke.yml drop their groups. The smoke group was keyed on the caller's ref as well, so a manually dispatched smoke run cancelled the smoke job of an orchestrator run on the same ref. call-images-build-ci.yml and call-images-mirror-missing.yml keep theirs: their group deduplicates image builds across runs rather than scoping a single run, and it does not cancel.

The test asserts both halves, that the orchestrator declares no group and that every entry calling it carries group plus cancel-in-progress, and adds the chain below it. It finds the callers by their uses: line rather than by an entry-* filename, so a caller named otherwise cannot skip the requirement. It fails against HEAD, where call-test-runner-smoke.yml declares a group.

The cause is established negatively: no concurrency annotation exists on the superseded run. What would settle it is a run that supersedes another and cancels it, and that needs a push.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-12 09:20:47 +02:00

52 lines
1.4 KiB
YAML

name: "🏃 Test: Runner smoke"
run-name: "🏃 Test: Runner smoke (self-hosted)"
on:
workflow_dispatch:
inputs:
ref:
description: "🔀 Git ref to check out; empty takes the repo default branch."
required: false
default: ""
type: string
workflow_call:
inputs:
ref:
description: "Git ref to check out (branch, tag, or SHA). Defaults to the repo default branch."
required: false
default: ""
type: string
permissions:
contents: read
packages: read
jobs:
smoke:
name: 🏃 Runner pickup + DooD
runs-on: [self-hosted, linux]
timeout-minutes: 345
steps:
- name: 🔧 Fix workspace ownership
shell: bash
run: sudo chown -R "$(id -u):$(id -g)" "$GITHUB_WORKSPACE" 2>/dev/null || true
- uses: actions/checkout@v7.0.0
with:
ref: ${{ inputs.ref || github.sha }}
- name: ✅ Verify runner pickup + Docker (DooD) access
shell: bash
run: |
set -euo pipefail
echo ">>> Job picked up on self-hosted runner: $(hostname)"
docker version
docker info >/dev/null
docker run --rm hello-world
- name: 🔍 Dump runner state (on failure)
if: failure() || cancelled()
shell: bash
run: ./scripts/github/runner/dump_state.sh "runner-smoke failure"