GH-1051 Add integrational tests #11
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: MC Plugin Compatibility Test | |
| on: | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| jobs: | |
| test-minecraft-versions: | |
| runs-on: self-hosted | |
| strategy: | |
| matrix: | |
| mc_version: [1.18.2, 1.19.4, 1.20.6, 1.21.7] | |
| env: | |
| MC_VERSION: ${{ matrix.mc_version }} | |
| PLUGIN_GLOB: "eternalcore-plugin/build/libs/EternalCore*.jar" | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: adopt | |
| java-version: 17 | |
| - name: Make gradlew executable | |
| run: chmod +x gradlew | |
| - name: Build the plugin JAR | |
| run: ./gradlew clean eternalcore-plugin:shadowJar | |
| - name: Find plugin JAR | |
| id: find-jar | |
| run: | | |
| PLUGIN_JAR=$(find ./eternalcore-plugin/build/libs -name 'EternalCore*.jar' | head -n1) | |
| echo "PLUGIN_JAR=$PLUGIN_JAR" >> $GITHUB_ENV | |
| if [ -z "$PLUGIN_JAR" ]; then | |
| echo "❌ Plugin JAR not found!" | |
| exit 1 | |
| fi | |
| - name: Get latest PaperMC build number | |
| id: get_build_number | |
| run: | | |
| BUILD_NUMBER=$(curl -s "https://api.papermc.io/v2/projects/paper/versions/${MC_VERSION}/builds" \ | |
| | jq '.builds | max_by(.build) | .build') | |
| echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT | |
| - name: Setup PaperMC server for $MC_VERSION | |
| run: | | |
| mkdir mc-server | |
| cd mc-server | |
| wget "https://api.papermc.io/v2/projects/paper/versions/${MC_VERSION}/builds/${{ steps.get_build_number.outputs.build_number }}/downloads/paper-${MC_VERSION}-${{ steps.get_build_number.outputs.build_number }}.jar" \ | |
| -O paper.jar | |
| mkdir plugins | |
| cp "../$PLUGIN_JAR" plugins/ | |
| - name: Agree to EULA | |
| run: echo "eula=true" > mc-server/eula.txt | |
| - name: Configure server.properties | |
| run: | | |
| cat > mc-server/server.properties <<EOF | |
| allow-nether=false | |
| level-type=FLAT | |
| max-world-size=16 | |
| EOF | |
| - name: Configure bukkit.yml | |
| run: | | |
| cat > mc-server/bukkit.yml <<EOF | |
| settings: | |
| allow-end: false | |
| EOF | |
| - name: Run server and fail on errors | |
| working-directory: mc-server | |
| run: | | |
| java -Xmx1G -jar paper.jar nogui > server.log 2>&1 & | |
| PID=$! | |
| echo "Server PID: $PID" | |
| sleep 60 | |
| kill $PID || true | |
| wait $PID || true | |
| if grep -iE 'error|exception|failed' server.log; then | |
| echo "❌ Errors in server.log" | |
| cat server.log | |
| exit 1 | |
| else | |
| echo "✅ No errors detected" | |
| fi |