Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 62 additions & 28 deletions .github/workflows/build-multiarch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,61 @@ 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*"
- "[0-9]+.[0-9]+.[0-9]+-*"
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:
fail-fast: false
matrix:
variant:
- java17
- java17-openj9
- java8-multiarch
- java8-openj9
- java11
- java11-openj9
include:
- variant: java17
baseImage: eclipse-temurin:17
tagPrefix: java17-
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: LATEST
- variant: java17-openj9
baseImage: ibm-semeru-runtimes:open-17-jdk
tagPrefix: java17-openj9-
platforms: linux/amd64,linux/arm64
mcVersion: LATEST
- variant: java8-multiarch
baseImage: eclipse-temurin:8-jdk
tagPrefix: java8-
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.12.2
- variant: java8-openj9
baseImage: ibm-semeru-runtimes:open-8-jdk
tagPrefix: java8-openj9-
platforms: linux/amd64,linux/arm64
mcVersion: 1.12.2
- variant: java11
baseImage: adoptopenjdk:11-jdk-hotspot
tagPrefix: java11-
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.16.5
- variant: java11-openj9
baseImage: ibm-semeru-runtimes:open-11-jdk
tagPrefix: java11-openj9-
platforms: linux/amd64,linux/arm64
mcVersion: 1.16.5
env:
IMAGE_TO_TEST: itzg/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}
runs-on: ubuntu-20.04
steps:
- name: Checkout
Expand All @@ -38,10 +70,13 @@ 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' }}
labels: |
org.opencontainers.image.authors=Geoff Bourne <itzgeoff@gmail.com>

- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
Expand All @@ -57,37 +92,36 @@ 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
pull: true
# load into daemon for test usage in next step
load: true
push: false
cache-from: type=gha
build-args: |
BASE_IMAGE=${{ matrix.baseImage }}
cache-from: type=gha,scope=${{ matrix.variant }}
# 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/')
env:
MINECRAFT_VERSION: ${{ matrix.mcVersion }}
run: |
tests/test.sh

- name: Build and push
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: ${{ github.ref_name == 'master' }}
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 }}
5 changes: 2 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
FROM eclipse-temurin:17-jdk

LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>"
ARG BASE_IMAGE=eclipse-temurin:17-jdk
FROM ${BASE_IMAGE}

RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive \
Expand Down
6 changes: 0 additions & 6 deletions docker-versions-create.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,6 @@
# Use this variable to indicate a list of branches that docker hub is watching
branches_list=(
'java8'
'java8-multiarch'
'java8-openj9'
'java11'
'java11-openj9'
'java17'
'java17-openj9'
)

function TrapExit {
Expand Down
58 changes: 28 additions & 30 deletions scripts/start-configuration
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,12 @@ if [[ $RCON_PASSWORD_FILE ]]; then
log ""
fi

# Some Docker management UIs grab all the image declared variables and present them for configuration.
# When upgrading images across Java versions, that creates a mismatch in PATH's expected by base image.
if ! which java > /dev/null; then
log "Fixing PATH to include java"
PATH="${PATH}:/opt/java/openjdk/bin"
log "ERROR: PATH should not be explicitly passed into the container"
log " Remove configuration of that variable."
exit 1
fi

export VERSIONS_JSON=https://launchermeta.mojang.com/mc/game/version_manifest.json
Expand Down Expand Up @@ -116,83 +119,78 @@ fi
log "Resolving type given ${TYPE}"
case "${TYPE^^}" in
*BUKKIT|SPIGOT)
exec ${SCRIPTS:-/}start-deployBukkitSpigot "$@"
exec "${SCRIPTS:-/}start-deployBukkitSpigot" "$@"
;;

PAPER)
exec ${SCRIPTS:-/}start-deployPaper "$@"
exec "${SCRIPTS:-/}start-deployPaper" "$@"
;;

FORGE)
if versionLessThan 1.17; then
log "**********************************************************************"
log "WARNING: The image tag itzg/minecraft-server:java8 is recommended"
log " since some mods require Java 8"
log " Exception traces reporting ClassCastException: class jdk.internal.loader.ClassLoaders\$AppClassLoader"
log " can be fixed with java8"
log "**********************************************************************"
fi
exec ${SCRIPTS:-/}start-deployForge "$@"
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployForge" "$@"
;;

FABRIC)
exec ${SCRIPTS:-/}start-deployFabric "$@"
exec "${SCRIPTS:-/}start-deployFabric" "$@"
;;

FTBA)
exec ${SCRIPTS:-/}start-deployFTBA "$@"
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployFTBA" "$@"
;;

FTB|CURSEFORGE)
log "**********************************************************************"
log "NOTE: Some mods and modpacks may require Java 8."
log " If so, use itzg/minecraft-server:java8"
log "**********************************************************************"
exec ${SCRIPTS:-/}start-deployCF "$@"
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployCF" "$@"
;;

