push.yml 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. name: Build and Release
  2. on:
  3. push:
  4. paths:
  5. - '**.gradle'
  6. - '**.properties'
  7. - '**/src/**'
  8. branches:
  9. - "1.16"
  10. workflow_dispatch:
  11. inputs:
  12. norelease:
  13. description: 'Do not publish'
  14. required: true
  15. default: 'false'
  16. jobs:
  17. validate-gradle:
  18. name: "Validate Gradle wrapper"
  19. runs-on: ubuntu-20.04
  20. steps:
  21. - uses: actions/checkout@v2
  22. with:
  23. fetch-depth: 0
  24. - uses: gradle/wrapper-validation-action@v1
  25. license:
  26. name: "Verify License integrity"
  27. runs-on: ubuntu-20.04
  28. if: |
  29. !contains(github.event.head_commit.message, '[ci skip]')
  30. steps:
  31. - uses: actions/checkout@v2
  32. - name: Set up JDK 8
  33. uses: actions/setup-java@v2
  34. with:
  35. java-version: 8
  36. distribution: 'adopt'
  37. - name: Cache Gradle wrapper
  38. uses: actions/cache@v2
  39. with:
  40. path: ~/.gradle/wrapper
  41. key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('gradle/wrapper/**/*') }}
  42. restore-keys: gradle-wrapper-${{ runner.os }}-
  43. - name: Cache packages
  44. id: cache-packages
  45. uses: actions/cache@v2
  46. with:
  47. path: ~/.gradle/caches
  48. key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
  49. restore-keys: gradle-packages-${{ runner.os }}-
  50. - name: Make gradlew executable
  51. run: chmod +x ./gradlew
  52. - name: Verify license using Licenser
  53. run: |
  54. ./gradlew licenseCheck
  55. # Remove some potentially problematic files from the Gradle cache,
  56. # so that GitHub Actions doesn't cache them.
  57. - name: Cleanup Gradle Cache
  58. if: steps.cache-packages.outputs.cache-hit != 'true'
  59. run: |
  60. rm -f $HOME/.gradle/caches/*/*.lock
  61. rm -rf $HOME/.gradle/caches/*/plugin-resolution/
  62. rm -rf $HOME/.gradle/caches/*/scripts/
  63. rm -rf $HOME/.gradle/caches/*/scripts-remapped/
  64. rm -rf $HOME/.gradle/caches/*/fileHashes/
  65. rm -f $HOME/.gradle/caches/journal-1/file-access.bin
  66. build:
  67. name: "Build"
  68. strategy:
  69. matrix:
  70. 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)
  71. runs-on: ubuntu-20.04
  72. if: |
  73. !contains(github.event.head_commit.message, '[ci skip]')
  74. steps:
  75. - uses: actions/checkout@v2
  76. - name: Set up JDK ${{ matrix.java }}
  77. uses: actions/setup-java@v2
  78. with:
  79. java-version: ${{ matrix.java }}
  80. distribution: 'adopt'
  81. - name: Cache Gradle wrapper
  82. uses: actions/cache@v2
  83. with:
  84. path: ~/.gradle/wrapper
  85. key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('gradle/wrapper/**/*') }}
  86. restore-keys: gradle-wrapper-${{ runner.os }}-
  87. - name: Cache packages
  88. id: cache-packages
  89. uses: actions/cache@v2
  90. with:
  91. path: ~/.gradle/caches
  92. key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
  93. restore-keys: gradle-packages-${{ runner.os }}-
  94. - name: Make gradlew executable
  95. run: chmod +x ./gradlew
  96. - name: Build with Gradle
  97. run: |
  98. ./gradlew build --stacktrace --no-daemon
  99. # Remove some potentially problematic files from the Gradle cache,
  100. # so that GitHub Actions doesn't cache them.
  101. - name: Cleanup Gradle Cache
  102. if: steps.cache-packages.outputs.cache-hit != 'true'
  103. run: |
  104. rm -f $HOME/.gradle/caches/*/*.lock
  105. rm -rf $HOME/.gradle/caches/*/plugin-resolution/
  106. rm -rf $HOME/.gradle/caches/*/scripts/
  107. rm -rf $HOME/.gradle/caches/*/scripts-remapped/
  108. rm -rf $HOME/.gradle/caches/*/fileHashes/
  109. rm -f $HOME/.gradle/caches/journal-1/file-access.bin
  110. - name: Setting mod version
  111. if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16
  112. run: |
  113. cat $GITHUB_WORKSPACE/gradle.properties | grep ^archives_base_name= >> $GITHUB_ENV
  114. cat $GITHUB_WORKSPACE/gradle.properties | grep ^minecraft_version= >> $GITHUB_ENV
  115. cat $GITHUB_WORKSPACE/gradle.properties | grep ^base_version= >> $GITHUB_ENV
  116. - name: Create package name
  117. if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16
  118. run: echo "package_name=[$minecraft_version] $archives_base_name-$base_version.${{ github.run_number }}" >> $GITHUB_ENV
  119. - uses: actions/upload-artifact@v2
  120. if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16
  121. with:
  122. name: ${{ env.package_name }}
  123. path: |
  124. **/build/libs/
  125. !build/libs/
  126. !**/*-dev.jar
  127. !**/*-shadow.jar
  128. !**/*-transformProduction*.jar
  129. !**/testmod*/
  130. publish:
  131. needs:
  132. - validate-gradle
  133. - license
  134. - build
  135. runs-on: ubuntu-20.04
  136. if: |
  137. !contains(github.event.head_commit.message, '[norelease]') && github.event.inputs.norelease != 'true'
  138. steps:
  139. - uses: actions/checkout@v2
  140. - name: Set up JDK 8
  141. uses: actions/setup-java@v2
  142. with:
  143. java-version: 8
  144. distribution: 'adopt'
  145. - name: Cache Gradle wrapper
  146. uses: actions/cache@v2
  147. with:
  148. path: ~/.gradle/wrapper
  149. key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('gradle/wrapper/**/*') }}
  150. restore-keys: gradle-wrapper-${{ runner.os }}-
  151. - name: Cache packages
  152. id: cache-packages
  153. uses: actions/cache@v2
  154. with:
  155. path: ~/.gradle/caches
  156. key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
  157. restore-keys: gradle-packages-${{ runner.os }}-
  158. - name: Release to Maven and CurseForge
  159. env:
  160. # currently unused, may want to use these for changelogs though!
  161. # GIT_COMMIT: ${{ github.event.after }}
  162. # GIT_PREVIOUS_COMMIT: ${{ github.event.before }}
  163. MAVEN_PASS: ${{ secrets.MAVEN_PASS }}
  164. CURSE_API_KEY: ${{ secrets.CURSE_API_KEY }}
  165. # TODO: make this use the artifacts from the previous build step
  166. run: |
  167. ./gradlew build publish curseforgePublish --stacktrace --no-daemon
  168. # Remove some potentially problematic files from the Gradle cache,
  169. # so that GitHub Actions doesn't cache them.
  170. - name: Cleanup Gradle Cache
  171. if: steps.cache-packages.outputs.cache-hit != 'true'
  172. run: |
  173. rm -f $HOME/.gradle/caches/*/*.lock
  174. rm -rf $HOME/.gradle/caches/*/plugin-resolution/
  175. rm -rf $HOME/.gradle/caches/*/scripts/
  176. rm -rf $HOME/.gradle/caches/*/scripts-remapped/
  177. rm -rf $HOME/.gradle/caches/*/fileHashes/
  178. rm -f $HOME/.gradle/caches/journal-1/file-access.bin