#413: Load plugins from JAR files (#416) #530
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: | |
jobs: | |
matrix-build: | |
permissions: | |
contents: read | |
strategy: | |
fail-fast: false | |
matrix: | |
java: [17] | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
include: | |
- os: ubuntu-latest | |
java: 21 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-os-${{ matrix.os }}-java-${{ matrix.java }} | |
cancel-in-progress: true | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: "bash" | |
name: "Build on ${{ matrix.os }} with Java ${{ matrix.java }}" | |
env: | |
DEFAULT_JAVA: 17 | |
DEFAULT_OS: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-java@v4 | |
name: Set up Java ${{ matrix.java }} | |
with: | |
distribution: "temurin" | |
java-version: ${{ matrix.java }} | |
cache: "maven" | |
- name: Cache SonarQube packages | |
if: ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }} | |
uses: actions/cache@v4 | |
with: | |
path: ~/.sonar/cache | |
key: ${{ runner.os }}-sonar | |
restore-keys: ${{ runner.os }}-sonar | |
- name: Build with Java ${{ matrix.java }} | |
run: | | |
mvn --batch-mode -T 1C clean org.jacoco:jacoco-maven-plugin:prepare-agent install \ | |
-Djava.version=${{ matrix.java }} | |
- name: Sonar analysis | |
if: ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java && env.SONAR_TOKEN != null }} | |
run: | | |
mvn --batch-mode org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \ | |
-Dsonar.token=$SONAR_TOKEN | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
- name: Verify reproducible build | |
# Build fails on Windows with error "Failed to execute goal org.apache.maven.plugins:maven-artifact-plugin:3.5.0:compare (default-cli) on project openfasttrace-reporter-plaintext: Could not copy D:\a\openfasttrace\openfasttrace\reporter\plaintext\target\openfasttrace-reporter-plaintext-3.8.0.buildcompareto D:\a\openfasttrace\openfasttrace\target\openfasttrace-root-0.0.0.buildcompare" | |
if: ${{ matrix.os != 'windows-latest' }} | |
run: | | |
mvn --batch-mode -T 1C clean verify artifact:compare -DskipTests \ | |
-Djava.version=${{ matrix.java }} | |
- name: Archive aggregated reproducible build report | |
uses: actions/upload-artifact@v4 | |
if: ${{ matrix.os != 'windows-latest' }} | |
with: | |
name: reproducible-build-report-${{ matrix.os }}-java-${{ matrix.java }} | |
path: | | |
target/openfasttrace-root-0.0.0.buildcompare | |
target/openfasttrace-root-0.0.0.buildinfo | |
if-no-files-found: error | |
- name: Archive oft binary | |
uses: actions/upload-artifact@v4 | |
if: ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }} | |
with: | |
name: openfasttrace-binaries | |
path: | | |
product/target/openfasttrace-*.jar | |
!product/target/openfasttrace-*-javadoc.jar | |
!product/target/openfasttrace-*-sources.jar | |
if-no-files-found: error | |
- name: Run self-trace | |
run: ./oft-self-trace.sh | |
- name: Upload self-tracing report | |
uses: actions/upload-artifact@v4 | |
if: ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }} | |
with: | |
name: self-tracing-report | |
path: target/self-trace-report.html | |
if-no-files-found: error | |
- name: Check shell scripts | |
if: ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }} | |
run: .github/workflows/run_shellcheck.sh | |
build: | |
needs: matrix-build | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "Build successful" |