Skip to content

fix: dep conflicts

fix: dep conflicts #42

Workflow file for this run

name: CI
on:
pull_request:
branches: [ v2.x, v3.x ]
jobs:
unit-tests:
name: Unit tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Java 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
- name: Build and install MockBukkit (minecraft/v26 HEAD)
run: |
git clone --depth=1 --branch minecraft/v26 https://github.com/MockBukkit/MockBukkit.git /tmp/MockBukkit
MBVER="dev-$(git -C /tmp/MockBukkit rev-parse --short HEAD)"
echo "MOCKBUKKIT_VERSION=$MBVER" >> "$GITHUB_ENV"
cd /tmp/MockBukkit && ./gradlew publishToMavenLocal -xtest -xjavadoc
- name: Run unit tests
run: mvn -B -ntp -Dmockbukkit.version="$MOCKBUKKIT_VERSION" test
feature-tests:
name: Feature tests
runs-on: ubuntu-latest
needs: unit-tests
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Java 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
- name: Build and install MockBukkit (minecraft/v26 HEAD)
run: |
git clone --depth=1 --branch minecraft/v26 https://github.com/MockBukkit/MockBukkit.git /tmp/MockBukkit
MBVER="dev-$(git -C /tmp/MockBukkit rev-parse --short HEAD)"
echo "MOCKBUKKIT_VERSION=$MBVER" >> "$GITHUB_ENV"
cd /tmp/MockBukkit && ./gradlew publishToMavenLocal -xtest -xjavadoc
- name: Run feature tests
run: mvn -B -ntp -Pfeature-tests -Dtest=*FeatureTest -Dmockbukkit.version="$MOCKBUKKIT_VERSION" test
# ──────────────────────────────────────────────────────────────────────────
# SMOKE TESTS — verify EzAfk loads without errors on each server platform.
#
# All smoke jobs build with JDK 25:
# paper-api 26.x uses Java 25 class files (version 69); older JDKs
# cannot read them and the build fails.
# maven.compiler.release=21 → plugin JAR targets Java 21 bytecode,
# compatible with every Minecraft 1.21+ server (Java 21+ required).
#
# Build uses -Dmaven.test.skip=true (avoids needing the MockBukkit install).
# ──────────────────────────────────────────────────────────────────────────
spigot-smoke-test:
name: Spigot 1.21.4 (build JDK 25 / server JDK 21)
runs-on: ubuntu-latest
needs: [unit-tests, feature-tests]
# BuildTools for Spigot 1.21.4 requires Java 21–24 (javaVersions [65,68]).
# JDK 25 is rejected by BuildTools even though the server itself runs fine
# on any Java 21+ JVM. Strategy: compile the plugin with JDK 25 (paper-api
# 26.x needs it), then swap to JDK 21 for BuildTools and server launch.
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up build JDK 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
- name: Build plugin JAR (JDK 25)
run: mvn -B -ntp -Dmaven.test.skip=true package
- name: Set up server JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '21'
- name: Cache Spigot 1.21.4 JAR
id: spigot-cache
uses: actions/cache@v4
with:
path: spigot-1.21.4.jar
key: spigot-1.21.4-buildtools-v1
- name: Build Spigot 1.21.4 via BuildTools
if: steps.spigot-cache.outputs.cache-hit != 'true'
run: |
git config --global user.email "ci@ci.local"
git config --global user.name "CI"
curl -fsSL \
https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar \
-o BuildTools.jar
java -jar BuildTools.jar --rev 1.21.4 --compile SPIGOT
- name: Configure server
run: |
mkdir -p smoke-server/plugins
cp target/ezafk-*.jar smoke-server/plugins/EzAfk.jar
cp spigot-1.21.4.jar smoke-server/
echo "eula=true" > smoke-server/eula.txt
printf '%s\n' \
"online-mode=false" \
"level-type=flat" \
"generate-structures=false" \
"max-players=0" \
> smoke-server/server.properties
- name: Run server and wait for ready
run: |
cd smoke-server
java -Xms512m -Xmx1g -jar spigot-1.21.4.jar --nogui > server.log 2>&1 &
SERVER_PID=$!
ELAPSED=0
while [ $ELAPSED -lt 120 ]; do
sleep 2; ELAPSED=$((ELAPSED + 2))
if grep -q "Done (" server.log 2>/dev/null; then
echo "Server ready after ${ELAPSED}s"; break
fi
if ! kill -0 $SERVER_PID 2>/dev/null; then
echo "Server process exited after ${ELAPSED}s"; break
fi
done
kill $SERVER_PID 2>/dev/null || true
wait $SERVER_PID 2>/dev/null || true
- name: Assert no EzAfk errors
run: |
LOG=smoke-server/server.log
if grep -qE "(SEVERE|ERROR).*EzAfk|Could not load.*EzAfk" "$LOG"; then
echo "::error::EzAfk logged errors on Spigot 1.21.4 / Java 21 startup:"
grep -E "(SEVERE|ERROR).*EzAfk|Could not load.*EzAfk" "$LOG"
exit 1
fi
if grep -qiE "Enabling EzAfk" "$LOG"; then
echo "Spigot 1.21.4 / Java 21 smoke test passed."
else
echo "::warning::EzAfk 'Enabling EzAfk' not found in log — plugin may not have loaded within the timeout"
fi
- name: Upload server log
if: always()
uses: actions/upload-artifact@v4
with:
name: spigot-1.21.4-java21-smoke-log
path: smoke-server/server.log
retention-days: 7
paper-smoke-test:
name: Paper 1.21.11 / Java 25
runs-on: ubuntu-latest
needs: [unit-tests, feature-tests]
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
- name: Build plugin JAR
run: mvn -B -ntp -Dmaven.test.skip=true package
- name: Resolve latest Paper 1.21.11 build
id: paper
run: |
USER_AGENT="EzAfk-CI/1.0 (https://github.com/ez-plugins/EzAfk)"
BUILDS_JSON=$(curl -fsSL -H "User-Agent: ${USER_AGENT}" "https://fill.papermc.io/v3/projects/paper/versions/1.21.11/builds")
BUILD=$(printf '%s' "$BUILDS_JSON" | \
python3 -c "import sys,json; builds=json.load(sys.stdin); chosen=next((b for b in builds if b.get('channel')=='STABLE'), None) or (builds[0] if builds else None); assert chosen, 'No Paper builds returned'; print(chosen['id'])")
DOWNLOAD_URL=$(printf '%s' "$BUILDS_JSON" | \
python3 -c "import sys,json; builds=json.load(sys.stdin); chosen=next((b for b in builds if b.get('channel')=='STABLE'), None) or (builds[0] if builds else None); assert chosen, 'No Paper builds returned'; print(chosen['downloads']['server:default']['url'])")
echo "build=${BUILD}" >> "$GITHUB_OUTPUT"
echo "download_url=${DOWNLOAD_URL}" >> "$GITHUB_OUTPUT"
echo "Resolved: Paper 1.21.11 build ${BUILD}"
- name: Download Paper 1.21.11 server JAR
run: |
mkdir -p smoke-server/plugins
curl -fsSL -H "User-Agent: EzAfk-CI/1.0 (https://github.com/ez-plugins/EzAfk)" \
"${{ steps.paper.outputs.download_url }}" \
-o smoke-server/paper.jar
- name: Copy plugin JAR
run: cp target/ezafk-*.jar smoke-server/plugins/EzAfk.jar
- name: Configure server
run: |
echo "eula=true" > smoke-server/eula.txt
printf '%s\n' \
"online-mode=false" \
"level-type=flat" \
"generate-structures=false" \
"max-players=0" \
> smoke-server/server.properties
- name: Run server and wait for ready
run: |
cd smoke-server
java -Xms512m -Xmx1g -jar paper.jar --nogui > server.log 2>&1 &
SERVER_PID=$!
ELAPSED=0
while [ $ELAPSED -lt 120 ]; do
sleep 2; ELAPSED=$((ELAPSED + 2))
if grep -q "Done (" server.log 2>/dev/null; then
echo "Server ready after ${ELAPSED}s"; break
fi
if ! kill -0 $SERVER_PID 2>/dev/null; then
echo "Server process exited after ${ELAPSED}s"; break
fi
done
kill $SERVER_PID 2>/dev/null || true
wait $SERVER_PID 2>/dev/null || true
- name: Assert no EzAfk errors
run: |
LOG=smoke-server/server.log
if grep -qE "(SEVERE|ERROR).*EzAfk|Could not load.*EzAfk" "$LOG"; then
echo "::error::EzAfk logged errors on Paper 1.21.11 / Java 25 startup:"
grep -E "(SEVERE|ERROR).*EzAfk|Could not load.*EzAfk" "$LOG"
exit 1
fi
if grep -qiE "Enabling EzAfk" "$LOG"; then
echo "Paper 1.21.11 / Java 25 smoke test passed."
else
echo "::warning::EzAfk 'Enabling EzAfk' not found in log — plugin may not have loaded within the timeout"
fi
- name: Upload server log
if: always()
uses: actions/upload-artifact@v4
with:
name: paper-1.21.11-java25-smoke-log
path: smoke-server/server.log
retention-days: 7
folia-smoke-test:
name: Folia 1.21.11 / Java 25
runs-on: ubuntu-latest
needs: [unit-tests, feature-tests]
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
- name: Build plugin JAR
run: mvn -B -ntp -Dmaven.test.skip=true package
- name: Resolve latest Folia 1.21.11 build
id: folia
run: |
USER_AGENT="EzAfk-CI/1.0 (https://github.com/ez-plugins/EzAfk)"
BUILDS_JSON=$(curl -fsSL -H "User-Agent: ${USER_AGENT}" "https://fill.papermc.io/v3/projects/folia/versions/1.21.11/builds")
BUILD=$(printf '%s' "$BUILDS_JSON" | \
python3 -c "import sys,json; builds=json.load(sys.stdin); chosen=next((b for b in builds if b.get('channel')=='STABLE'), None) or (builds[0] if builds else None); assert chosen, 'No Folia builds returned'; print(chosen['id'])")
DOWNLOAD_URL=$(printf '%s' "$BUILDS_JSON" | \
python3 -c "import sys,json; builds=json.load(sys.stdin); chosen=next((b for b in builds if b.get('channel')=='STABLE'), None) or (builds[0] if builds else None); assert chosen, 'No Folia builds returned'; print(chosen['downloads']['server:default']['url'])")
echo "build=${BUILD}" >> "$GITHUB_OUTPUT"
echo "download_url=${DOWNLOAD_URL}" >> "$GITHUB_OUTPUT"
echo "Resolved: Folia 1.21.11 build ${BUILD}"
- name: Download Folia 1.21.11 server JAR
run: |
mkdir -p smoke-server/plugins
curl -fsSL -H "User-Agent: EzAfk-CI/1.0 (https://github.com/ez-plugins/EzAfk)" \
"${{ steps.folia.outputs.download_url }}" \
-o smoke-server/folia.jar
- name: Copy plugin JAR
run: cp target/ezafk-*.jar smoke-server/plugins/EzAfk.jar
- name: Configure server
run: |
echo "eula=true" > smoke-server/eula.txt
printf '%s\n' \
"online-mode=false" \
"level-type=flat" \
"generate-structures=false" \
"max-players=0" \
> smoke-server/server.properties
- name: Run server and wait for ready
run: |
cd smoke-server
java -Xms512m -Xmx1g -jar folia.jar --nogui > server.log 2>&1 &
SERVER_PID=$!
ELAPSED=0
while [ $ELAPSED -lt 120 ]; do
sleep 2; ELAPSED=$((ELAPSED + 2))
if grep -q "Done (" server.log 2>/dev/null; then
echo "Server ready after ${ELAPSED}s"; break
fi
if ! kill -0 $SERVER_PID 2>/dev/null; then
echo "Server process exited after ${ELAPSED}s"; break
fi
done
kill $SERVER_PID 2>/dev/null || true
wait $SERVER_PID 2>/dev/null || true
- name: Assert no EzAfk errors
run: |
LOG=smoke-server/server.log
if grep -qE "(SEVERE|ERROR).*EzAfk|Could not load.*EzAfk" "$LOG"; then
echo "::error::EzAfk logged errors on Folia 1.21.11 / Java 25 startup:"
grep -E "(SEVERE|ERROR).*EzAfk|Could not load.*EzAfk" "$LOG"
exit 1
fi
if grep -qiE "Enabling EzAfk" "$LOG"; then
echo "Folia 1.21.11 / Java 25 smoke test passed."
else
echo "::warning::EzAfk 'Enabling EzAfk' not found in log — server may not have finished loading within the timeout"
fi
- name: Upload server log
if: always()
uses: actions/upload-artifact@v4
with:
name: folia-1.21.11-java25-smoke-log
path: smoke-server/server.log
retention-days: 7