Skip to content

Update test-reporter workflow (#402) #1080

Update test-reporter workflow (#402)

Update test-reporter workflow (#402) #1080

Workflow file for this run

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'
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'