Skip to content

chore(deps): bump codecov/codecov-action from 5 to 7 #213

chore(deps): bump codecov/codecov-action from 5 to 7

chore(deps): bump codecov/codecov-action from 5 to 7 #213

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
release:
types:
- published
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
- name: Run Spotless lint
run: mvn -B -ntp spotless:check
module-build:
name: Build ${{ matrix.module }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
module:
- ezrtp-common
- ezrtp-bukkit
- ezrtp-paper
- ezrtp-spigot
- ezrtp-purpur
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
- name: Build module
run: mvn -B -ntp -pl ${{ matrix.module }} -am -DskipTests -Dspotless.check.skip=true package
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
- name: Run unit tests
run: |
mvn -B -ntp -pl ezrtp-bukkit,ezrtp-paper -am -Dspotless.check.skip=true \
org.jacoco:jacoco-maven-plugin:0.8.12:prepare-agent \
test \
org.jacoco:jacoco-maven-plugin:0.8.12:report
- name: Upload coverage to Codecov
if: ${{ env.CODECOV_TOKEN != '' }}
uses: codecov/codecov-action@v7
with:
token: ${{ env.CODECOV_TOKEN }}
files: ./ezrtp-common/target/site/jacoco/jacoco.xml,./ezrtp-bukkit/target/site/jacoco/jacoco.xml,./ezrtp-paper/target/site/jacoco/jacoco.xml
flags: unit
name: ezrtp-unit
feature-tests:
name: Feature Tests
runs-on: ubuntu-latest
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
- name: Run feature tests
run: |
mvn -B -ntp -pl ezrtp-bukkit -am -Pmessage-tests -Dspotless.check.skip=true \
org.jacoco:jacoco-maven-plugin:0.8.12:prepare-agent \
test \
org.jacoco:jacoco-maven-plugin:0.8.12:report
- name: Upload feature coverage to Codecov
if: ${{ env.CODECOV_TOKEN != '' }}
uses: codecov/codecov-action@v7
with:
token: ${{ env.CODECOV_TOKEN }}
files: ./ezrtp-common/target/site/jacoco/jacoco.xml,./ezrtp-bukkit/target/site/jacoco/jacoco.xml,./ezrtp-paper/target/site/jacoco/jacoco.xml
flags: feature
name: ezrtp-feature
server-smoke-test:
name: Server Smoke Test (${{ matrix.name }})
runs-on: ubuntu-latest
needs: [unit-tests, feature-tests]
strategy:
fail-fast: false
matrix:
include:
- name: folia-latest
project: folia
version_selector: latest
- name: paper-1.13
project: paper
version_selector: 1.13
env:
PAPERMC_USER_AGENT: EzRTP-CI/1.0 (https://github.com/${{ github.repository }})
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
- name: Build plugin JARs
run: |
mvn -B -ntp -pl ezrtp-bukkit,ezrtp-paper -am -DskipTests -Dspotless.check.skip=true \
package
- name: Resolve server build (${{ matrix.name }})
id: server
run: |
PROJECT="${{ matrix.project }}"
PROJECT_URL="https://fill.papermc.io/v3/projects/${PROJECT}"
SELECTOR="${{ matrix.version_selector }}"
MC_VERSION=$(curl -fsSL -H "User-Agent: ${PAPERMC_USER_AGENT}" "${PROJECT_URL}" | \
python3 -c "import re,sys,json; data=json.load(sys.stdin)['versions']; versions=[v for group in data.values() for v in group]; selector=sys.argv[1]; part=lambda p:(0,int(p)) if p.isdigit() else (1,p); key=lambda v: tuple(part(p) for p in re.split(r'[.-]', v)); uniq=sorted(set(versions), key=key); matches=[v for v in uniq if v == selector or v.startswith(selector + '.')]; print(uniq[-1] if selector == 'latest' else (matches[0] if matches else (_ for _ in ()).throw(SystemExit(f'No versions matching selector {selector}'))))" "$SELECTOR")
BUILDS_JSON=$(curl -fsSL -H "User-Agent: ${PAPERMC_USER_AGENT}" "${PROJECT_URL}/versions/${MC_VERSION}/builds")
BUILD=$(printf '%s' "$BUILDS_JSON" | \
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'])")
DOWNLOAD_URL=$(printf '%s' "$BUILDS_JSON" | \
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'])")
echo "project=${PROJECT}" >> "$GITHUB_OUTPUT"
echo "mc_version=${MC_VERSION}" >> "$GITHUB_OUTPUT"
echo "build=${BUILD}" >> "$GITHUB_OUTPUT"
echo "download_url=${DOWNLOAD_URL}" >> "$GITHUB_OUTPUT"
echo "Resolved: ${PROJECT} ${SELECTOR} -> ${MC_VERSION} build ${BUILD}"
- name: Download server JAR
run: |
mkdir -p smoke-server/plugins
curl -fsSL -H "User-Agent: ${PAPERMC_USER_AGENT}" \
"${{ steps.server.outputs.download_url }}" \
-o smoke-server/server.jar
- name: Copy plugin JARs
run: |
cp ezrtp-bukkit/target/EzRTP-*.jar smoke-server/plugins/EzRTP.jar
cp ezrtp-paper/target/ezrtp-paper-*.jar smoke-server/plugins/EzRTPPaperModule.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 server.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 EzRTP errors
run: |
LOG=smoke-server/server.log
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
echo "::error::EzRTP logged errors on server startup:"
grep -iE "SEVERE.*[Ee]z[Rr][Tt][Pp]|Could not load.*[Ee]z[Rr][Tt][Pp]|Error.*[Ee]z[Rr][Tt][Pp]" "$LOG"
exit 1
fi
if grep -q "Ready\." "$LOG"; then
echo "Server smoke test passed — EzRTP reached Ready state."
else
echo "::warning::EzRTP 'Ready.' not found in log — server may not have finished loading within the timeout"
fi
- name: Upload server log
if: always()
uses: actions/upload-artifact@v7
with:
name: smoke-server-log-${{ matrix.name }}
path: smoke-server/server.log
retention-days: 7
publish-github-packages:
name: Publish to GitHub Packages
if: github.event_name == 'release'
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '25'
cache: maven
server-id: github
server-username: GITHUB_ACTOR
server-password: GITHUB_TOKEN
- name: Publish Maven artifacts
run: mvn -B -ntp -DskipTests -Dspotless.check.skip=true deploy -DaltDeploymentRepository=github::default::https://maven.pkg.github.com/${{ github.repository }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}