name: Build and Release on: push: paths: - '**.gradle' - '**.properties' - '**/src/**' branches: - "1.16" workflow_dispatch: inputs: norelease: description: 'Do not publish' required: true default: 'false' jobs: validate-gradle: name: "Validate Gradle wrapper" runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - uses: gradle/wrapper-validation-action@v1 license: name: "Verify License integrity" runs-on: ubuntu-20.04 if: | !contains(github.event.head_commit.message, '[ci skip]') steps: - uses: actions/checkout@v2 - name: Set up JDK 8 uses: actions/setup-java@v2 with: java-version: 8 distribution: 'adopt' - name: Cache Gradle wrapper uses: actions/cache@v2 with: path: ~/.gradle/wrapper key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('gradle/wrapper/**/*') }} restore-keys: gradle-wrapper-${{ runner.os }}- - name: Cache packages id: cache-packages uses: actions/cache@v2 with: path: ~/.gradle/caches key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: gradle-packages-${{ runner.os }}- - name: Make gradlew executable run: chmod +x ./gradlew - name: Verify license using Licenser run: | ./gradlew licenseCheck # Remove some potentially problematic files from the Gradle cache, # so that GitHub Actions doesn't cache them. - name: Cleanup Gradle Cache if: steps.cache-packages.outputs.cache-hit != 'true' run: | rm -f $HOME/.gradle/caches/*/*.lock rm -rf $HOME/.gradle/caches/*/plugin-resolution/ rm -rf $HOME/.gradle/caches/*/scripts/ rm -rf $HOME/.gradle/caches/*/scripts-remapped/ rm -rf $HOME/.gradle/caches/*/fileHashes/ rm -f $HOME/.gradle/caches/journal-1/file-access.bin build: name: "Build" strategy: matrix: java: [ 8, 15 ] # Build on Java 8 (version shipped with MC 1.16) and Java 15 (iirc the latest version supported by both loaders on 1.16) runs-on: ubuntu-20.04 if: | !contains(github.event.head_commit.message, '[ci skip]') steps: - uses: actions/checkout@v2 - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v2 with: java-version: ${{ matrix.java }} distribution: 'adopt' - name: Cache Gradle wrapper uses: actions/cache@v2 with: path: ~/.gradle/wrapper key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('gradle/wrapper/**/*') }} restore-keys: gradle-wrapper-${{ runner.os }}- - name: Cache packages id: cache-packages uses: actions/cache@v2 with: path: ~/.gradle/caches key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: gradle-packages-${{ runner.os }}- - name: Make gradlew executable run: chmod +x ./gradlew - name: Build with Gradle run: | ./gradlew build --stacktrace --no-daemon # Remove some potentially problematic files from the Gradle cache, # so that GitHub Actions doesn't cache them. - name: Cleanup Gradle Cache if: steps.cache-packages.outputs.cache-hit != 'true' run: | rm -f $HOME/.gradle/caches/*/*.lock rm -rf $HOME/.gradle/caches/*/plugin-resolution/ rm -rf $HOME/.gradle/caches/*/scripts/ rm -rf $HOME/.gradle/caches/*/scripts-remapped/ rm -rf $HOME/.gradle/caches/*/fileHashes/ rm -f $HOME/.gradle/caches/journal-1/file-access.bin - name: Setting mod version if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16 run: | cat $GITHUB_WORKSPACE/gradle.properties | grep ^archives_base_name= >> $GITHUB_ENV cat $GITHUB_WORKSPACE/gradle.properties | grep ^minecraft_version= >> $GITHUB_ENV cat $GITHUB_WORKSPACE/gradle.properties | grep ^base_version= >> $GITHUB_ENV - name: Create package name if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16 run: echo "package_name=[$minecraft_version] $archives_base_name-$base_version.${{ github.run_number }}" >> $GITHUB_ENV - uses: actions/upload-artifact@v2 if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16 with: name: ${{ env.package_name }} path: | **/build/libs/ !build/libs/ !**/*-dev.jar !**/*-shadow.jar !**/*-transformProduction*.jar !**/testmod*/ publish: needs: - validate-gradle - license - build runs-on: ubuntu-20.04 if: | !contains(github.event.head_commit.message, '[norelease]') && github.event.inputs.norelease != 'true' steps: - uses: actions/checkout@v2 - name: Set up JDK 8 uses: actions/setup-java@v2 with: java-version: 8 distribution: 'adopt' - name: Cache Gradle wrapper uses: actions/cache@v2 with: path: ~/.gradle/wrapper key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('gradle/wrapper/**/*') }} restore-keys: gradle-wrapper-${{ runner.os }}- - name: Cache packages id: cache-packages uses: actions/cache@v2 with: path: ~/.gradle/caches key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: gradle-packages-${{ runner.os }}- - name: Release to Maven and CurseForge env: # currently unused, may want to use these for changelogs though! # GIT_COMMIT: ${{ github.event.after }} # GIT_PREVIOUS_COMMIT: ${{ github.event.before }} MAVEN_PASS: ${{ secrets.MAVEN_PASS }} CURSE_API_KEY: ${{ secrets.CURSE_API_KEY }} # TODO: make this use the artifacts from the previous build step run: | ./gradlew build publish curseforgePublish --stacktrace --no-daemon # Remove some potentially problematic files from the Gradle cache, # so that GitHub Actions doesn't cache them. - name: Cleanup Gradle Cache if: steps.cache-packages.outputs.cache-hit != 'true' run: | rm -f $HOME/.gradle/caches/*/*.lock rm -rf $HOME/.gradle/caches/*/plugin-resolution/ rm -rf $HOME/.gradle/caches/*/scripts/ rm -rf $HOME/.gradle/caches/*/scripts-remapped/ rm -rf $HOME/.gradle/caches/*/fileHashes/ rm -f $HOME/.gradle/caches/journal-1/file-access.bin