## Problem
Monolithic test-build-push job runs all steps sequentially, with conditionals for push only on main. This makes it hard to see what failed and doesn't clearly separate concerns.
## Fix
Split into two jobs:
- **test**: Runs on all branches + PRs (go mod, vet, test, build binary)
- **build-push**: Runs only on main push after test passes
Move env vars to workflow level (cleaner, reused by both jobs).
## Result
- PRs: test job runs ✅ (no docker install, no registry push) ✅
- Main push: test → build-push → registry push ✅
---------
Co-authored-by: Test <[email protected]>
Reviewed-on: #3
Container override breaks docker socket access to dind sidecar.
Changes:
- Remove 'container: image: golang:1.26' (breaks dind socket access)
- Remove manual git config/checkout, use actions/checkout@v4
- Move docker.io install to conditional step before docker login
- Install Node.js for actions runtime
This workflow now works with the new runner setup (golang:1.26-bookworm label image with shared docker socket via dind sidecar). Resolves issues with docker build/push failing in CI.
---------
Co-authored-by: Test <[email protected]>
Reviewed-on: #2
Merge ci.yaml + build-push.yml into single CI pipeline. Single job: vet → test → build binary → build image → push. Image push gated on main push only. Fixed Dockerfile to golang:1.26, build cmd/worker, removed HTTP healthcheck.
---------
Co-authored-by: Test <[email protected]>
Reviewed-on: #1