Added back job for testing #36
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
# validate gradle wrapper binary https://github.com/gradle/wrapper-validation-action | |
gradle-wrapper-validation: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: gradle/actions/wrapper-validation@v4 | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Gradle build without tests | |
uses: ./.github/workflows/gradle-goal | |
with: | |
# We also compile the test-classes, even though we are skipping the tests | |
command: "./gradlew build testClasses -x test" | |
# We first tar the working directory and then upload it | |
# We do this because the upload-artifact action doesn't preserve file permissions | |
- name: Create working dir archive | |
run: "mkdir ./wdarch && tar --exclude='./wdarch' -czf ./wdarch/working-dir-build-cache.tar.gz ." | |
- name: Cache working directory with build results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: working-dir-build-cache | |
path: ./wdarch/working-dir-build-cache.tar.gz | |
retention-days: 1 # No need to waste space when this artifact is only used as part of the build process | |
- name: Agent artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: elastic-otel-javaagent | |
path: | | |
./agent/build/libs/elastic-otel-javaagent-*.jar | |
- name: Agent extension artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: elastic-otel-agentextension | |
path: | | |
./agentextension/build/libs/elastic-otel-agentextension-*.jar | |
test: | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
strategy: | |
# Even if the tests fail on one JDK we want to know if it also fails on others | |
fail-fast: false | |
matrix: | |
# The JVMs for testing will be automatically downloaded by gradle using the toolchains-feature | |
# We use the following plugin to download them: https://github.com/gradle/foojay-toolchains | |
# We should make sure to always add the latest releases here when they are GA | |
# non LTS-releases should be removed if a newer version is GA | |
include: | |
- version: 8 | |
vm: 'hotspot' | |
- version: 11 | |
vm: 'hotspot' | |
- version: 17 | |
vm: 'hotspot' | |
- version: 21 | |
vm: 'hotspot' | |
- version: 11 | |
vm: 'openj9' | |
- version: 21 | |
vm: 'openj9' | |
- version: 23 | |
vm: 'hotspot' | |
steps: | |
# We use the cached working directory so that we don't have to recompile everything | |
- name: Download cached build working directory | |
uses: actions/download-artifact@v4 | |
with: | |
name: working-dir-build-cache | |
path: ./ | |
- name: Untar cached build working directory | |
run: "tar -xvf working-dir-build-cache.tar.gz" | |
- name: Run tests | |
uses: ./.github/workflows/gradle-goal | |
with: | |
# We manually skip the compileJni task because we know it is up-to-date in the cached | |
# working directory. The up-to-date check of this task checks for the presence of docker | |
# images used for compiling the native library, which do not exist because we are in a new | |
# environment. | |
command: "./gradlew test -x compileJni -PtestJavaVersion=${{ matrix.version }} -PtestJavaVM=${{ matrix.vm }}" | |
- name: Store test results | |
if: success() || failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-results-${{ matrix.version }}-${{ matrix.vm }} | |
path: '**/build/test-results/test/TEST-*.xml' |