mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 02:54:26 +00:00
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>
52 lines
1.4 KiB
YAML
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"
|