diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index ddf0279..398f73a 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -283,7 +283,7 @@ jobs: needs.validate.result == 'success' runs-on: docker container: git.oblachno.oblachno.fyi/oblachno-oss/runner-images/ci-base:latest - timeout-minutes: 10 + timeout-minutes: 50 defaults: run: shell: bash @@ -321,7 +321,7 @@ jobs: run: | . .venv/bin/activate 2>/dev/null || true # Poll commit status until all required checks pass or fail - MAX_WAIT=600 # 10 minutes + MAX_WAIT=2400 # 40 minutes — covers the ~25-min molecule suite ELAPSED=0 while [ $ELAPSED -lt $MAX_WAIT ]; do STATUS=$(curl -s -H "Authorization: token $CI_GITEA_API_TOKEN" \ diff --git a/docs/specs/GRM-169.md b/docs/specs/GRM-169.md new file mode 100644 index 0000000..3407a93 --- /dev/null +++ b/docs/specs/GRM-169.md @@ -0,0 +1,48 @@ +# GRM-169: Fix auto-merge timeout — molecule wait exceeds 10-min job cap + +## Problem + +The `auto-merge` job in `ci.yml` polls molecule-tests status with +`MAX_WAIT=600` (10 minutes) inside a job capped at +`timeout-minutes: 10`. The molecule suite takes ~25 minutes under the +4-runner distribution. Result: every `pull_request` synchronize run of +auto-merge exhausts MAX_WAIT, prints `Timed out waiting for molecule +tests`, and fails — observed on PR #275 (run 5988) where all molecule +jobs were green but auto-merge died before they finished. The merge +only completed via a manual rerun-failed-jobs call after molecule was +already green. + +## Approach + +REQ-1: Raise the molecule wait budget in `.gitea/workflows/ci.yml` so it +exceeds the observed suite duration: `MAX_WAIT=2400` (40 minutes — ~1.6x +the observed 25-minute suite) and the job `timeout-minutes` to `50` +(wait budget plus setup/post overhead). + +REQ-2: No other behavior changes — the wait loop, success/failure/skipped +classification, and merge semantics stay identical. The job still runs +on every pull_request event; it simply no longer aborts early. + +## Test Plan + +- `make workflow-lint` (actionlint) passes on the edited file. +- `make workflow-dryrun` where available. +- Next PR's auto-merge run waits past the 10-minute mark and merges + after molecule turns green (verified on a subsequent PR). + +## Deploy Plan + +Merge via auto-merge — ironically exercised by this very PR's auto-merge +run: it must wait for this PR's own molecule jobs, demonstrating the fix +in production immediately. + +## Rollback Plan + +Revert the two changed lines. Risk of keeping the fix: none — a longer +wait can only extend a job that was previously guaranteed to fail. + +## Acceptance Criteria + +- [x] `MAX_WAIT` raised to 2400 in the auto-merge wait loop. +- [x] `timeout-minutes` raised to 50 on the auto-merge job. +- [x] `make workflow-lint` passes.