Table of Contents

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 }}