name: Publish Docker image on: push: branches: - main paths-ignore: - './**/*.md' - 'LICENSE' release: types: - created env: GITHUB_REF_NAME: ${{ github.event.release.tag_name }} IMAGE_NAME: cdalvaro/docker-salt-master PLATFORMS: linux/amd64,linux/arm64,linux/arm/v7 CACHE_PATH: /tmp/.buildx-docker-salt-master-cache EXTRA_REGISTRIES: ghcr.io quay.io jobs: publish: name: Publish runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Cache Docker layers uses: actions/cache@v2.1.4 with: path: ${{ env.CACHE_PATH }} key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - name: Login to Docker Container Registry uses: docker/login-action@v1 with: username: ${{ github.repository_owner }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.CR_PAT }} - name: Login to Quay.io Container Registry uses: docker/login-action@v1 with: registry: quay.io username: ${{ secrets.QUAYIO_USERNAME }} password: ${{ secrets.QUAYIO_PASSWORD }} - name: Prepare metadata id: metadata run: | # Tags DOCKER_IMAGE="${IMAGE_NAME}:${GITHUB_REF_NAME:-latest}" TAGS="${DOCKER_IMAGE}" for registry in ${EXTRA_REGISTRIES}; do TAGS="${TAGS},${registry}/${DOCKER_IMAGE}" done # Build args VCS_REF="${GITHUB_SHA::8}" CREATED_ON="$(date +"%Y-%m-%d %H:%M:%S%:z")" echo ::set-output name=tags::${TAGS} echo ::set-output name=vcs_ref::${VCS_REF} echo ::set-output name=created_on::${CREATED_ON} - name: Build uses: docker/build-push-action@v2 with: context: . file: ./Dockerfile platforms: ${{ env.PLATFORMS }} build-args: | VCS_REF=${{ steps.metadata.outputs.vcs_ref }} BUILD_DATE=${{ steps.metadata.outputs.created_on }} cache-from: type=local,src=${{ env.CACHE_PATH }} cache-to: type=local,dest=${{ env.CACHE_PATH }} push: true tags: ${{ steps.metadata.outputs.tags }}