name: buildx on: schedule: - cron: "37 06 * * 1" pull_request: push: jobs: buildx: runs-on: ubuntu-latest strategy: fail-fast: false matrix: docker-file: - path: 1.16 tags: "1.16" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.16-3.13 tags: "1.16-3.13" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.17 tags: "1.17" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.17-3.13 tags: "1.17-3.13" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.18 tags: "1.18" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.18-nofaccessat2 tags: "1.18-nofaccessat2" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.19 tags: "1.19" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.19-nofaccessat2 tags: "1.19-nofaccessat2" platforms: linux/amd64,linux/arm64,linux/386 - path: "1.20" tags: "1.20" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.20-nofaccessat2 tags: "1.20-nofaccessat2" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.21 tags: "1.21" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.21-nofaccessat2 tags: "1.21-nofaccessat2" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.22 tags: "1.22" platforms: linux/amd64,linux/arm64,linux/386 - path: 1.22-nofaccessat2 tags: "1.22-nofaccessat2" platforms: linux/amd64,linux/arm64,linux/386 steps: - name: Checkout uses: actions/checkout@v4 - name: Prepare id: prepare run: | DOCKER_IMAGE=neur0toxine/golang-alpine 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 ::set-output name=docker_image::${DOCKER_IMAGE} echo ::set-output name=version::${VERSION} echo ::set-output name=tags::${TAGS} - name: Set up QEMU uses: docker/setup-qemu-action@v3.0.0 - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v3.0.0 with: install: true - name: Available platforms run: echo ${{ steps.buildx.outputs.platforms }} - name: Docker Buildx (build) uses: docker/build-push-action@v5.1.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() && contains(github.ref, 'master') uses: docker/login-action@v3.0.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Docker Buildx (push) uses: docker/build-push-action@v5.1.0 if: success() && 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