name: Build and Push on: push: branches: - master tags: - 'v*' jobs: docker: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Prepare tags id: tag env: HUB_IMAGE: jakejarvis/hugo-extended GHCR_IMAGE: ghcr.io/jakejarvis/hugo-extended run: | TAGS="${HUB_IMAGE}:latest,${GHCR_IMAGE}:latest" # If triggered by a new tag, add a version tag to the image if [[ $GITHUB_REF == refs/tags/* ]]; then VERSION=${GITHUB_REF#refs/tags/v} TAGS="$TAGS,${HUB_IMAGE}:${VERSION},${GHCR_IMAGE}:${VERSION}" fi # Set output parameters echo ::set-output name=tags::${TAGS} - name: Set up QEMU uses: docker/setup-qemu-action@master with: platforms: all - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@master - name: Cache Docker layers uses: actions/cache@v2 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - name: Login to DockerHub if: github.event_name != 'pull_request' uses: docker/login-action@v1 with: username: jakejarvis password: ${{ secrets.DOCKER_HUB_TOKEN }} - name: Login to GitHub Container Registry if: github.event_name != 'pull_request' uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GHCR_PAT }} - name: Build and push id: build uses: docker/build-push-action@v2 with: builder: ${{ steps.buildx.outputs.name }} context: ./ file: ./Dockerfile platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.tag.outputs.tags }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Image digest run: echo ${{ steps.build.outputs.digest }}