Skip to content

buildx

buildx #1967

Workflow file for this run

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.9.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.9.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