buildx #2001
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: buildx | |
| on: | |
| schedule: | |
| - cron: "37 04 * * *" | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| jobs: | |
| buildx: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| docker-file: | |
| - path: 8/jdk/18 | |
| tags: "8-jdk-18 8-jdk-hydrogen" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le | |
| - path: 8/jdk/18/alpine | |
| tags: "8-alpine-jdk-18 8-alpine-jdk-hydrogen" | |
| platforms: linux/amd64 | |
| - path: 8/jdk/20 | |
| tags: "8-jdk-20 8-jdk-iron" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le | |
| - path: 8/jdk/20/alpine | |
| tags: "8-alpine-jdk-20 8-alpine-jdk-iron" | |
| platforms: linux/amd64 | |
| - path: 8/jre/18 | |
| tags: "8-jre-18 8-jre-hydrogen 8-18 8-hydrogen" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le | |
| - path: 8/jre/18/alpine | |
| tags: "8-alpine-18 8-alpine-hydrogen 8-alpine-jre-18 8-alpine-jre-hydrogen" | |
| platforms: linux/amd64 | |
| - path: 8/jre/20 | |
| tags: "8-jre-20 8-jre-iron 8-20 8-iron" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le | |
| - path: 8/jre/20/alpine | |
| tags: "8-alpine-20 8-alpine-iron 8-alpine-jre-20 8-alpine-jre-iron" | |
| platforms: linux/amd64 | |
| - path: 11/jdk/18 | |
| tags: "11-jdk-18 11-jdk-hydrogen" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7 | |
| - path: 11/jdk/18/alpine | |
| tags: "11-alpine-jdk-18 11-alpine-jdk-hydrogen" | |
| platforms: linux/amd64 | |
| - path: 11/jdk/20 | |
| tags: "11-jdk-20 11-jdk-iron" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7 | |
| - path: 11/jdk/20/alpine | |
| tags: "11-alpine-jdk-20 11-alpine-jdk-iron" | |
| platforms: linux/amd64 | |
| - path: 11/jre/18 | |
| tags: "11-18 11-hydrogen 11-jre-18 11-jre-hydrogen" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7 | |
| - path: 11/jre/18/alpine | |
| tags: "11-alpine-18 11-alpine-hydrogen 11-alpine-jre-18 11-alpine-jre-hydrogen" | |
| platforms: linux/amd64 | |
| - path: 11/jre/20 | |
| tags: "11-20 11-iron 11-jre-20 11-jre-iron" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7 | |
| - path: 11/jre/20/alpine | |
| tags: "11-alpine-20 11-alpine-iron 11-alpine-jre-20 11-alpine-jre-iron" | |
| platforms: linux/amd64 | |
| - path: 17/jdk/18 | |
| tags: "17-jdk-18 17-jdk-hydrogen jdk-18 jdk-18-hydrogen" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7 | |
| - path: 17/jdk/18/alpine | |
| tags: "alpine-jdk-18 alpine-jdk-hydrogen 17-alpine-jdk-18 17-alpine-jdk-hydrogen" | |
| platforms: linux/amd64 | |
| - path: 17/jdk/20 | |
| tags: "17-jdk-20 17-jdk-iron jdk-20 jdk-20-iron" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7 | |
| - path: 17/jdk/20/alpine | |
| tags: "17-alpine-jdk-20 17-alpine-jdk-iron" | |
| platforms: linux/amd64 | |
| - path: 17/jre/18 | |
| tags: "17-18 17-hydrogen 17-jre-18 17-jre-hydrogen" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7 | |
| - path: 17/jre/18/alpine | |
| tags: "17-alpine-18 17-alpine-hydrogen 17-alpine-jre-18 17-alpine-jre-hydrogen" | |
| platforms: linux/amd64 | |
| - path: 17/jre/20 | |
| tags: "17-20 17-iron 17-jre-20 17-jre-iron" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7 | |
| - path: 17/jre/20/alpine | |
| tags: "17-alpine-20 17-alpine-iron 17-alpine-jre-20 17-alpine-jre-iron" | |
| platforms: linux/amd64 | |
| - path: 21/jdk/18 | |
| tags: "21-jdk-18 21-jdk-hydrogen jdk-18 jdk-18-hydrogen" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le | |
| - path: 21/jdk/18/alpine | |
| tags: "alpine-jdk-18 alpine-jdk-hydrogen 21-alpine-jdk-18 21-alpine-jdk-hydrogen" | |
| platforms: linux/amd64 | |
| - path: 21/jdk/20 | |
| tags: "21-jdk-20 21-jdk-iron jdk-20 jdk-20-iron" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le | |
| - path: 21/jdk/20/alpine | |
| tags: "alpine-jdk-20 alpine-jdk-iron 21-alpine-jdk-20 21-alpine-jdk-iron" | |
| platforms: linux/amd64 | |
| - path: 21/jre/18 | |
| tags: "21-18 21-hydrogen 21-jre-18 21-jre-hydrogen" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le | |
| - path: 21/jre/18/alpine | |
| tags: "21-alpine-18 21-alpine-hydrogen 21-alpine-jre-18 21-alpine-jre-hydrogen alpine-18 alpine-hydrogen alpine-jre-18 alpine-jre-hydrogen" | |
| platforms: linux/amd64 | |
| - path: 21/jre/20 | |
| tags: "21-20 21-iron 21-jre-20 21-jre-iron" | |
| platforms: linux/amd64,linux/arm64,linux/ppc64le | |
| - path: 21/jre/20/alpine | |
| tags: "21-alpine-20 21-alpine-iron 21-alpine-jre-20 21-alpine-jre-iron alpine-20 alpine-iron alpine-jre-20 alpine-jre-iron" | |
| platforms: linux/amd64 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4.2.2 | |
| - name: Workaround Docker bug in runner | |
| run: | | |
| sudo rm /etc/docker/daemon.json | |
| sudo systemctl restart docker | |
| - name: Prepare | |
| id: prepare | |
| run: | | |
| DOCKER_IMAGE=timbru31/java-node | |
| TEMP="${{ matrix.docker-file.tags }}" | |
| TAGZ=($TEMP) | |
| VERSION=${TAGZ[0]} | |
| for i in "${!TAGZ[@]}"; do | |
| if [ "$i" -eq "0" ]; | |
| then | |
| TAGS="${DOCKER_IMAGE}:${TAGZ[$i]}" | |
| else | |
| TAGS="${TAGS},${DOCKER_IMAGE}:${TAGZ[$i]}" | |
| fi | |
| done | |
| echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT | |
| echo "version=${VERSION}" >> $GITHUB_OUTPUT | |
| echo "tags=${TAGS}" >> $GITHUB_OUTPUT | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3.2.0 | |
| - name: Set up Docker Buildx | |
| id: buildx | |
| uses: docker/setup-buildx-action@v3.7.1 | |
| with: | |
| install: true | |
| - name: Available platforms | |
| run: echo ${{ steps.buildx.outputs.platforms }} | |
| - name: Docker Buildx (build) | |
| uses: docker/build-push-action@v6.10.0 | |
| if: success() && !contains(github.ref, 'master') | |
| with: | |
| push: false | |
| context: ./${{ matrix.docker-file.path }} | |
| file: ./${{ matrix.docker-file.path }}/Dockerfile | |
| build-args: REFRESHED_AT=$(date +%Y-%m-%d) | |
| platforms: ${{ matrix.docker-file.platforms }} | |
| tags: ${{ steps.prepare.outputs.tags }} | |
| - name: Docker Login | |
| if: success() && github.event_name != 'pull_request' && contains(github.ref, 'master') | |
| uses: docker/login-action@v3.3.0 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Docker Buildx (push) | |
| uses: docker/build-push-action@v6.10.0 | |
| if: success() && github.event_name != 'pull_request' && contains(github.ref, 'master') | |
| with: | |
| push: true | |
| context: ./${{ matrix.docker-file.path }} | |
| file: ./${{ matrix.docker-file.path }}/Dockerfile | |
| build-args: REFRESHED_AT=$(date +%Y-%m-%d) | |
| platforms: ${{ matrix.docker-file.platforms }} | |
| tags: ${{ steps.prepare.outputs.tags }} | |
| - name: Inspect Image | |
| if: always() && github.event_name != 'pull_request' && contains(github.ref, 'master') | |
| run: | | |
| docker buildx imagetools inspect ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }} | |
| - name: Clear | |
| if: always() && github.event_name != 'pull_request' | |
| run: | | |
| rm -f ${HOME}/.docker/config.json |