diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 7ea0fc0b..7f61da77 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -10,22 +10,39 @@ on: 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 -env: - DOCKER_IMAGE: ${{ secrets.docker_username }}/libation - jobs: - docker: + configure: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 + build_and_push: + runs-on: ubuntu-latest + needs: configure + strategy: + # Prevent a failure in one image from stopping the other builds + fail-fast: false + matrix: + os: + - ubuntu-latest + arch: + - amd64 + - arm64 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -38,9 +55,21 @@ jobs: username: ${{ secrets.docker_username }} password: ${{ secrets.docker_token }} - - name: Build and push - uses: docker/build-push-action@v5 + - 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: - push: true - build-args: 'FOLDER_NAME=Linux-chardonnay' - tags: ${{ env.DOCKER_IMAGE }}:latest,${{ env.DOCKER_IMAGE }}:${{ inputs.version }} + platforms: ${{ matrix.arch }} + push: ${{ steps.metadata.outputs.tags != ''}} + tags: ${{ steps.metadata.outputs.tags }} + labels: ${{ steps.metadata.outputs.labels }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fd1cc731..be07bd8e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,6 +23,7 @@ jobs: uses: ./.github/workflows/docker.yml with: version: ${{ needs.prerelease.outputs.version }} + release: true secrets: docker_username: ${{ secrets.DOCKERHUB_USERNAME }} docker_token: ${{ secrets.DOCKERHUB_TOKEN }} diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 0ae4c712..d8b302ec 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -12,3 +12,11 @@ on: jobs: build: uses: ./.github/workflows/build.yml + docker: + uses: ./.github/workflows/docker.yml + with: + version: ${GITHUB_SHA} + release: false + secrets: + docker_username: ${{ secrets.DOCKERHUB_USERNAME }} + docker_token: ${{ secrets.DOCKERHUB_TOKEN }}