| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- name: docker
- on:
- push:
- tags:
- - "v*"
- workflow_dispatch:
- permissions:
- contents: read
- packages: write
- env:
- REGISTRY: ghcr.io
- IMAGE_NAME: ${{ github.repository }}
- jobs:
- build-and-push:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Lowercase repository owner for ghcr.io
- id: repo
- run: echo "name=$(echo '${{ github.repository }}' | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_OUTPUT"
- - name: Derive version from tag
- id: version
- run: |
- if [ "${GITHUB_REF_TYPE}" = "tag" ]; then
- echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
- else
- echo "version=0.0.0-dev" >> "$GITHUB_OUTPUT"
- fi
- echo "build_time=$(git show -s --format=%cI HEAD)" >> "$GITHUB_OUTPUT"
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
- - name: Log in to GHCR
- uses: docker/login-action@v3
- with:
- registry: ${{ env.REGISTRY }}
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
- - name: Build and push multi-arch image
- uses: docker/build-push-action@v6
- with:
- context: .
- file: ./Dockerfile
- platforms: linux/amd64,linux/arm64
- push: true
- build-args: |
- VERSION=${{ steps.version.outputs.version }}
- BUILD_TIME=${{ steps.version.outputs.build_time }}
- tags: |
- ${{ env.REGISTRY }}/${{ steps.repo.outputs.name }}:latest
- ${{ env.REGISTRY }}/${{ steps.repo.outputs.name }}:${{ steps.version.outputs.version }}
- cache-from: type=gha
- cache-to: type=gha,mode=max
|