tag job uses anothrNick/github-tag-action with SA_TOKEN_ACTION_PUSH_TAGS secret
Removed: Docker Hub login, metadata-action, and :latest push on master branch
cron.yaml (nightly schedule)
Retains the same cron schedule (30 3 * * 3)
build-push job now requires test first
Removed: :latest tag — only publishes {tag}-latest when a tag exists
Added get-latest-tag step to discover the most recent git tag
tag.yaml (tag push)
build-push job now requires test first
Added -latest suffix tag alongside the type=ref,event=tag tag
pr.yaml
Unchanged
Rationale
Tests must pass before any image is built or pushed — prevents broken images from reaching registries
Avoids pushing :latest on every master push, which was overwriting stable tagged releases
Tagged releases always produce both :vX.Y.Z and :vX.Y.Z-latest for flexible consumption
This PR standardizes the CI workflows across main, cron, and tag triggers.
## Changes
### All three workflows (main.yaml, cron.yaml, tag.yaml)
- **Added mandatory `test` job** with hadolint linting followed by `docker build` + `bash tests/test.sh`
- All build/push jobs now require `test` to pass via `needs: [test]`
- Standardized job naming and structure
### main.yaml (push to master)
- Split the old `build-push` into separate `build` (image build only, no push) and `tag` (auto-tagging) jobs
- `build` job uses plain `docker build` (not build-push-action)
- `tag` job uses `anothrNick/github-tag-action` with `SA_TOKEN_ACTION_PUSH_TAGS` secret
- **Removed**: Docker Hub login, metadata-action, and `:latest` push on master branch
### cron.yaml (nightly schedule)
- Retains the same cron schedule (`30 3 * * 3`)
- `build-push` job now requires `test` first
- **Removed**: `:latest` tag — only publishes `{tag}-latest` when a tag exists
- Added `get-latest-tag` step to discover the most recent git tag
### tag.yaml (tag push)
- `build-push` job now requires `test` first
- Added `-latest` suffix tag alongside the `type=ref,event=tag` tag
### pr.yaml
- Unchanged
## Rationale
- Tests must pass before any image is built or pushed — prevents broken images from reaching registries
- Avoids pushing `:latest` on every master push, which was overwriting stable tagged releases
- Tagged releases always produce both `:vX.Y.Z` and `:vX.Y.Z-latest` for flexible consumption
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR standardizes the CI workflows across main, cron, and tag triggers.
Changes
All three workflows (main.yaml, cron.yaml, tag.yaml)
testjob with hadolint linting followed bydocker build+bash tests/test.shtestto pass vianeeds: [test]main.yaml (push to master)
build-pushinto separatebuild(image build only, no push) andtag(auto-tagging) jobsbuildjob uses plaindocker build(not build-push-action)tagjob usesanothrNick/github-tag-actionwithSA_TOKEN_ACTION_PUSH_TAGSsecret:latestpush on master branchcron.yaml (nightly schedule)
30 3 * * 3)build-pushjob now requirestestfirst:latesttag — only publishes{tag}-latestwhen a tag existsget-latest-tagstep to discover the most recent git tagtag.yaml (tag push)
build-pushjob now requirestestfirst-latestsuffix tag alongside thetype=ref,event=tagtagpr.yaml
Rationale
:lateston every master push, which was overwriting stable tagged releases:vX.Y.Zand:vX.Y.Z-latestfor flexible consumption