Skip to content

Add auto Spigot NMS build workflow.Dist Release published & EranoAPI … #22

Add auto Spigot NMS build workflow.Dist Release published & EranoAPI …

Add auto Spigot NMS build workflow.Dist Release published & EranoAPI … #22

name: Build EranoAPI with NMS Dependencies
on:
push:
tags:
- "*" # Tüm tag push'larında tetiklenir
jobs:
prepare-spigot-deps:
runs-on: ubuntu-latest
env:
GH_PACKAGES_TOKEN: ${{ secrets.GH_PACKAGES_TOKEN }}
strategy:
matrix:
include:
# Java 8 versions (1.8-1.12)
- spigot-version: "1.12"
java-version: "8"
mojang-remapped: false
- spigot-version: "1.11"
java-version: "8"
mojang-remapped: false
- spigot-version: "1.10.2"
java-version: "8"
mojang-remapped: false
# Java 11 versions (1.12-1.16)
- spigot-version: "1.16.5"
java-version: "11"
mojang-remapped: false
- spigot-version: "1.16.2"
java-version: "11"
mojang-remapped: false
- spigot-version: "1.16.1"
java-version: "11"
mojang-remapped: false
- spigot-version: "1.15"
java-version: "11"
mojang-remapped: false
- spigot-version: "1.14"
java-version: "11"
mojang-remapped: false
- spigot-version: "1.13.1"
java-version: "11"
mojang-remapped: false
- spigot-version: "1.13"
java-version: "11"
mojang-remapped: false
# Java 17 versions (1.17-1.19)
- spigot-version: "1.19.4"
java-version: "17"
mojang-remapped: true
- spigot-version: "1.19.3"
java-version: "17"
mojang-remapped: true
- spigot-version: "1.19.2"
java-version: "17"
mojang-remapped: true
- spigot-version: "1.18.2"
java-version: "17"
mojang-remapped: true
- spigot-version: "1.18.1"
java-version: "17"
mojang-remapped: true
- spigot-version: "1.17.1"
java-version: "17"
mojang-remapped: true
# Java 21 versions (1.19+)
- spigot-version: "1.21.5"
java-version: "21"
mojang-remapped: true
- spigot-version: "1.21.4"
java-version: "21"
mojang-remapped: true
- spigot-version: "1.21.3"
java-version: "21"
mojang-remapped: true
- spigot-version: "1.21.1"
java-version: "21"
mojang-remapped: true
- spigot-version: "1.20.4"
java-version: "21"
mojang-remapped: true
- spigot-version: "1.20.2"
java-version: "21"
mojang-remapped: true
- spigot-version: "1.20.1"
java-version: "21"
mojang-remapped: true
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java ${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java-version }}
- name: Cache Maven Spigot Jars
uses: actions/cache@v4
with:
path: ~/.m2/repository/org/spigotmc
key: spigot-m2-${{ matrix.spigot-version }}-${{ matrix.java-version }}-${{ matrix.mojang-remapped }}
restore-keys: |
spigot-m2-${{ matrix.spigot-version }}-
- name: Cache BuildTools
uses: actions/cache@v4
with:
path: BuildTools.jar
key: buildtools-latest
- name: Download BuildTools
run: |
if [ ! -f BuildTools.jar ]; then
curl -o BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
fi
- name: Check Spigot Jar in Maven Repo
id: check-spigot-jar
run: |
JARPATH="$HOME/.m2/repository/org/spigotmc/spigot/${{ matrix.spigot-version }}-R0.1-SNAPSHOT/spigot-${{ matrix.spigot-version }}-R0.1-SNAPSHOT.jar"
if [ -f "$JARPATH" ]; then
echo "Spigot jar already exists in Maven repo. Skipping build."
echo "found=true" >> $GITHUB_OUTPUT
else
echo "Spigot jar not found, will build."
echo "found=false" >> $GITHUB_OUTPUT
fi
- name: Build Spigot ${{ matrix.spigot-version }}
if: steps.check-spigot-jar.outputs.found == 'false'
run: |
mkdir -p build-${{ matrix.spigot-version }}
cd build-${{ matrix.spigot-version }}
cp ../BuildTools.jar .
if [ "${{ matrix.mojang-remapped }}" = "true" ]; then
echo "Building mojang-remapped version for ${{ matrix.spigot-version }}"
java -jar BuildTools.jar --rev ${{ matrix.spigot-version }} --remapped
else
echo "Building obfuscated version for ${{ matrix.spigot-version }}"
java -jar BuildTools.jar --rev ${{ matrix.spigot-version }}
fi
- name: Set Maven settings.xml for deploy
run: |
mkdir -p $HOME/.m2
cp .github/maven-settings.xml $HOME/.m2/settings.xml
- name: Deploy Spigot Jar to GitHub Packages
run: |
BUILD_JAR="build-${{ matrix.spigot-version }}/Spigot/Spigot-Server/target/spigot-${{ matrix.spigot-version }}-R0.1-SNAPSHOT.jar"
if [ -f "$BUILD_JAR" ]; then
mvn deploy:deploy-file \
-s $HOME/.m2/settings.xml \
-DgroupId=org.spigotmc \
-DartifactId=spigot \
-Dversion=${{ matrix.spigot-version }}-R0.1-SNAPSHOT \
-Dpackaging=jar \
-Dfile=$BUILD_JAR \
-DrepositoryId=github \
-Durl=https://maven.pkg.github.com/Erano01/EranoAPI-Parent
else
echo "Spigot jar not found at $BUILD_JAR, skipping deploy!"
fi
- name: Upload Spigot Dependencies
uses: actions/upload-artifact@v4
with:
name: spigot-deps-${{ matrix.spigot-version }}
path: ~/.m2/repository/org/spigotmc
retention-days: 1
build-project:
needs: prepare-spigot-deps
runs-on: ubuntu-latest
env:
GH_PACKAGES_TOKEN: ${{ secrets.GH_PACKAGES_TOKEN }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Java 21 (for main build)
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Set Maven settings.xml for build
run: |
mkdir -p $HOME/.m2
cp .github/maven-settings.xml $HOME/.m2/settings.xml
- name: Cache Maven Dependencies
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }}
restore-keys: |
maven-${{ runner.os }}-
- name: Download All Spigot Dependencies
uses: actions/download-artifact@v4
with:
pattern: spigot-deps-*
path: spigot-artifacts
merge-multiple: true
- name: Install Spigot Dependencies to Local Repository
run: |
mkdir -p ~/.m2/repository/org/spigotmc
cp -r spigot-artifacts/* ~/.m2/repository/org/spigotmc/ || true
- name: Verify Spigot Dependencies
run: |
echo "Checking installed Spigot dependencies:"
find ~/.m2/repository/org/spigotmc -name "*.jar" | head -20
- name: Build EranoAPI
run: |
echo "Building EranoAPI project..."
mvn clean compile -B -V
- name: Test Build
run: |
echo "Running tests..."
mvn test -B
- name: Package Project
run: |
echo "Packaging project..."
mvn package -B -DskipTests
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: eranoapi-build
path: |
**/target/*.jar
!**/target/*-sources.jar
!**/target/*-javadoc.jar