nightly.yml 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. name: Nightly build
  2. on:
  3. schedule:
  4. # strange schedule to reduce the risk of DDOS GitHub infra
  5. - cron: "24 3 * * *"
  6. workflow_dispatch:
  7. jobs:
  8. build:
  9. runs-on: ubuntu-latest
  10. steps:
  11. - uses: actions/checkout@v2.3.4
  12. - name: Set up JDK 11 for running Gradle
  13. uses: actions/setup-java@v2
  14. with:
  15. distribution: adopt
  16. java-version: 11
  17. - name: Build
  18. env:
  19. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  20. GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  21. GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}
  22. uses: gradle/gradle-build-action@v2
  23. with:
  24. # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/
  25. arguments: build -x javadoc
  26. build-gradle-plugins:
  27. runs-on: ubuntu-latest
  28. steps:
  29. - uses: actions/checkout@v2.3.4
  30. - name: Set up JDK 11 for running Gradle
  31. uses: actions/setup-java@v2
  32. with:
  33. distribution: adopt
  34. java-version: 11
  35. - name: Build
  36. uses: gradle/gradle-build-action@v2
  37. with:
  38. arguments: build
  39. root-build-directory: gradle-plugins
  40. test:
  41. runs-on: ubuntu-latest
  42. strategy:
  43. matrix:
  44. test-java-version:
  45. - 8
  46. - 11
  47. - 15
  48. vm:
  49. - hotspot
  50. - openj9
  51. fail-fast: false
  52. steps:
  53. - uses: actions/checkout@v2.3.4
  54. - id: setup-test-java
  55. name: Set up JDK ${{ matrix.test-java-version }}-${{ matrix.vm }} for running tests
  56. uses: actions/setup-java@v2
  57. with:
  58. distribution: adopt-${{ matrix.vm }}
  59. java-version: ${{ matrix.test-java-version }}
  60. - name: Set up JDK 11 for running Gradle
  61. uses: actions/setup-java@v2
  62. with:
  63. distribution: adopt
  64. java-version: 11
  65. - name: Test
  66. env:
  67. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  68. GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  69. GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}
  70. uses: gradle/gradle-build-action@v2
  71. with:
  72. arguments: test -PtestJavaVersion=${{ matrix.test-java-version }} -PtestJavaVM=${{ matrix.vm }} -Porg.gradle.java.installations.paths=${{ steps.setup-test-java.outputs.path }} -Porg.gradle.java.installations.auto-download=false
  73. testLatestDeps:
  74. runs-on: ubuntu-latest
  75. steps:
  76. - uses: actions/checkout@v2.3.4
  77. - name: Set up JDK 11 for running Gradle
  78. uses: actions/setup-java@v2
  79. with:
  80. distribution: adopt
  81. java-version: 11
  82. - name: Test
  83. env:
  84. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  85. GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  86. GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}
  87. uses: gradle/gradle-build-action@v2
  88. with:
  89. arguments: test -PtestLatestDeps=true
  90. smoke-test:
  91. runs-on: ${{ matrix.os }}
  92. strategy:
  93. matrix:
  94. os:
  95. - windows-2019
  96. - ubuntu-latest
  97. smoke-test-suite:
  98. - jetty
  99. - liberty
  100. - payara
  101. - tomcat
  102. - tomee
  103. - websphere
  104. - wildfly
  105. - other
  106. exclude:
  107. - os: windows-2019
  108. smoke-test-suite: websphere
  109. fail-fast: false
  110. steps:
  111. - name: Support longpaths
  112. run: git config --system core.longpaths true
  113. if: matrix.os == 'windows-2019'
  114. - uses: actions/checkout@v2.3.4
  115. - name: Set up JDK 11 for running Gradle
  116. uses: actions/setup-java@v2
  117. with:
  118. distribution: adopt
  119. java-version: 11
  120. - name: Test
  121. env:
  122. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  123. GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  124. GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}
  125. uses: gradle/gradle-build-action@v2
  126. with:
  127. arguments: ":smoke-tests:test -PsmokeTestSuite=${{ matrix.smoke-test-suite }}"
  128. setup-muzzle-matrix:
  129. runs-on: ubuntu-latest
  130. outputs:
  131. matrix: ${{ steps.set-matrix.outputs.matrix }}
  132. steps:
  133. - name: Check out repository
  134. uses: actions/checkout@v2.3.4
  135. - name: Set up JDK 11 for running Gradle
  136. uses: actions/setup-java@v2
  137. with:
  138. distribution: adopt
  139. java-version: 11
  140. - name: List instrumentations to file
  141. uses: gradle/gradle-build-action@v2
  142. with:
  143. arguments: instrumentation:listInstrumentations
  144. - id: set-matrix
  145. run: echo "::set-output name=matrix::{\"module\":[\"$(cat instrumentation-list.txt | xargs echo | sed 's/ /","/g')\"]}"
  146. muzzle:
  147. needs: setup-muzzle-matrix
  148. runs-on: ubuntu-latest
  149. strategy:
  150. matrix: ${{fromJson(needs.setup-muzzle-matrix.outputs.matrix)}}
  151. fail-fast: false
  152. steps:
  153. - name: Check out repository
  154. uses: actions/checkout@v2.3.4
  155. - name: Set up JDK 11 for running Gradle
  156. uses: actions/setup-java@v2
  157. with:
  158. distribution: adopt
  159. java-version: 11
  160. - name: Run muzzle
  161. uses: gradle/gradle-build-action@v2
  162. with:
  163. arguments: ${{ matrix.module }}:muzzle
  164. cache-read-only: true
  165. examples:
  166. runs-on: ubuntu-latest
  167. steps:
  168. - uses: actions/checkout@v2.3.4
  169. - name: Set up JDK 11 for running Gradle
  170. uses: actions/setup-java@v2
  171. with:
  172. distribution: adopt
  173. java-version: 11
  174. - name: Local publish of artifacts
  175. uses: gradle/gradle-build-action@v2
  176. with:
  177. # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/
  178. arguments: publishToMavenLocal -x javadoc
  179. - name: Local publish of gradle plugins
  180. uses: gradle/gradle-build-action@v2
  181. with:
  182. # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/
  183. arguments: publishToMavenLocal -x javadoc
  184. build-root-directory: gradle-plugins
  185. - name: Build distro
  186. uses: gradle/gradle-build-action@v2
  187. with:
  188. arguments: build --init-script ../../.github/scripts/local.init.gradle.kts
  189. build-root-directory: examples/distro
  190. - name: Build extension
  191. uses: gradle/gradle-build-action@v2
  192. with:
  193. arguments: build --init-script ../../.github/scripts/local.init.gradle.kts
  194. build-root-directory: examples/extension
  195. - name: Run muzzle check against extension
  196. uses: gradle/gradle-build-action@v2
  197. with:
  198. cache-read-only: true
  199. arguments: muzzle --init-script ../../.github/scripts/local.init.gradle.kts
  200. build-root-directory: examples/extension
  201. issue:
  202. name: Open issue on failure
  203. needs: [ build, test, testLatestDeps, smoke-test, examples ]
  204. runs-on: ubuntu-latest
  205. if: always()
  206. steps:
  207. # run this action to get workflow conclusion
  208. # You can get conclusion by env (env.WORKFLOW_CONCLUSION)
  209. - uses: technote-space/workflow-conclusion-action@v2.2
  210. - uses: actions/checkout@v2.3.4
  211. - uses: JasonEtco/create-an-issue@v2.6
  212. if: env.WORKFLOW_CONCLUSION == 'failure' # notify only if failure
  213. env:
  214. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  215. with:
  216. filename: .github/templates/workflow-failed.md