build: Use build matrix instead of branches for variants

This commit is contained in:
Geoff Bourne
2022-01-28 21:49:29 -06:00
parent 8f8acc40f5
commit 0b71383146
19 changed files with 119 additions and 85 deletions

View File

@@ -3,29 +3,58 @@ on:
push:
branches:
- master
- java8-multiarch
- java8-openj9
- java11*
- java16*
- java17*
- test/**
tags:
- "[0-9]+.[0-9]+.[0-9]+"
- "[0-9]+.[0-9]+.[0-9]+-java8-multiarch"
- "[0-9]+.[0-9]+.[0-9]+-java8-openj9"
- "[0-9]+.[0-9]+.[0-9]+-java11*"
- "[0-9]+.[0-9]+.[0-9]+-java16*"
paths-ignore:
- "*.md"
- "docs/**"
- "examples/**"
env:
IMAGE_TO_TEST: itzg/minecraft-server:test-${{ github.repository_owner }}-${{ github.run_id }}
jobs:
build:
if: github.repository == 'itzg/docker-minecraft-server'
strategy:
matrix:
variant:
- latest
- java17
- java17-openj9
- java8-multiarch
- java8-openj9
- java11
- java11-openj9
include:
- variant: latest
baseImage: eclipse-temurin:17
tagPrefix: ""
platforms: linux/amd64,linux/arm/v7,linux/arm64
- variant: java17
baseImage: eclipse-temurin:17
tagPrefix: java17-
platforms: linux/amd64,linux/arm/v7,linux/arm64
- variant: java17-openj9
baseImage: ibm-semeru-runtimes:open-17-jdk
tagPrefix: java17-openj9-
platforms: linux/amd64
- variant: java8-multiarch
baseImage: eclipse-temurin:8-jdk
tagPrefix: java8-
platforms: linux/amd64,linux/arm/v7,linux/arm64
- variant: java8-openj9
baseImage: eclipse-temurin:8-jdk
tagPrefix: java8-openj9-
platforms: linux/amd64
- variant: java11
baseImage: adoptopenjdk:11-jdk-hotspot
tagPrefix: java11-
platforms: linux/amd64,linux/arm/v7,linux/arm64
- variant: java11-openj9
baseImage: adoptopenjdk:11-jdk-openj9
tagPrefix: java11-openj9-
platforms: linux/amd64
env:
IMAGE_TO_TEST: itzg/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}
runs-on: ubuntu-20.04
steps:
- name: Checkout
@@ -38,10 +67,11 @@ jobs:
images: |
itzg/minecraft-server
tags: |
type=ref,event=branch
type=ref,event=tag
type=ref,event=tag,enable=${{ matrix.variant == 'java17' }}
type=ref,event=tag,prefix=${{ matrix.variant }}-
type=raw,value=${{ matrix.variant }}
flavor: |
latest=${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
latest=${{ matrix.variant == 'java17' }}
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
@@ -57,9 +87,7 @@ jobs:
- name: Build for test
uses: docker/build-push-action@v2.8.0
if: github.ref_name == 'master' || startsWith(github.ref_name, 'test/')
with:
context: .
platforms: linux/amd64
tags: ${{ env.IMAGE_TO_TEST }}
# ensure latest base image is used
@@ -70,8 +98,6 @@ jobs:
# no cache-to to avoid cross-cache update from next build step
- name: Run tests
# It is assumed that image variants are merged from master and tested there
if: github.ref_name == 'master' || startsWith(github.ref_name, 'test/')
run: |
tests/test.sh
@@ -79,15 +105,13 @@ jobs:
id: docker_build
uses: docker/build-push-action@v2.8.0
with:
context: .
platforms: linux/amd64,linux/arm/v7,linux/arm64
push: true
platforms: ${{ matrix.platforms }}
push: false
tags: ${{ steps.meta.outputs.tags }}
# ensure latest base image is used
pull: true
cache-from: type=gha
cache-to: type=gha,mode=max
labels: ${{ steps.meta.outputs.labels }}
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
build-args: |
BASE_IMAGE=${{ matrix.baseImage }}
cache-from: type=gha,scope=${{ matrix.variant }}
cache-to: type=gha,mode=max,scope=${{ matrix.variant }}