name: Publish to Github Container Registry
on:
push:
paths:
- 'uv.lock'
- 'pyproject.toml'
- '.python-version'
- 'README.md'
- 'src/**'
- 'Dockerfile'
- '.dockerignore'
- '.github/workflows/publish-image.yml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
publish-docker-image:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
attestations: write
id-token: write
env:
IMAGE: ghcr.io/${{ github.repository }}
steps:
- uses: actions/checkout@v6
- name: Normalize image name
run: echo "IMAGE=${IMAGE,,}" >> $GITHUB_ENV
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: |
${{ env.IMAGE }}:latest
cache-from: type=ghs
cache-to: type=gha,mode=max