Skip to content

Fix thread safety, error handling, and code clarity in agent bootstrap #953

Fix thread safety, error handling, and code clarity in agent bootstrap

Fix thread safety, error handling, and code clarity in agent bootstrap #953

Workflow file for this run

# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
name: BTrace CI/CD
on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]
workflow_dispatch:
defaults:
run:
shell: bash
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Cache Java binaries
id: cache-java
uses: actions/cache@v5
with:
path: ${{ runner.tool_cache }}/Java_*
key: java-${{ runner.os }}-temurin-11
- name: Set up Java
if: steps.cache-java.outputs.cache-hit != 'true'
uses: actions/setup-java@v5
with:
java-version: 11
distribution: temurin
- name: Checkout
uses: actions/checkout@v6
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Generate cache key
id: cache-key
run: |
key="${{ runner.os }}-gradle-1-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}"
echo "key=${key}" >> $GITHUB_ENV
echo "cache-key=${key}" >> $GITHUB_OUTPUT
- name: Cache Gradle
uses: actions/cache@v5
with:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
key: ${{ env.key }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build
run: ./gradlew --no-daemon --parallel --build-cache build
- name: Run V2 Protocol Tests
run: |
./gradlew :btrace-core:test --tests "org.openjdk.btrace.core.comm.v2.*" \
--tests "org.openjdk.btrace.core.comm.Protocol*" \
--tests "org.openjdk.btrace.core.comm.WireProtocol*"
- name: Upload dist build data
if: always()
uses: actions/upload-artifact@v6
with:
name: dist-build
retention-days: 1
path: |
btrace-dist/build
btrace-instr/build/classes/traces
- name: Upload test trace data
if: always()
uses: actions/upload-artifact@v6
with:
name: test-trace
retention-days: 1
path: |
btrace-instr/build/classes/traces
- name: Archive test reports
if: always()
uses: actions/upload-artifact@v6
with:
name: test-reports
path: |
**/reports/**/*
outputs:
cache-key: ${{ steps.cache-key.outputs.cache-key }}
test:
needs: build
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
java: [ 8.0.482-tem, 11.0.30-tem, 17.0.18-tem, 21.0.10-tem, 25.0.2-tem, 26.ea.35-open ]
env:
TEST_JAVA_HOME: "/home/runner/.sdkman/candidates/java/${{ matrix.java }}"
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Prepare OS
run: |
sudo apt-get update
sudo apt-get install -y curl zip unzip
- name: Prepare JDK ${{ matrix.java_version }}
run: |
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
echo 'n' | sdk install java ${{ matrix.java }}
which java
echo 'y' | sdk install java 11.0.30-tem
- name: Cache Gradle
uses: actions/cache@v5
with:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
key: ${{ needs.build.outputs.cache-key }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Download build data
uses: actions/download-artifact@v7
with:
name: dist-build
path: btrace-dist/build
- name: Download test trace data
uses: actions/download-artifact@v7
with:
name: test-trace
path: btrace-instr/build/classes/traces
- name: Build btrace-instr jar
run: |
./gradlew --no-daemon --parallel --build-cache :btrace-instr:jar
- name: Run tests
run: |
set +x
./gradlew --no-daemon --parallel --build-cache -Pintegration -PCI :integration-tests:test
- name: Check Gradle cache size
run: du -sh ~/.gradle/caches
- name: Integration test reports
if: always()
uses: actions/upload-artifact@v6
with:
name: integration-test-reports-${{ matrix.java }}
path: |
integration-tests/build/reports/**/*
- name: Archive binary artifacts
if: success() && matrix.java == '11'
uses: actions/upload-artifact@v6
with:
name: btrace-dist
path: |
btrace-dist/build/distributions/**/btrace-*-bin*.tar.gz
publish:
if: github.ref == 'refs/heads/develop'
needs:
- test
- build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Cache Java binaries
id: cache-java
uses: actions/cache@v5
with:
path: ${{ runner.tool_cache }}/Java_*
key: java-${{ runner.os }}-temurin-11
- name: Set up Java
if: steps.cache-java.outputs.cache-hit != 'true'
uses: actions/setup-java@v5
with:
java-version: 11
distribution: temurin
- name: Cache Gradle
uses: actions/cache@v5
with:
path: |
~/.gradle/caches/modules-2
~/.gradle/wrapper
key: ${{ needs.build.outputs.cache-key }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Download build data
uses: actions/download-artifact@v7
with:
name: dist-build
- name: Deploy Maven
run: ./gradlew -x test :btrace-dist:publish
env:
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
GPG_SIGNING_PWD: ${{ secrets.GPG_SIGNING_PWD }}
SONATYPE_USER: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
cleanup:
runs-on: ubuntu-latest
needs: publish
steps:
- name: Cleanup temporary artifacts
uses: geekyeggo/delete-artifact@v5
with:
name: dist-build