VANILLA)
exec "${SCRIPTS:-/}start-deployVanilla" "$@"
;;

SPONGEVANILLA)
exec ${SCRIPTS:-/}start-deploySpongeVanilla "$@"
exec "${SCRIPTS:-/}start-deploySpongeVanilla" "$@"
;;

CUSTOM)
exec ${SCRIPTS:-/}start-deployCustom "$@"
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployCustom" "$@"
;;

MAGMA)
exec ${SCRIPTS:-/}start-deployMagma "$@"
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployMagma" "$@"
;;

MOHIST)
exec ${SCRIPTS:-/}start-deployMohist "$@"
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployMohist" "$@"
;;

CATSERVER)
exec ${SCRIPTS:-/}start-deployCatserver "$@"
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployCatserver" "$@"
;;

PURPUR)
exec ${SCRIPTS:-/}start-deployPurpur "$@"
exec "${SCRIPTS:-/}start-deployPurpur" "$@"
;;

AIRPLANE)
exec ${SCRIPTS:-/}start-deployAirplane "$@"
exec "${SCRIPTS:-/}start-deployAirplane" "$@"
;;

PUFFERFISH)
exec ${SCRIPTS:-/}start-deployPufferfish "$@"
exec "${SCRIPTS:-/}start-deployPufferfish" "$@"
;;

CANYON)
exec ${SCRIPTS:-/}start-deployCanyon "$@"
exec "${SCRIPTS:-/}start-deployCanyon" "$@"
;;

LIMBO)
exec ${SCRIPTS:-/}start-deployLimbo "$@"
exec "${SCRIPTS:-/}start-deployLimbo" "$@"
;;

CRUCIBLE)
Expand Down
1 change: 0 additions & 1 deletion scripts/start-deployAirplane
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,5 @@ fi

# Normalize on Spigot for later operations
export FAMILY=SPIGOT
export SKIP_LOG4J_CONFIG=true

exec "${SCRIPTS:-/}start-spiget" "$@"
1 change: 0 additions & 1 deletion scripts/start-deployBukkitSpigot
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,5 @@ fi

# Normalize on Spigot for operations below
export FAMILY=SPIGOT
export SKIP_LOG4J_CONFIG=true

exec ${SCRIPTS:-/}start-spiget "$@"
1 change: 0 additions & 1 deletion scripts/start-deployCanyon
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,5 @@ fi

# Normalize on Spigot for later operations
export FAMILY=SPIGOT
export SKIP_LOG4J_CONFIG=true

exec ${SCRIPTS:-/}start-spiget "$@"
9 changes: 4 additions & 5 deletions scripts/start-deployCatserver
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/bin/bash

. ${SCRIPTS:-/}start-utils
# shellcheck source=start-utils
. "${SCRIPTS:-/}start-utils"
set -o pipefail
set -e

Expand All @@ -26,8 +27,6 @@ if [ ! -f ${SERVER} ]; then
curl -H "Accept:application/octet-stream" -o "$SERVER" -fsSL https://api.github.com/repos/Luohuayu/CatServer/releases/assets/${latestJarId}
fi

export SKIP_LOG4J_CONFIG=true

export FAMILY=HYBRID
# Continue to Final Setup
exec ${SCRIPTS:-/}start-setupWorld "$@"

exec "${SCRIPTS:-/}start-setupWorld" "$@"
1 change: 0 additions & 1 deletion scripts/start-deployCrucible
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ if [ ! -d "$librariesDir" ]; then
fi

export SERVER
export SKIP_LOG4J_CONFIG=true
export FAMILY=HYBRID

exec "${SCRIPTS:-$(dirname "$0")}/start-setupWorld" "$@"
5 changes: 3 additions & 2 deletions scripts/start-deployCustom
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/bin/bash

. ${SCRIPTS:-/}start-utils
# shellcheck source=start-utils
. "${SCRIPTS:-/}start-utils"
isDebugging && set -x

if isURL ${CUSTOM_SERVER}; then
Expand Down Expand Up @@ -30,6 +31,6 @@ else

fi

export SKIP_LOG4J_CONFIG=true
export FAMILY=HYBRID

exec ${SCRIPTS:-/}start-setupWorld $@
4 changes: 3 additions & 1 deletion scripts/start-deployFTBA
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

ftbInstallMarker=".ftb-installed"

. ${SCRIPTS:-/}start-utils
# shellcheck source=start-utils
. "${SCRIPTS:-/}start-utils"
isDebugging && set -x
set -e

Expand Down Expand Up @@ -80,4 +81,5 @@ if ! [ -v SERVER ]; then
fi

export FAMILY=FORGE

exec ${SCRIPTS:-/}start-setupWorld $@
Loading