ci.yml 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  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. muzzle:
  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. uses: ./.github/workflows/muzzle.yml
  139. examples:
  140. runs-on: ubuntu-latest
  141. steps:
  142. - uses: actions/checkout@v2.3.4
  143. - name: Set up JDK 11 for running Gradle
  144. uses: actions/setup-java@v2
  145. with:
  146. distribution: adopt
  147. java-version: 11
  148. - name: Set up gradle cache
  149. uses: gradle/gradle-build-action@v2
  150. - name: Local publish of artifacts
  151. # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/
  152. run: ./gradlew publishToMavenLocal -x javadoc
  153. - name: Local publish of gradle plugins
  154. # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/
  155. run: ./gradlew publishToMavenLocal -x javadoc
  156. working-directory: gradle-plugins
  157. - name: Build distro
  158. run: ./gradlew build --init-script ../../.github/scripts/local.init.gradle.kts
  159. working-directory: examples/distro
  160. - name: Build extension
  161. run: ./gradlew build --init-script ../../.github/scripts/local.init.gradle.kts
  162. working-directory: examples/extension
  163. - name: Run muzzle check against extension
  164. run: ./gradlew muzzle --init-script ../../.github/scripts/local.init.gradle.kts
  165. working-directory: examples/extension
  166. snapshot:
  167. runs-on: ubuntu-latest
  168. # intentionally not blocking snapshot publishing on testLatestDeps
  169. # because any time a new library version is released to maven central
  170. # it can fail due to test code incompatibility with the new library version,
  171. # or due to slight changes in emitted telemetry
  172. needs: [ build, test, smoke-test, examples, muzzle ]
  173. if: ${{ github.ref_name == 'main' && github.repository == 'open-telemetry/opentelemetry-java-instrumentation' }}
  174. steps:
  175. - uses: actions/checkout@v2.3.4
  176. - name: Set up JDK 11 for running Gradle
  177. uses: actions/setup-java@v2
  178. with:
  179. distribution: adopt
  180. java-version: 11
  181. - name: Build and publish artifact snapshots
  182. env:
  183. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  184. SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
  185. SONATYPE_KEY: ${{ secrets.SONATYPE_KEY }}
  186. GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
  187. GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
  188. uses: gradle/gradle-build-action@v2
  189. with:
  190. arguments: assemble publishToSonatype
  191. - name: Build and publish gradle plugin snapshots
  192. env:
  193. GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
  194. SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
  195. SONATYPE_KEY: ${{ secrets.SONATYPE_KEY }}
  196. GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
  197. GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
  198. uses: gradle/gradle-build-action@v2
  199. with:
  200. arguments: build publishToSonatype
  201. build-root-directory: gradle-plugins