Commit Graph

10 Commits

Author SHA1 Message Date
Peter Pistorius ec1b9d12c6 fix: add repository field for npm OIDC provenance verification 2026-03-16 07:31:17 +13:00
github-actions[bot] b67be925f1 chore: version packages 2026-03-15 17:00:23 +00:00
Peter Pistorius 38af50c9b2 fix: prevent generic pool from stealing runner-targeted jobs (#47)
When a runner-specific job was seeded, it was stored in both state.jobs
(generic pool) and state.runnerJobs (runner-targeted). A runner polling
before its own job was seeded could fall back to state.jobs and steal
another runner's job, leaving the original runner spinning indefinitely.

Fix: runner-targeted jobs now go only into state.runnerJobs. The generic
pool is reserved for jobs without runner affinity.

Adds three tests covering the race condition, concurrent stress with
8 runners, and the job-theft scenario.

Closes #47
2026-03-16 05:41:47 +13:00
Peter Pistorius 6c7ebad5b9 Merge pull request #57 from redwoodjs/feat/workflow-compatibility
feat: workflow compatibility — cross-job outputs, job-level if, fail-fast
2026-03-15 20:36:06 +13:00
Peter Pistorius d543138c0c feat: cross-job output capture via synthetic step + DTU parsing
The runner's FinalizeJob deletes _temp/_runner_file_commands/ inside the
container before exit, making  files unreachable from the host.

Solution: inject a synthetic 'Capture outputs' step (runs with if:always())
that reads all set_output_* files and echoes them as ::agent-ci-output::key=value.
The DTU parses these prefixed lines and persists them to outputs.json in the
runner's log directory. On job completion, local-job.ts reads outputs.json and
attaches the outputs to the JobResult.

Pipeline verified end-to-end — all 8 smoke tests pass:
- Cross-job outputs (setup-outputs → consume-outputs) ✅
- Job-level if:always() ✅
- Matrix shards with fail-fast:false ✅
- Artifacts, services, env vars ✅

All 279 unit tests pass.
2026-03-15 20:18:37 +13:00
Peter Pistorius b2c061ba1f fix: capture step outputs via DTU and fix _runner_file_commands path
- Fix extractStepOutputs path: _temp/_runner_file_commands/ (not root)
- DTU outputs endpoint now captures and persists outputs.json
- local-job.ts reads outputs.json from log dir instead of work dir
- Add smoke test jobs for cross-job outputs and if:always()

All 279 tests pass.
2026-03-15 19:22:17 +13:00
github-actions[bot] ad5cc3e83c chore: version packages 2026-03-13 14:11:46 +00:00
Peter Pistorius 2a488cee1f Bump versions. 2026-03-13 15:24:29 +02:00
Peter Pistorius 9441452c07 chore: prepare initial release 2026-03-13 15:11:14 +02:00
Peter Pistorius c8dd79f478 chore: move cli and dtu-github-actions into packages/ 2026-03-13 00:07:29 +02:00