fix #13 #136
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: Java CI | |
| on: [push, pull_request] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - name: Validate gradlew integrity | |
| uses: gradle/wrapper-validation-action@v2 | |
| - name: Cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| ./.gradle/loom-cache/remapped-mods | |
| ./Forge/build/moddev | |
| ./Xplat/build/moddev | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/build.gradle', './gradle.properties', './settings.gradle', '**/gradle-wrapper.properties') }} | |
| - name: Set script permissions | |
| run: chmod +x ./scripts/check_lang.sh ./scripts/check_datagen.sh ./scripts/upload_releases.sh gradlew | |
| #- name: Check lang files | |
| # run: ./scripts/check_lang.sh | |
| - name: Calculate artifact names | |
| id: calculate_artifact_names | |
| run: | | |
| # Check is backwards because "" is falsey, which wouldn't work for boolean punning | |
| SNAPSHOT_SUFFIX=${{ !startsWith(github.ref, 'refs/tags/release-') && '-SNAPSHOT' || '' }} | |
| MC=$(awk -F '=' '/^minecraft_version=/ { print $2; }' gradle.properties) | |
| VERSION=$(awk -F '=' '/^mod_version=/ { print $2; }' gradle.properties) | |
| echo "forge=Forge/build/libs/extrabotany-forge-${MC}-${VERSION}${SNAPSHOT_SUFFIX}.jar" >> "$GITHUB_OUTPUT" | |
| echo "fabric=Fabric/build/libs/extrabotany-fabric-${MC}-${VERSION}${SNAPSHOT_SUFFIX}.jar" >> "$GITHUB_OUTPUT" | |
| - name: Build with Gradle | |
| run: | | |
| RELEASE_MODE=${{ startsWith(github.ref, 'refs/tags/release-') && '1' || '0' }} \ | |
| ./gradlew pmdMain spotlessJavaCheck build | |
| - name: PMD report | |
| uses: jwgmeligmeyling/pmd-github-action@v1 | |
| if: failure() | |
| with: | |
| path: '**/reports/pmd/main.xml' | |
| - name: Check generated files up to date | |
| run: ./scripts/check_datagen.sh | |
| - name: Stop Gradle | |
| run: ./gradlew --stop | |
| - name: Sign jars | |
| env: | |
| SIGNING_KEY: ${{ secrets.LOUNODE_SIGN_KEY }} | |
| if: ${{ env.SIGNING_KEY != '' }} | |
| run: | | |
| echo "${SIGNING_KEY}" | gpg --import - | |
| gpg --local-user "lounode" --armor \ | |
| --detach-sign ${{ steps.calculate_artifact_names.outputs.forge }} | |
| gpg --local-user "lounode" --armor \ | |
| --detach-sign ${{ steps.calculate_artifact_names.outputs.fabric }} | |
| - name: Archive Fabric Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Fabric | |
| path: | | |
| ${{ steps.calculate_artifact_names.outputs.fabric }} | |
| ${{ steps.calculate_artifact_names.outputs.fabric }}.asc | |
| - name: Archive Forge Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Forge | |
| path: | | |
| ${{ steps.calculate_artifact_names.outputs.forge }} | |
| ${{ steps.calculate_artifact_names.outputs.forge }}.asc | |
| - name: Publish to Maven | |
| env: | |
| MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} | |
| MAVEN_TOKEN: ${{ secrets.MAVEN_TOKEN }} | |
| run: | | |
| RELEASE_MODE=${{ startsWith(github.ref, 'refs/tags/release-') && '1' || '0' }} \ | |
| ./gradlew publish | |
| - name: Upload Releases | |
| if: startsWith(github.ref, 'refs/tags/release-') | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| GIT_REF: ${{ github.ref }} | |
| FABRIC_JAR: ${{ steps.calculate_artifact_names.outputs.fabric }} | |
| FORGE_JAR: ${{ steps.calculate_artifact_names.outputs.forge }} | |
| CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_TOKEN }} | |
| MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }} | |
| run: | | |
| scripts/upload_releases.sh |