name: Build and push Docker image on: push: branches: [ main ] paths: - 'docker/**' pull_request: branches: [ main ] paths: - 'docker/**' # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: build: runs-on: ubuntu-22.04 env: USERNAME: infinitime steps: - uses: actions/checkout@v3 - name: Log in to Docker Hub if: github.event_name != 'pull_request' uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_HUB_LOGIN_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Set up Docker metadata id: meta uses: docker/metadata-action@v4 with: images: | ${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build tags: | type=sha type=raw,value=latest - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v2 - name: Build and push if: github.event_name != 'pull_request' uses: docker/build-push-action@v3 with: context: ./docker/ file: ./docker/Dockerfile platforms: linux/amd64,linux/arm64 builder: ${{ steps.buildx.outputs.name }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build:buildcache cache-to: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build:buildcache,mode=max - name: Build if: github.event_name == 'pull_request' uses: docker/build-push-action@v3 with: context: ./docker/ file: ./docker/Dockerfile platforms: linux/amd64,linux/arm64 builder: ${{ steps.buildx.outputs.name }} push: false cache-from: type=registry,ref=${{ secrets.DOCKER_HUB_IMAGE_USERNAME || env.USERNAME }}/infinitime-build:buildcache