@@ -91,10 +91,20 @@ jobs:
9191 - name : Run feature tests
9292 run : mvn -B -ntp -pl ezrtp-bukkit -am -Pmessage-tests -Dspotless.check.skip=true test
9393
94- folia -smoke-test :
95- name : Folia Smoke Test
94+ server -smoke-test :
95+ name : Server Smoke Test (${{ matrix.name }})
9696 runs-on : ubuntu-latest
9797 needs : [unit-tests, feature-tests]
98+ strategy :
99+ fail-fast : false
100+ matrix :
101+ include :
102+ - name : folia-latest
103+ project : folia
104+ version_selector : latest
105+ - name : paper-1.13
106+ project : paper
107+ version_selector : 1.13
98108 env :
99109 PAPERMC_USER_AGENT : EzRTP-CI/1.0 (https://github.com/${{ github.repository }})
100110
@@ -114,28 +124,37 @@ jobs:
114124 mvn -B -ntp -pl ezrtp-bukkit,ezrtp-paper -am -DskipTests -Dspotless.check.skip=true \
115125 package
116126
117- - name : Resolve latest Folia build
118- id : folia
127+ - name : Resolve server build (${{ matrix.name }})
128+ id : server
119129 run : |
120- PROJECT_URL="https://fill.papermc.io/v3/projects/folia"
130+ PROJECT="${{ matrix.project }}"
131+ PROJECT_URL="https://fill.papermc.io/v3/projects/${PROJECT}"
132+ SELECTOR="${{ matrix.version_selector }}"
121133 MC_VERSION=$(curl -fsSL -H "User-Agent: ${PAPERMC_USER_AGENT}" "${PROJECT_URL}" | \
122- python3 -c "import sys,json; versions=json.load(sys.stdin)['versions']; first_group=next(iter(versions)); print(versions[first_group][0])")
134+ python3 -c "import os,sys,json; data=json.load(sys.stdin)['versions']; versions=[v for group in data.values() for v in group]; uniq=sorted(set(versions), key=lambda s:[int(x) if x.isdigit() else x for x in s.replace('-', '.').split('.')]); selector=os.environ['SELECTOR'];
135+ if selector == 'latest' :
136+ print(uniq[-1]);
137+ else :
138+ matches=[v for v in uniq if v == selector or v.startswith(selector + '.')];
139+ assert matches, f'No versions matching selector {selector}';
140+ print(matches[0])")
123141 BUILDS_JSON=$(curl -fsSL -H "User-Agent : ${PAPERMC_USER_AGENT}" "${PROJECT_URL}/versions/${MC_VERSION}/builds")
124142 BUILD=$(printf '%s' "$BUILDS_JSON" | \
125143 python3 -c "import sys,json; builds=json.load(sys.stdin); stable=[b for b in builds if b.get('channel') == 'STABLE']; selected=(stable[0] if stable else builds[0]); print(selected['id'])")
126144 DOWNLOAD_URL=$(printf '%s' "$BUILDS_JSON" | \
127145 python3 -c "import sys,json; builds=json.load(sys.stdin); stable=[b for b in builds if b.get('channel') == 'STABLE']; selected=(stable[0] if stable else builds[0]); print(selected['downloads']['server:default']['url'])")
146+ echo "project=${PROJECT}" >> "$GITHUB_OUTPUT"
128147 echo "mc_version=${MC_VERSION}" >> "$GITHUB_OUTPUT"
129148 echo "build=${BUILD}" >> "$GITHUB_OUTPUT"
130149 echo "download_url=${DOWNLOAD_URL}" >> "$GITHUB_OUTPUT"
131- echo "Resolved: Folia ${MC_VERSION} build ${BUILD}"
150+ echo "Resolved : ${PROJECT} ${SELECTOR} -> ${MC_VERSION} build ${BUILD}"
132151
133- - name : Download Folia server JAR
152+ - name : Download server JAR
134153 run : |
135154 mkdir -p smoke-server/plugins
136155 curl -fsSL -H "User-Agent: ${PAPERMC_USER_AGENT}" \
137- "${{ steps.folia .outputs.download_url }}" \
138- -o smoke-server/folia .jar
156+ "${{ steps.server .outputs.download_url }}" \
157+ -o smoke-server/server .jar
139158
140159 - name : Copy plugin JARs
141160 run : |
@@ -155,7 +174,7 @@ jobs:
155174 - name : Run server and wait for ready
156175 run : |
157176 cd smoke-server
158- java -Xms512m -Xmx1g -jar folia .jar --nogui > server.log 2>&1 &
177+ java -Xms512m -Xmx1g -jar server .jar --nogui > server.log 2>&1 &
159178 SERVER_PID=$!
160179 ELAPSED=0
161180 while [ $ELAPSED -lt 120 ]; do
@@ -174,12 +193,12 @@ jobs:
174193 run : |
175194 LOG=smoke-server/server.log
176195 if grep -qiE "SEVERE.*[Ee]z[Rr][Tt][Pp]|Could not load.*[Ee]z[Rr][Tt][Pp]|Error.*[Ee]z[Rr][Tt][Pp]" "$LOG"; then
177- echo "::error::EzRTP logged errors on Folia startup:"
196+ echo "::error::EzRTP logged errors on server startup:"
178197 grep -iE "SEVERE.*[Ee]z[Rr][Tt][Pp]|Could not load.*[Ee]z[Rr][Tt][Pp]|Error.*[Ee]z[Rr][Tt][Pp]" "$LOG"
179198 exit 1
180199 fi
181200 if grep -q "Ready\." "$LOG"; then
182- echo "Folia smoke test passed — EzRTP reached Ready state."
201+ echo "Server smoke test passed — EzRTP reached Ready state."
183202 else
184203 echo "::warning::EzRTP 'Ready.' not found in log — server may not have finished loading within the timeout"
185204 fi
@@ -188,7 +207,7 @@ jobs:
188207 if : always()
189208 uses : actions/upload-artifact@v7
190209 with :
191- name : folia- smoke-server-log
210+ name : smoke-server-log-${{ matrix.name }}
192211 path : smoke-server/server.log
193212 retention-days : 7
194213
0 commit comments