Skip to content

NH-119050: bump joboe #797

NH-119050: bump joboe

NH-119050: bump joboe #797

Workflow file for this run

name: Push
on:
workflow_dispatch:
push:
permissions:
packages: write
contents: read
id-token: write
security-events: write
env:
SW_APM_DEBUG_LEVEL: trace
AGENT_DOWNLOAD_URL: https://agent-binaries.global.st-ssp.solarwinds.com/apm/java/latest/solarwinds-apm-agent.jar
SW_APM_COLLECTOR: ${{ secrets.SW_APM_COLLECTOR }}
SW_APM_SERVICE_KEY_AO: ${{ secrets.SW_APM_SERVICE_KEY_AO }}
SW_APM_SERVICE_KEY: ${{ secrets.SW_APM_SERVICE_KEY }}
GITHUB_USERNAME: ${{ github.actor }}
SWO_LOGIN_URL: ${{ secrets.SWO_LOGIN_URL }}
SWO_HOST_URL: ${{ secrets.SWO_HOST_URL }}
SWO_EMAIL: ${{ secrets.SWO_EMAIL }}
SWO_PWORD: ${{ secrets.SWO_PWORD }}
STAGE_BUCKET: ${{ secrets.STAGE_BUCKET }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_TOKEN: ${{ secrets.SONATYPE_TOKEN }}
CENTRAL_USERNAME: ${{ secrets.CENTRAL_USERNAME }}
CENTRAL_TOKEN: ${{ secrets.CENTRAL_TOKEN }}
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_PRIVATE_KEY_PASSPHRASE: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}
jobs:
s3-stage-upload: # this job uploads the jar to stage s3
needs:
- maven_snapshot_release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_S3_ROLE_ARN_SSP_STAGE }}
aws-region: "us-east-1"
- name: Build agent
run: ./gradlew clean build -x test
- name: Set agent version
id: set_version
uses: ./.github/actions/version
- name: Copy to S3
run: |
aws s3 cp agent/build/libs/solarwinds-apm-agent.jar \
s3://$STAGE_BUCKET/apm/java/$AGENT_VERSION/solarwinds-apm-agent.jar \
--acl public-read
aws s3 cp agent-lambda/build/libs/solarwinds-apm-agent-lambda.jar \
s3://$STAGE_BUCKET/apm/java/$AGENT_VERSION/solarwinds-apm-agent-lambda.jar \
--acl public-read
aws s3 cp custom/shared/src/main/resources/solarwinds-apm-config.json \
s3://$STAGE_BUCKET/apm/java/$AGENT_VERSION/solarwinds-apm-config.json \
--acl public-read
env:
AGENT_VERSION: ${{ steps.set_version.outputs.version }}
- name: Copy to S3(latest)
run: |
aws s3 cp s3://$STAGE_BUCKET/apm/java/$AGENT_VERSION/solarwinds-apm-agent.jar \
s3://$STAGE_BUCKET/apm/java/latest/solarwinds-apm-agent.jar \
--acl public-read
aws s3 cp s3://$STAGE_BUCKET/apm/java/$AGENT_VERSION/solarwinds-apm-agent-lambda.jar \
s3://$STAGE_BUCKET/apm/java/latest/solarwinds-apm-agent-lambda.jar \
--acl public-read
aws s3 cp s3://$STAGE_BUCKET/apm/java/$AGENT_VERSION/solarwinds-apm-config.json \
s3://$STAGE_BUCKET/apm/java/latest/solarwinds-apm-config.json \
--acl public-read
touch VERSION
echo "version: $AGENT_VERSION" >> VERSION
SHA256=$(sha256sum agent/build/libs/solarwinds-apm-agent.jar)
echo "sha256: $SHA256" >> VERSION
aws s3 cp VERSION \
s3://$STAGE_BUCKET/apm/java/latest/VERSION \
--acl public-read
env:
AGENT_VERSION: ${{ steps.set_version.outputs.version }}
build-test-images:
runs-on: ubuntu-latest
needs:
- s3-stage-upload
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker login
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build xk6 image
uses: docker/build-push-action@v6
with:
context: long-running-test-arch/xk6
platforms: linux/amd64
push: true
tags: "ghcr.io/${{github.repository_owner}}/xk6:latest"
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build rc image
uses: docker/build-push-action@v6
with:
context: long-running-test-arch
file: long-running-test-arch/Dockerfile-rc
platforms: linux/amd64
push: true
tags: "ghcr.io/${{github.repository_owner}}/petclinic:agent-rc"
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build stable image
uses: docker/build-push-action@v6
with:
context: long-running-test-arch
platforms: linux/amd64
push: true
tags: "ghcr.io/${{github.repository_owner}}/petclinic:agent-latest"
cache-from: type=gha
cache-to: type=gha,mode=max
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Build agent
run: ./gradlew clean build -x test
- name: Muzzle check
run: ./gradlew muzzle
- name: Execute tests
run: ./gradlew test
- name: Check shading
run: |
code=0
for path in $(jar -tf agent/build/libs/solarwinds-apm-agent.jar | grep -E -v '^((com/solarwinds|inst|io/open|META))')
do
PACKAGE=$(echo "$path" | awk -F/ '{print $2}')
if [ -n "$PACKAGE" ] && [ "$PACKAGE" != "annotation" ]; then
echo "Package ($path) is not shaded"
code=1
fi
done
exit $code
lambda=0
for path in $(jar -tf agent-lambda/build/libs/solarwinds-apm-agent-lambda.jar | grep -E -v '^((com/solarwinds|inst|io/open|META))')
do
PACKAGE=$(echo "$path" | awk -F/ '{print $2}')
if [ -n "$PACKAGE" ] && [ "$PACKAGE" != "annotation" ]; then
echo "Package ($path) is not shaded"
lambda=1
fi
done
exit $lambda
lambda-release-test:
runs-on: ubuntu-latest
needs:
- s3-stage-upload
env:
LAMBDA: "true"
OTEL_EXPORTER_OTLP_ENDPOINT: ${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }}
steps:
- uses: actions/checkout@v4
- name: Free Disk Space before Build
run: |
echo "Disk space before pre-build cleanup:"
df -h
sudo rm -rf /usr/local/.ghcup
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo rm -rf /usr/local/lib/android/sdk/ndk
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
echo "Disk space after pre-build cleanup:"
df -h
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Set agent version
id: set_version
uses: ./.github/actions/version
- name: Set snapshot version
run: |
GIT_HASH=$(git rev-parse --short "$GITHUB_SHA")
echo "AGENT_VERSION=${{ steps.set_version.outputs.version }}.$GIT_HASH" >> $GITHUB_ENV
- name: Build smoke-test
run: |
cd smoke-tests
./gradlew build -x test
- name: Build webmvc jar
run: |
cd smoke-tests
./gradlew :spring-boot-webmvc:build
- name: Build webmvc image
run: |
cd smoke-tests/spring-boot-webmvc
docker image build --tag smt:webmvc .
- name: Docker login
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $GITHUB_USERNAME --password-stdin
- name: Execute smoke tests
run: |
cd smoke-tests
./gradlew test
- uses: actions/upload-artifact@v4
if: always()
with:
path: smoke-tests/build/reports/tests/test
name: lambda-release-test
- name: Free Disk Space After Build
run: |
echo "Disk space before post-build cleanup:"
df -h
sudo rm -rf /usr/local/.ghcup
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo rm -rf /usr/local/lib/android/sdk/ndk
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
sudo rm -rf smoke-tests/build/
echo "Disk space after post-build cleanup:"
df -h
- name: Docker logout
if: always()
run: docker logout
smoke-test-linux:
runs-on: ubuntu-latest
needs:
- s3-stage-upload
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Set agent version
id: set_version
uses: ./.github/actions/version
- name: Set snapshot version
run: |
GIT_HASH=$(git rev-parse --short "$GITHUB_SHA")
echo "AGENT_VERSION=${{ steps.set_version.outputs.version }}.$GIT_HASH" >> $GITHUB_ENV
- name: Run application
working-directory: smoke-tests
run: |
./gradlew :netty-test:run
env:
SW_APM_SERVICE_KEY: ${{ secrets.SW_APM_SERVICE_KEY }}:smoke-test-linux
smoke-test-no-agent:
runs-on: ubuntu-latest
needs:
- s3-stage-upload
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Set agent version
id: set_version
uses: ./.github/actions/version
- name: Set snapshot version
run: |
GIT_HASH=$(git rev-parse --short "$GITHUB_SHA")
echo "AGENT_VERSION=${{ steps.set_version.outputs.version }}.$GIT_HASH" >> $GITHUB_ENV
- name: Run application
working-directory: smoke-tests
run: |
./gradlew :netty-test-no-agent:run
smoke-test-windows:
runs-on: windows-latest
needs:
- s3-stage-upload
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Set agent version
id: set_version
uses: ./.github/actions/version
- name: Set snapshot version
shell: bash
run: |
GIT_HASH=$(git rev-parse --short "$GITHUB_SHA")
echo "AGENT_VERSION=${{ steps.set_version.outputs.version }}.$GIT_HASH" >> $GITHUB_ENV
- name: Run application
working-directory: smoke-tests
run: |
.\gradlew.bat :netty-test:run
env:
SW_APM_SERVICE_KEY: ${{ secrets.SW_APM_SERVICE_KEY }}:smoke-test-windows
release-test:
runs-on: ubuntu-latest
env:
LAMBDA: "false"
needs:
- s3-stage-upload
steps:
- uses: actions/checkout@v4
- name: Free Disk Space before Build
run: |
echo "Disk space before pre-build cleanup:"
df -h
sudo rm -rf /usr/local/.ghcup
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo rm -rf /usr/local/lib/android/sdk/ndk
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
echo "Disk space after pre-build cleanup:"
df -h
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Docker login
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $GITHUB_USERNAME --password-stdin
- name: Set agent version
id: set_version
uses: ./.github/actions/version
- name: Set snapshot version
run: |
GIT_HASH=$(git rev-parse --short "$GITHUB_SHA")
echo "AGENT_VERSION=${{ steps.set_version.outputs.version }}.$GIT_HASH" >> $GITHUB_ENV
- name: Build smoke-test
run: |
cd smoke-tests
./gradlew build -x test
- name: Build webmvc jar
run: |
cd smoke-tests
./gradlew :spring-boot-webmvc:build
- name: Build webmvc image
run: |
cd smoke-tests/spring-boot-webmvc
docker image build --tag smt:webmvc .
- name: Execute smoke tests
run: |
cd smoke-tests
./gradlew test
- uses: actions/upload-artifact@v4
if: always()
with:
path: smoke-tests/build/reports/tests/test
name: release-test
- name: Free Disk Space After Build
run: |
echo "Disk space before post-build cleanup:"
df -h
sudo rm -rf /usr/local/.ghcup
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo rm -rf /usr/local/lib/android/sdk/ndk
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
sudo rm -rf smoke-tests/build/
echo "Disk space after post-build cleanup:"
df -h
- name: Docker logout
if: always()
run: docker logout
release-test-v2:
runs-on: ubuntu-latest
if: always()
env:
SMOKEV2: "true"
needs:
- release-test
steps:
- uses: actions/checkout@v4
- name: Free Disk Space before Build
run: |
echo "Disk space before pre-build cleanup:"
df -h
sudo rm -rf /usr/local/.ghcup
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo rm -rf /usr/local/lib/android/sdk/ndk
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
echo "Disk space after pre-build cleanup:"
df -h
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Docker login
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $GITHUB_USERNAME --password-stdin
- name: Set agent version
id: set_version
uses: ./.github/actions/version
- name: Set snapshot version
run: |
GIT_HASH=$(git rev-parse --short "$GITHUB_SHA")
echo "AGENT_VERSION=${{ steps.set_version.outputs.version }}.$GIT_HASH" >> $GITHUB_ENV
- name: Build smoke-test
run: |
cd smoke-tests
./gradlew build -x test
- name: Build webmvc jar
run: |
cd smoke-tests
./gradlew :spring-boot-webmvc:build
- name: Build webmvc image
run: |
cd smoke-tests/spring-boot-webmvc
docker image build --tag smt:webmvc .
- name: Execute smoke tests
run: |
cd smoke-tests
./gradlew test
- uses: actions/upload-artifact@v4
if: always()
with:
path: smoke-tests/build/reports/tests/test
name: release-test-v2
- name: Free Disk Space After Build
run: |
echo "Disk space before post-build cleanup:"
df -h
sudo rm -rf /usr/local/.ghcup
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo rm -rf /usr/local/lib/android/sdk/ndk
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
sudo rm -rf smoke-tests/build/
echo "Disk space after post-build cleanup:"
df -h
- name: Docker logout
if: always()
run: docker logout
benchmark:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
needs:
- s3-stage-upload
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Docker login
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $GITHUB_USERNAME --password-stdin
- name: Benchmark test
working-directory: benchmark
run: ./gradlew test
- uses: actions/upload-artifact@v4
with:
path: benchmark/results/release/summary.txt
name: benchmark-summary
- uses: actions/upload-artifact@v4
if: always()
with:
path: benchmark/build/reports/tests/test/
name: benchmark-test
- name: Docker logout
if: always()
run: docker logout
maven_snapshot_release:
runs-on: ubuntu-latest
env:
SNAPSHOT_BUILD: true
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Set agent version
id: set_version
uses: ./.github/actions/version
- name: Set snapshot version
run: |
GIT_HASH=$(git rev-parse --short "$GITHUB_SHA")
echo "AGENT_VERSION=${{ steps.set_version.outputs.version }}.$GIT_HASH" >> $GITHUB_ENV
- name: Publish
run: ./gradlew publishToSonatype
docker_hub:
name: run scan on commit without pushing image
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Set agent version
id: set_version
uses: ./.github/actions/version
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKER_SOLARWINDS_ORG_LOGIN }}
password: ${{ secrets.ENOPS5919_APM_DOCKER_HUB_CI_OAT }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ github.repository_owner }}/autoinstrumentation-java
tags: |
type=raw,value=${{ steps.set_version.outputs.version }}
type=raw,value=latest
labels: |
maintainer=swo-librarians
org.opencontainers.image.title=apm-java
org.opencontainers.image.description=Solarwinds OTEL distro Java agent
org.opencontainers.image.vendor=SolarWinds Worldwide, LLC
- name: Build
uses: docker/build-push-action@v6
with:
context: agent
platforms: linux/amd64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
load: true
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.ENOPS5919_DOCKER_SCOUT_CI_USER }}
password: ${{ secrets.ENOPS5919_DOCKER_SCOUT_CI_PAT }}
- name: Analyze for critical and high CVEs -> linux/amd64
uses: docker/scout-action@v1
with:
command: cves
image: ${{ steps.meta.outputs.tags[0] }}
platform: "linux/amd64"
sarif-file: sarif.output.json
- name: Upload SARIF result
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: sarif.output.json