name: Docker # Gitea Actions workflow: builds the Docker image and publishes it to the # Gitea Container Registry hosted on this Gitea instance. on: push: branches: - main - develop tags: - "v*.*.*" pull_request: branches: - main - develop jobs: build: runs-on: ubuntu-latest permissions: contents: read packages: write steps: # Derive the registry host from the Gitea instance URL (e.g. # https://gitea.example.com -> gitea.example.com). The Gitea Container # Registry is served from the instance root, so this works on any host. - name: Resolve registry host run: echo "REGISTRY=${GITHUB_SERVER_URL#*://}" >> "$GITHUB_ENV" - name: Checkout repository uses: actions/checkout@v4 # Set up BuildKit Docker container builder to be able to build # multi-platform images and export cache. - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 # Log into the Gitea Container Registry except on PR. - name: Log into registry ${{ env.REGISTRY }} if: github.event_name != 'pull_request' uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ vars.PACKAGES_USER || github.actor }} password: ${{ secrets.PACKAGES_TOKEN }} # Extract metadata (tags, labels) for Docker. - name: Extract Docker metadata id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ github.repository }} # Build and push the Docker image with Buildx (don't push on PR). - name: Build and push Docker image id: build-and-push uses: docker/build-push-action@v5 with: context: . push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} platforms: linux/amd64