GH-1051 Add integrational tests #7
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: | |
| 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 file | |
| id: find-jar | |
| run: | | |
| PLUGIN_JAR=$(find ./eternalcore-plugin/build/libs -name 'EternalCore*.jar' | head -n 1) | |
| echo "PLUGIN_JAR=$PLUGIN_JAR" >> $GITHUB_ENV | |
| echo "Found plugin jar: $PLUGIN_JAR" | |
| 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/${{ matrix.mc_version }}/builds" | jq '.builds | max_by(.build) | .build') | |
| echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT | |
| - name: Setup PaperMC server for version ${{ matrix.mc_version }} | |
| run: | | |
| mkdir mc-server | |
| cd mc-server | |
| echo "Downloading Paper ${{ matrix.mc_version }} build ${{ steps.get_build_number.outputs.build_number }}" | |
| wget "https://api.papermc.io/v2/projects/paper/versions/${{ matrix.mc_version }}/builds/${{ steps.get_build_number.outputs.build_number }}/downloads/paper-${{ matrix.mc_version }}-${{ steps.get_build_number.outputs.build_number }}.jar" -O paper.jar | |
| mkdir plugins | |
| cp ../${{ env.PLUGIN_JAR }} plugins/ | |
| - name: Agree to EULA | |
| run: echo "eula=true" > mc-server/eula.txt | |
| - name: Configure server.properties to speed up startup | |
| run: | | |
| cat > mc-server/server.properties <<EOF | |
| allow-nether=false | |
| level-type=FLAT | |
| max-world-size=16 | |
| EOF | |
| - name: Configure bukkit.yml to disable End | |
| run: | | |
| cat > mc-server/bukkit.yml <<EOF | |
| settings: | |
| allow-end: false | |
| EOF | |
| - name: Run Minecraft server ${{ matrix.mc_version }} and check logs | |
| working-directory: mc-server | |
| run: | | |
| java -Xmx1G -jar paper.jar nogui > server.log 2>&1 & | |
| SERVER_PID=$! | |
| echo "Server started with PID $SERVER_PID" | |
| sleep 60 | |
| kill $SERVER_PID | |
| wait $SERVER_PID || true | |
| echo "Checking logs for errors..." | |
| if grep -i -E 'error|exception|failed' server.log; then | |
| echo "❌ Errors found in server logs for version ${{ matrix.mc_version }}" | |
| cat server.log | |
| exit 1 | |
| else | |
| echo "✅ No errors found in server logs for version ${{ matrix.mc_version }}" | |
| fi |