Refactor the monolithic docker-build.yaml into 4 specialized, independent Gitea Actions workflow files:
New workflows
File
Trigger
Purpose
.gitea/workflows/pr.yaml
pull_request
Hadolint linting + build + test suite
.gitea/workflows/main.yaml
push to master
Build & push latest + SHA-tagged image via Docker Buildx
.gitea/workflows/tag.yaml
push to master
Auto-bump version and push git tag
.gitea/workflows/cron.yaml
0 0 * * *
Nightly rebuild with nightly tag
Key changes
Separated concerns — each pipeline is independently triggerable, making failures and logs easier to reason about
Docker Buildx + metadata-action — replaces raw docker build/docker push with proper multi-platform-ready Buildx workflow using docker/metadata-action for consistent tagging
Fixed SHA pins — all actions pinned to specific commits (no floating tags):
actions/checkout @ df4cb1c0 (v6)
hadolint/hadolint-action @ 2332a7b7 (v3.3.0)
docker/setup-buildx-action @ d7f5e7f5
docker/login-action @ 650006c6
docker/metadata-action @ 80c7e94d
docker/build-push-action @ f9f3042f
anothrNick/github-tag-action @ 4ed44965 (v1.75.0)
Removed old combined docker-build.yaml (superseded by the 4 new files)
Legacy CI files (.gitlab-ci.yml, Jenkinsfile) left in place for reference
Workflow details
PR Checks (pr.yaml):
Runs hadolint on the Dockerfile
Builds the image with a CI tag
Executes tests/test.sh against the built image
Main (main.yaml):
Sets up Docker Buildx
Logs into Docker Hub via secrets
Generates metadata tags (latest on master, sha-*)
Builds and pushes the image
Tag Release (tag.yaml):
Auto-bumps version (patch by default) and pushes a v* tag on master pushes
Nightly Rebuild (cron.yaml):
Triggered daily at midnight
Builds and pushes a nightly tag alongside a SHA tag
## Summary
Refactor the monolithic `docker-build.yaml` into 4 specialized, independent Gitea Actions workflow files:
### New workflows
| File | Trigger | Purpose |
|------|---------|---------|
| `.gitea/workflows/pr.yaml` | `pull_request` | Hadolint linting + build + test suite |
| `.gitea/workflows/main.yaml` | `push` to `master` | Build & push latest + SHA-tagged image via Docker Buildx |
| `.gitea/workflows/tag.yaml` | `push` to `master` | Auto-bump version and push git tag |
| `.gitea/workflows/cron.yaml` | `0 0 * * *` | Nightly rebuild with `nightly` tag |
### Key changes
- **Separated concerns** — each pipeline is independently triggerable, making failures and logs easier to reason about
- **Docker Buildx + metadata-action** — replaces raw `docker build`/`docker push` with proper multi-platform-ready Buildx workflow using `docker/metadata-action` for consistent tagging
- **Fixed SHA pins** — all actions pinned to specific commits (no floating tags):
- `actions/checkout` @ `df4cb1c0` (v6)
- `hadolint/hadolint-action` @ `2332a7b7` (v3.3.0)
- `docker/setup-buildx-action` @ `d7f5e7f5`
- `docker/login-action` @ `650006c6`
- `docker/metadata-action` @ `80c7e94d`
- `docker/build-push-action` @ `f9f3042f`
- `anothrNick/github-tag-action` @ `4ed44965` (v1.75.0)
- **Removed** old combined `docker-build.yaml` (superseded by the 4 new files)
- Legacy CI files (`.gitlab-ci.yml`, `Jenkinsfile`) left in place for reference
### Workflow details
**PR Checks** (`pr.yaml`):
- Runs `hadolint` on the Dockerfile
- Builds the image with a CI tag
- Executes `tests/test.sh` against the built image
**Main** (`main.yaml`):
- Sets up Docker Buildx
- Logs into Docker Hub via secrets
- Generates metadata tags (`latest` on master, `sha-*`)
- Builds and pushes the image
**Tag Release** (`tag.yaml`):
- Auto-bumps version (`patch` by default) and pushes a `v*` tag on master pushes
**Nightly Rebuild** (`cron.yaml`):
- Triggered daily at midnight
- Builds and pushes a `nightly` tag alongside a SHA tag
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.
Summary
Refactor the monolithic
docker-build.yamlinto 4 specialized, independent Gitea Actions workflow files:New workflows
.gitea/workflows/pr.yamlpull_request.gitea/workflows/main.yamlpushtomaster.gitea/workflows/tag.yamlpushtomaster.gitea/workflows/cron.yaml0 0 * * *nightlytagKey changes
docker build/docker pushwith proper multi-platform-ready Buildx workflow usingdocker/metadata-actionfor consistent taggingactions/checkout@df4cb1c0(v6)hadolint/hadolint-action@2332a7b7(v3.3.0)docker/setup-buildx-action@d7f5e7f5docker/login-action@650006c6docker/metadata-action@80c7e94ddocker/build-push-action@f9f3042fanothrNick/github-tag-action@4ed44965(v1.75.0)docker-build.yaml(superseded by the 4 new files).gitlab-ci.yml,Jenkinsfile) left in place for referenceWorkflow details
PR Checks (
pr.yaml):hadolinton the Dockerfiletests/test.shagainst the built imageMain (
main.yaml):lateston master,sha-*)Tag Release (
tag.yaml):patchby default) and pushes av*tag on master pushesNightly Rebuild (
cron.yaml):nightlytag alongside a SHA tag