Add auto Spigot NMS build workflow.Dist Release published & EranoAPI … #22
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: 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 |