123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- 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
|