name: CI build on: push: branches: - main - v[0-9]+.[0-9]+.[0-9]+ workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.4 - name: Set up JDK 11 for running Gradle uses: actions/setup-java@v2 with: distribution: adopt java-version: 11 - name: Build env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }} GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }} uses: gradle/gradle-build-action@v2 with: # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/ arguments: build -x javadoc build-gradle-plugins: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.4 - name: Set up JDK 11 for running Gradle uses: actions/setup-java@v2 with: distribution: adopt java-version: 11 - name: Build uses: gradle/gradle-build-action@v2 with: arguments: build build-root-directory: gradle-plugins test: runs-on: ubuntu-latest strategy: matrix: test-java-version: - 8 - 11 - 15 vm: - hotspot - openj9 fail-fast: false steps: - uses: actions/checkout@v2.3.4 - id: setup-test-java name: Set up JDK ${{ matrix.test-java-version }}-${{ matrix.vm }} for running tests uses: actions/setup-java@v2 with: distribution: adopt-${{ matrix.vm }} java-version: ${{ matrix.test-java-version }} - name: Set up JDK 11 for running Gradle uses: actions/setup-java@v2 with: distribution: adopt java-version: 11 - name: Test env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }} GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }} uses: gradle/gradle-build-action@v2 with: 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 testLatestDeps: runs-on: ubuntu-latest # release branches are excluded # because any time a new library version is released to maven central it can fail # which requires unnecessary release branch maintenance, especially for patches if: ${{ !startsWith(github.ref_name, 'v') }} steps: - uses: actions/checkout@v2.3.4 - name: Set up JDK 11 for running Gradle uses: actions/setup-java@v2 with: distribution: adopt java-version: 11 - name: Test env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }} GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }} uses: gradle/gradle-build-action@v2 with: arguments: test -PtestLatestDeps=true smoke-test: runs-on: ${{ matrix.os }} strategy: matrix: os: - windows-2019 - ubuntu-latest smoke-test-suite: - jetty - liberty - payara - tomcat - tomee - websphere - wildfly - other exclude: - os: windows-2019 smoke-test-suite: websphere fail-fast: false steps: - name: Support longpaths run: git config --system core.longpaths true if: matrix.os == 'windows-2019' - uses: actions/checkout@v2.3.4 - name: Set up JDK 11 for running Gradle uses: actions/setup-java@v2 with: distribution: adopt java-version: 11 - name: Test env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} GE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }} GE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }} uses: gradle/gradle-build-action@v2 with: arguments: ":smoke-tests:test -PsmokeTestSuite=${{ matrix.smoke-test-suite }}" muzzle: # release branches are excluded # because any time a new library version is released to maven central it can fail # which requires unnecessary release branch maintenance, especially for patches if: ${{ !startsWith(github.ref_name, 'v') }} uses: ./.github/workflows/muzzle.yml examples: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.4 - name: Set up JDK 11 for running Gradle uses: actions/setup-java@v2 with: distribution: adopt java-version: 11 - name: Set up gradle cache uses: gradle/gradle-build-action@v2 - name: Local publish of artifacts # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/ run: ./gradlew publishToMavenLocal -x javadoc - name: Local publish of gradle plugins # javadoc task fails sporadically fetching https://docs.oracle.com/javase/8/docs/api/ run: ./gradlew publishToMavenLocal -x javadoc working-directory: gradle-plugins - name: Build distro run: ./gradlew build --init-script ../../.github/scripts/local.init.gradle.kts working-directory: examples/distro - name: Build extension run: ./gradlew build --init-script ../../.github/scripts/local.init.gradle.kts working-directory: examples/extension - name: Run muzzle check against extension run: ./gradlew muzzle --init-script ../../.github/scripts/local.init.gradle.kts working-directory: examples/extension markdown-link-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.4 - name: Check markdown links run: | npm install -g markdown-link-check find . -type f \ -name '*.md' \ -not -path './.github/*' \ -not -path './node_modules/*' \ -print0 \ | xargs -0 -n1 markdown-link-check --config .github/scripts/markdown_link_check_config.json snapshot: runs-on: ubuntu-latest # intentionally not blocking snapshot publishing on testLatestDeps # because any time a new library version is released to maven central # it can fail due to test code incompatibility with the new library version, # or due to slight changes in emitted telemetry # # also not blocking snapshot publishing on markdown-link-check because links to external urls # can break at any time needs: [ build, test, smoke-test, examples, muzzle ] if: ${{ github.ref_name == 'main' && github.repository == 'open-telemetry/opentelemetry-java-instrumentation' }} steps: - uses: actions/checkout@v2.3.4 - name: Set up JDK 11 for running Gradle uses: actions/setup-java@v2 with: distribution: adopt java-version: 11 - name: Build and publish artifact snapshots env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} SONATYPE_USER: ${{ secrets.SONATYPE_USER }} SONATYPE_KEY: ${{ secrets.SONATYPE_KEY }} GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }} uses: gradle/gradle-build-action@v2 with: arguments: assemble publishToSonatype - name: Build and publish gradle plugin snapshots env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} SONATYPE_USER: ${{ secrets.SONATYPE_USER }} SONATYPE_KEY: ${{ secrets.SONATYPE_KEY }} GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }} uses: gradle/gradle-build-action@v2 with: arguments: build publishToSonatype build-root-directory: gradle-plugins