push.yml 6.2 KB

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