# docker.yml # Reusable workflow that builds a docker image for Libation. --- name: docker on: workflow_call: inputs: version: type: string description: "Version number" required: true release: type: boolean description: "Is this a release build?" required: true secrets: docker_username: required: true docker_token: required: true jobs: build_and_push: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v5 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub if: ${{ inputs.release }} uses: docker/login-action@v3 with: username: ${{ secrets.docker_username }} password: ${{ secrets.docker_token }} - name: Generate docker image tags id: metadata uses: docker/metadata-action@v5 with: flavor: | latest=true images: | name=${{ secrets.docker_username }}/libation tags: | type=raw,value=${{ inputs.version }},enable=${{ inputs.release }} - name: Build and push image uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm64 push: ${{ steps.metadata.outputs.tags != ''}} cache-from: type=gha cache-to: type=gha,mode=max tags: ${{ steps.metadata.outputs.tags }} labels: ${{ steps.metadata.outputs.labels }}