ci.yml 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. name: CI build
  2. on:
  3. push:
  4. branches:
  5. - main
  6. - v[0-9]+.[0-9]+.[0-9]+
  7. workflow_dispatch:
  8. jobs:
  9. build:
  10. runs-on: ubuntu-latest
  11. steps:
  12. - uses: actions/checkout@v2.3.4
  13. - name: Set up JDK 11 for running Gradle
  14. uses: actions/setup-java@v2
  15. with:
  16. distribution: adopt
  17. java-version: 11
  18. - name: Build
  19. env:
  20. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  21. GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  22. GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}
  23. uses: gradle/gradle-build-action@v2
  24. with:
  25. # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/
  26. arguments: build -x javadoc
  27. build-gradle-plugins:
  28. runs-on: ubuntu-latest
  29. steps:
  30. - uses: actions/checkout@v2.3.4
  31. - name: Set up JDK 11 for running Gradle
  32. uses: actions/setup-java@v2
  33. with:
  34. distribution: adopt
  35. java-version: 11
  36. - name: Build
  37. uses: gradle/gradle-build-action@v2
  38. with:
  39. arguments: build
  40. build-root-directory: gradle-plugins
  41. test:
  42. runs-on: ubuntu-latest
  43. strategy:
  44. matrix:
  45. test-java-version:
  46. - 8
  47. - 11
  48. - 15
  49. vm:
  50. - hotspot
  51. - openj9
  52. fail-fast: false
  53. steps:
  54. - uses: actions/checkout@v2.3.4
  55. - id: setup-test-java
  56. name: Set up JDK ${{ matrix.test-java-version }}-${{ matrix.vm }} for running tests
  57. uses: actions/setup-java@v2
  58. with:
  59. distribution: adopt-${{ matrix.vm }}
  60. java-version: ${{ matrix.test-java-version }}
  61. - name: Set up JDK 11 for running Gradle
  62. uses: actions/setup-java@v2
  63. with:
  64. distribution: adopt
  65. java-version: 11
  66. - name: Test
  67. env:
  68. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  69. GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  70. GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}
  71. uses: gradle/gradle-build-action@v2
  72. with:
  73. 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
  74. testLatestDeps:
  75. runs-on: ubuntu-latest
  76. # release branches are excluded
  77. # because any time a new library version is released to maven central it can fail
  78. # which requires unnecessary release branch maintenance, especially for patches
  79. if: ${{ !startsWith(github.ref_name, 'v') }}
  80. steps:
  81. - uses: actions/checkout@v2.3.4
  82. - name: Set up JDK 11 for running Gradle
  83. uses: actions/setup-java@v2
  84. with:
  85. distribution: adopt
  86. java-version: 11
  87. - name: Test
  88. env:
  89. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  90. GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  91. GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}
  92. uses: gradle/gradle-build-action@v2
  93. with:
  94. arguments: test -PtestLatestDeps=true
  95. smoke-test:
  96. runs-on: ${{ matrix.os }}
  97. strategy:
  98. matrix:
  99. os:
  100. - windows-2019
  101. - ubuntu-latest
  102. smoke-test-suite:
  103. - jetty
  104. - liberty
  105. - payara
  106. - tomcat
  107. - tomee
  108. - websphere
  109. - wildfly
  110. - other
  111. exclude:
  112. - os: windows-2019
  113. smoke-test-suite: websphere
  114. fail-fast: false
  115. steps:
  116. - name: Support longpaths
  117. run: git config --system core.longpaths true
  118. if: matrix.os == 'windows-2019'
  119. - uses: actions/checkout@v2.3.4
  120. - name: Set up JDK 11 for running Gradle
  121. uses: actions/setup-java@v2
  122. with:
  123. distribution: adopt
  124. java-version: 11
  125. - name: Test
  126. env:
  127. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  128. GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  129. GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}
  130. uses: gradle/gradle-build-action@v2
  131. with:
  132. arguments: ":smoke-tests:test -PsmokeTestSuite=${{ matrix.smoke-test-suite }}"
  133. setup-muzzle-matrix:
  134. # release branches are excluded
  135. # because any time a new library version is released to maven central it can fail
  136. # which requires unnecessary release branch maintenance, especially for patches
  137. if: ${{ !startsWith(github.ref_name, 'v') }}
  138. runs-on: ubuntu-latest
  139. outputs:
  140. matrix: ${{ steps.set-matrix.outputs.matrix }}
  141. steps:
  142. - name: Check out repository
  143. uses: actions/checkout@v2.3.4
  144. - name: Set up JDK 11 for running Gradle
  145. uses: actions/setup-java@v2
  146. with:
  147. distribution: adopt
  148. java-version: 11
  149. - name: List instrumentations to file
  150. uses: gradle/gradle-build-action@v2
  151. with:
  152. arguments: instrumentation:listInstrumentations
  153. - id: set-matrix
  154. run: echo "::set-output name=matrix::{\"module\":[\"$(cat instrumentation-list.txt | xargs echo | sed 's/ /","/g')\"]}"
  155. muzzle:
  156. needs: setup-muzzle-matrix
  157. runs-on: ubuntu-latest
  158. strategy:
  159. matrix: ${{fromJson(needs.setup-muzzle-matrix.outputs.matrix)}}
  160. fail-fast: false
  161. steps:
  162. - name: Check out repository
  163. uses: actions/checkout@v2.3.4
  164. - name: Set up JDK 11 for running Gradle
  165. uses: actions/setup-java@v2
  166. with:
  167. distribution: adopt
  168. java-version: 11
  169. - name: Run muzzle
  170. uses: gradle/gradle-build-action@v2
  171. with:
  172. arguments: ${{ matrix.module }}:muzzle
  173. cache-read-only: true
  174. examples:
  175. runs-on: ubuntu-latest
  176. steps:
  177. - uses: actions/checkout@v2.3.4
  178. - name: Set up JDK 11 for running Gradle
  179. uses: actions/setup-java@v2
  180. with:
  181. distribution: adopt
  182. java-version: 11
  183. - name: Local publish of artifacts
  184. uses: gradle/gradle-build-action@v2
  185. with:
  186. # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/
  187. arguments: publishToMavenLocal -x javadoc
  188. - name: Local publish of gradle plugins
  189. uses: gradle/gradle-build-action@v2
  190. with:
  191. # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/
  192. arguments: publishToMavenLocal -x javadoc
  193. build-root-directory: gradle-plugins
  194. - name: Build distro
  195. uses: gradle/gradle-build-action@v2
  196. with:
  197. arguments: build --init-script ../../.github/scripts/local.init.gradle.kts
  198. build-root-directory: examples/distro
  199. - name: Build extension
  200. uses: gradle/gradle-build-action@v2
  201. with:
  202. arguments: build --init-script ../../.github/scripts/local.init.gradle.kts
  203. build-root-directory: examples/extension
  204. - name: Run muzzle check against extension
  205. uses: gradle/gradle-build-action@v2
  206. with:
  207. cache-read-only: true
  208. arguments: muzzle --init-script ../../.github/scripts/local.init.gradle.kts
  209. build-root-directory: examples/extension
  210. snapshot:
  211. runs-on: ubuntu-latest
  212. # intentionally not blocking snapshot publishing on testLatestDeps
  213. # because any time a new library version is released to maven central
  214. # it can fail due to test code incompatibility with the new library version,
  215. # or due to slight changes in emitted telemetry
  216. needs: [ build, test, smoke-test, examples, muzzle ]
  217. if: ${{ github.ref_name == 'main' && github.repository == 'open-telemetry/opentelemetry-java-instrumentation' }}
  218. steps:
  219. - uses: actions/checkout@v2.3.4
  220. - name: Set up JDK 11 for running Gradle
  221. uses: actions/setup-java@v2
  222. with:
  223. distribution: adopt
  224. java-version: 11
  225. - name: Build and publish artifact snapshots
  226. env:
  227. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  228. SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
  229. SONATYPE_KEY: ${{ secrets.SONATYPE_KEY }}
  230. GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
  231. GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
  232. uses: gradle/gradle-build-action@v2
  233. with:
  234. arguments: assemble publishToSonatype
  235. - name: Build and publish gradle plugin snapshots
  236. env:
  237. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  238. SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
  239. SONATYPE_KEY: ${{ secrets.SONATYPE_KEY }}
  240. GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
  241. GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
  242. uses: gradle/gradle-build-action@v2
  243. with:
  244. arguments: build publishToSonatype
  245. build-root-directory: gradle-plugins