Build and Publish Pipeline
A standard pipeline for a Dockerized application: check out the code, run tests, build a Docker image, and push it to the container registry.
What this page covers
- Full pipeline workflow file for a Docker application
- Multi-platform builds (amd64, arm64) with buildx
- Tagging strategy: branch, SHA, and semantic version tags
- Publishing to Nexus or Distribution Registry
- Triggering a deployment after a successful push
Complete pipeline example
# .gitea/workflows/build-publish.yml
name: Build and Publish
on:
push:
branches: [main]
tags: ['v*']
env:
REGISTRY: registry.example.com
IMAGE_NAME: ${{ gitea.repository }}
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Build and push
uses: docker/build-push-action@v5
with:
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }}