@@ -2,17 +2,16 @@ name: Build
22
33on :
44 push :
5- branches : [ main ]
5+ branches : [main]
66 pull_request :
77
88jobs :
99 matrix-build :
10-
1110 permissions :
1211 contents : read
1312
1413 strategy :
15- fail-fast : true
14+ fail-fast : false
1615 matrix :
1716 java : [17]
1817 os : [ubuntu-latest, macos-latest, windows-latest]
@@ -34,83 +33,81 @@ jobs:
3433 DEFAULT_OS : ubuntu-latest
3534
3635 steps :
37-
38- - uses : actions/checkout@v4
39- with :
40- fetch-depth : 0
41-
42- - uses : actions/setup-java@v4
43- with :
44- distribution : ' temurin'
45- java-version : |
46- 17
47- 21
48- cache : ' maven'
49-
50- - name : Cache SonarQube packages
51- if : ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }}
52- uses : actions/cache@v4
53- with :
54- path : ~/.sonar/cache
55- key : ${{ runner.os }}-sonar
56- restore-keys : ${{ runner.os }}-sonar
57-
58- - name : Build with Java ${{ matrix.java }}
59- run : |
60- mvn --batch-mode -T 1C clean org.jacoco:jacoco-maven-plugin:prepare-agent install \
61- -Djava.version=${{ matrix.java }}
62-
63- - name : Sonar analysis
64- if : ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java && env.SONAR_TOKEN != null }}
65- run : |
66- mvn --batch-mode org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
67- -Dsonar.token=$SONAR_TOKEN
68- env :
69- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
70- SONAR_TOKEN : ${{ secrets.SONAR_TOKEN }}
71-
72- - name : Verify reproducible build
73- # 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"
74- if : ${{ matrix.os != 'windows-latest' }}
75- run : |
76- mvn --batch-mode -T 1C clean verify artifact:compare -DskipTests \
77- -Djava.version=${{ matrix.java }}
78-
79- - name : Archive aggregated reproducible build report
80- uses : actions/upload-artifact@v4
81- if : ${{ matrix.os != 'windows-latest' }}
82- with :
83- name : reproducible-build-report-${{ matrix.os }}-java-${{ matrix.java }}
84- path : |
85- target/openfasttrace-root-0.0.0.buildcompare
86- target/openfasttrace-root-0.0.0.buildinfo
87- if-no-files-found : error
88-
89- - name : Archive oft binary
90- uses : actions/upload-artifact@v4
91- if : ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }}
92- with :
93- name : openfasttrace-binaries
94- path : |
95- product/target/openfasttrace-*.jar
96- !product/target/openfasttrace-*-javadoc.jar
97- !product/target/openfasttrace-*-sources.jar
98- if-no-files-found : error
99-
100- - name : Run self-trace
101- run : ./oft-self-trace.sh
102-
103- - name : Upload self-tracing report
104- uses : actions/upload-artifact@v4
105- if : ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }}
106- with :
107- name : self-tracing-report
108- path : target/self-trace-report.html
109- if-no-files-found : error
110-
111- - name : Check shell scripts
112- if : ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }}
113- run : .github/workflows/run_shellcheck.sh
36+ - uses : actions/checkout@v4
37+ with :
38+ fetch-depth : 0
39+
40+ - uses : actions/setup-java@v4
41+ name : Set up Java ${{ matrix.java }}
42+ with :
43+ distribution : " temurin"
44+ java-version : ${{ matrix.java }}
45+ cache : " maven"
46+
47+ - name : Cache SonarQube packages
48+ if : ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }}
49+ uses : actions/cache@v4
50+ with :
51+ path : ~/.sonar/cache
52+ key : ${{ runner.os }}-sonar
53+ restore-keys : ${{ runner.os }}-sonar
54+
55+ - name : Build with Java ${{ matrix.java }}
56+ run : |
57+ mvn --batch-mode -T 1C clean org.jacoco:jacoco-maven-plugin:prepare-agent install \
58+ -Djava.version=${{ matrix.java }}
59+
60+ - name : Sonar analysis
61+ if : ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java && env.SONAR_TOKEN != null }}
62+ run : |
63+ mvn --batch-mode org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
64+ -Dsonar.token=$SONAR_TOKEN
65+ env :
66+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
67+ SONAR_TOKEN : ${{ secrets.SONAR_TOKEN }}
68+
69+ - name : Verify reproducible build
70+ # 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"
71+ if : ${{ matrix.os != 'windows-latest' }}
72+ run : |
73+ mvn --batch-mode -T 1C clean verify artifact:compare -DskipTests \
74+ -Djava.version=${{ matrix.java }}
75+
76+ - name : Archive aggregated reproducible build report
77+ uses : actions/upload-artifact@v4
78+ if : ${{ matrix.os != 'windows-latest' }}
79+ with :
80+ name : reproducible-build-report-${{ matrix.os }}-java-${{ matrix.java }}
81+ path : |
82+ target/openfasttrace-root-0.0.0.buildcompare
83+ target/openfasttrace-root-0.0.0.buildinfo
84+ if-no-files-found : error
85+
86+ - name : Archive oft binary
87+ uses : actions/upload-artifact@v4
88+ if : ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }}
89+ with :
90+ name : openfasttrace-binaries
91+ path : |
92+ product/target/openfasttrace-*.jar
93+ !product/target/openfasttrace-*-javadoc.jar
94+ !product/target/openfasttrace-*-sources.jar
95+ if-no-files-found : error
96+
97+ - name : Run self-trace
98+ run : ./oft-self-trace.sh
99+
100+ - name : Upload self-tracing report
101+ uses : actions/upload-artifact@v4
102+ if : ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }}
103+ with :
104+ name : self-tracing-report
105+ path : target/self-trace-report.html
106+ if-no-files-found : error
107+
108+ - name : Check shell scripts
109+ if : ${{ env.DEFAULT_OS == matrix.os && env.DEFAULT_JAVA == matrix.java }}
110+ run : .github/workflows/run_shellcheck.sh
114111
115112 build :
116113 needs : matrix-build
0 commit comments