build: better GH Actions publishing #596
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
| # This workflow will build a Java project with Gradle | |
| # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle | |
| name: Build and Test with Gradle | |
| on: | |
| push: | |
| branches: [ "1.18", "1.19", "1.19.*", "1.20.*", "1.21.*" ] | |
| paths: | |
| - '**/src/**' | |
| - '**/build.gradle' | |
| - '**/gradle.properties' | |
| - '**/settings.gradle' | |
| - .github/workflows/gradle.yml | |
| - LICENCE | |
| pull_request: | |
| branches: [ "1.18", "1.19", "1.19.*", "1.20.*", "1.21.*" ] | |
| paths: | |
| - '**/src/**' | |
| - '**/build.gradle' | |
| - '**/gradle.properties' | |
| - '**/settings.gradle' | |
| - .github/workflows/gradle.yml | |
| - LICENCE | |
| jobs: | |
| build: | |
| name: Build and Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: ✨ Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: 🛂 Validate Gradle wrapper | |
| uses: gradle/actions/wrapper-validation@v4 | |
| - name: 🏗 Set up JDK 21 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: 21 | |
| distribution: adopt | |
| - name: 📷 Begin Gradle cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| - name: 📖 Extract current git hash for version suffix | |
| id: version_suffix | |
| run: | | |
| CURRENT_COMMIT_HASH=$(git rev-parse --short HEAD) | |
| echo "version_suffix=$CURRENT_COMMIT_HASH" >> $GITHUB_OUTPUT | |
| echo "Version suffix will be: $CURRENT_COMMIT_HASH" | |
| - name: 🔨 Build artifacts and Run Tests | |
| env: | |
| IS_PIPELINE: true | |
| VERSION_SUFFIX: ${{ steps.version_suffix.version_suffix }} | |
| run: gradle clean build | |
| - name: 🎯 Prepare mod-only artifact dir | |
| run: | | |
| mkdir -p upload-staging | |
| find build/libs -name "*.jar" \ | |
| ! -name "*-sources.jar" \ | |
| ! -name "*-javadoc.jar" \ | |
| ! -name "*-test*.jar" \ | |
| -exec cp {} upload-staging/ \; | |
| - name: 📦 Upload mod-only artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: mod_artifact | |
| path: upload-staging/ | |
| # jars are already compressed | |
| compression-level: 0 | |
| - name: 📦 Upload artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: artifacts | |
| path: 'build/libs/' | |
| # jars are already compressed | |
| compression-level: 0 | |
| - name: 📝 Upload reports | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: reports | |
| path: 'build/reports/' | |
| - name: 🧨 Cleanup Gradle cache | |
| run: | | |
| rm -f ~/.gradle/caches/modules-2/modules-2.lock | |
| rm -f ~/.gradle/caches/modules-2/gc.properties |