ci: raise golangci-lint to 30m, test to 40m, job ceiling to 50m (mc#1099)
CI / Shellcheck (E2E scripts) (pull_request) Blocked by required conditions
CI / Canvas Deploy Reminder (pull_request) Blocked by required conditions
CI / Python Lint & Test (pull_request) Blocked by required conditions
CI / all-required (pull_request) Blocked by required conditions
E2E API Smoke Test / E2E API Smoke Test (pull_request) Blocked by required conditions
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Blocked by required conditions
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Waiting to run
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Blocked by required conditions
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 26s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 28s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 2m12s
E2E API Smoke Test / detect-changes (pull_request) Successful in 2m15s
CI / Detect changes (pull_request) Successful in 2m25s
lint-mask-pr-atomicity / lint-mask-pr-atomicity (pull_request) Failing after 2m28s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m49s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 42s
gate-check-v3 / gate-check (pull_request) Successful in 22s
qa-review / approved (pull_request) Successful in 43s
sop-tier-check / tier-check (pull_request) Successful in 23s
sop-checklist / all-items-acked (pull_request) Successful in 26s
security-review / approved (pull_request) Successful in 40s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 3m23s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 2m27s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Successful in 3m8s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 4m6s
CI / Canvas (Next.js) (pull_request) Successful in 16m1s
CI / Platform (Go) (pull_request) Failing after 17m7s

Cold runner reality on staging:
  fetch-depth:0 clone     ~5-10m
  Go toolchain            ~5-10m
  go mod download         ~2-5m
  go build + go vet      ~2-5m
  golangci-lint install  ~2-5m
  golangci-lint run      ~2-5m  (project .golangci.yaml disables errcheck)
  go test               ~16-20m  (cold cache)
  = up to 50m total

Changes vs origin/staging ci.yml:
  - golangci-lint --timeout: 3m → 30m (override project ceiling)
  - go test -timeout:         10m → 40m
  - job timeout-minutes:       15m → 50m

No --no-config added (project .golangci.yaml disables errcheck
correctly; v2.x errcheck finds 30+ violations in test files).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-15 13:19:58 +00:00
parent 76609f4129
commit 0eabae735d
+10 -10
View File
@@ -145,10 +145,9 @@ jobs:
# the diagnostic step with its own continue-on-error: true (line 203).
# Flip confirmed by CI / Platform (Go) status = success on main HEAD 363905d3.
continue-on-error: false
# Job-level ceiling. The go test step below runs with a per-step 10m timeout;
# this cap catches any step that leaks past that. Set well above 10m so
# the per-step timeout is the active constraint.
timeout-minutes: 15
# mc#1099: job-level ceiling raised to 50m. Cold runner: golangci-lint
# (~15-20m pre-lint setup + ~5m lint) + test suite (~16-20m) = ~36-45m.
timeout-minutes: 50
defaults:
run:
working-directory: workspace-server
@@ -174,7 +173,9 @@ jobs:
run: go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.12.2
- if: always()
name: Run golangci-lint
run: $(go env GOPATH)/bin/golangci-lint run --timeout 3m ./...
# mc#1099: cold runner takes ~15-20m pre-lint + ~5m lint. Override
# workspace-server/.golangci.yaml 3m ceiling with --timeout 30m.
run: $(go env GOPATH)/bin/golangci-lint run --timeout 30m ./...
- if: always()
name: Diagnostic — per-package verbose 60s
run: |
@@ -193,11 +194,10 @@ jobs:
continue-on-error: true
- if: always()
name: Run tests with race detection and coverage
# Explicit timeout: cold runner cache causes OOM kills at ~4m39s on the
# full ./... suite with race detection + coverage. A 10m per-step timeout
# lets the suite complete on cold cache (~5-7m) while failing cleanly
# instead of OOM-killing. The job-level timeout (15m) is a backstop.
run: go test -race -timeout 10m -coverprofile=coverage.out ./...
# mc#1099: cold runner test suite takes ~16-20m with race detection.
# Raised 10m → 40m so the suite completes on cold cache. The job-level
# timeout (50m) is the backstop.
run: go test -race -timeout 40m -coverprofile=coverage.out ./...
- if: always()
name: Per-file coverage report