Skip to content
This repository was archived by the owner on Dec 4, 2025. It is now read-only.

Commit 6c12725

Browse files
authored
Merge pull request #918 from linwumingshi/ci/error-log
Refine build logs handling and error reporting in GitHub Actions
2 parents 2795e19 + 7ca894b commit 6c12725

1 file changed

Lines changed: 129 additions & 25 deletions

File tree

.github/workflows/build-and-run-example-project.yml

Lines changed: 129 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,19 @@ jobs:
2626
java-version: '8'
2727
distribution: 'temurin'
2828

29+
- name: Create Logs Directory
30+
run: mkdir -p logs
31+
2932
- name: Update Version in pom.xml
3033
run: mvn versions:set -DnewVersion="${{ env.smart-doc-version }}" -DgenerateBackupPoms=false
3134

3235
- name: Build and Install Plugin
33-
run: mvn install
36+
run: |
37+
mvn install 2>&1 | tee logs/build.log
38+
if grep -E "\[ERROR\]" logs/build.log; then
39+
cat logs/build.log
40+
exit 1
41+
fi
3442
3543
- name: Upload Plugin Artifact
3644
id: upload-artifact
@@ -40,6 +48,13 @@ jobs:
4048
path: ~/.m2/repository/com/ly/smart-doc
4149
if-no-files-found: error
4250

51+
- name: Upload Build Log
52+
if: failure() # Only run if previous steps fail
53+
uses: actions/upload-artifact@v4
54+
with:
55+
name: error-log-smart-doc-build
56+
path: logs/build.log
57+
4358
maven-plugin-build:
4459
needs: build
4560
runs-on: ubuntu-latest
@@ -60,6 +75,9 @@ jobs:
6075
java-version: '8'
6176
distribution: 'temurin'
6277

78+
- name: Create Logs Directory
79+
run: mkdir -p logs
80+
6381
- name: Download Artifact
6482
uses: actions/download-artifact@v4
6583
with:
@@ -79,7 +97,12 @@ jobs:
7997
mvn versions:set-property -Dproperty="smart-doc.version" -DnewVersion="${{ env.smart-doc-version }}" -DgenerateBackupPoms=false
8098
8199
- name: Build and Install
82-
run: mvn -DskipTests=true install
100+
run: |
101+
mvn -DskipTests=true install 2>&1 | tee logs/install-plugin.log
102+
if grep -E "\[ERROR\]" logs/install-plugin.log; then
103+
cat logs/install-plugin.log
104+
exit 1
105+
fi
83106
84107
- name: Upload Plugin Artifact
85108
id: upload-artifact
@@ -89,6 +112,13 @@ jobs:
89112
path: ~/.m2/repository/com/ly/smart-doc
90113
if-no-files-found: error
91114

115+
- name: Upload Plugin Build Log
116+
if: failure() # Only run if previous steps fail
117+
uses: actions/upload-artifact@v4
118+
with:
119+
name: error-log-maven-plugin-build
120+
path: logs/install-plugin.log
121+
92122
generate-api-docs:
93123
needs: maven-plugin-build
94124
runs-on: ubuntu-latest
@@ -112,6 +142,9 @@ jobs:
112142
java-version: '17'
113143
distribution: 'temurin'
114144

145+
- name: Create Logs Directory
146+
run: mkdir -p logs
147+
115148
- name: Download Artifact
116149
uses: actions/download-artifact@v4
117150
with:
@@ -131,35 +164,73 @@ jobs:
131164
mvn versions:set-property -Dproperty="smart-doc.version" -DnewVersion="${{ env.smart-doc-version }}" -DgenerateBackupPoms=false
132165
133166
- name: Build and Install Example Project
134-
run: mvn -DskipTests=true install
167+
run: |
168+
mvn -DskipTests=true install 2>&1 | tee logs/build-example-project.log
169+
if grep -E "\[ERROR\]" logs/build-example-project.log; then
170+
cat logs/build-example-project.log
171+
exit 1
172+
fi
135173
136174
- name: Generate ${{ matrix.doc_type }} API Documentation
137175
run: |
138176
case ${{ matrix.doc_type }} in
139177
rest)
140-
mvn -DskipTests=true smart-doc:adoc
141-
mvn -DskipTests=true smart-doc:html
142-
mvn -DskipTests=true smart-doc:jmeter
143-
mvn -DskipTests=true smart-doc:markdown
144-
mvn -DskipTests=true smart-doc:openapi
145-
mvn -DskipTests=true smart-doc:postman
146-
mvn -DskipTests=true smart-doc:word
147-
mvn test -Dtest=com.power.doc.torna.TornaApiTest
178+
mvn -DskipTests=true smart-doc:adoc 2>&1 | tee logs/rest-adoc.log
179+
if grep -E "\[ERROR\]" logs/rest-adoc.log; then cat logs/rest-adoc.log; exit 1; fi
180+
181+
mvn -DskipTests=true smart-doc:html 2>&1 | tee logs/rest-html.log
182+
if grep -E "\[ERROR\]" logs/rest-html.log; then cat logs/rest-html.log; exit 1; fi
183+
184+
mvn -DskipTests=true smart-doc:jmeter 2>&1 | tee logs/rest-jmeter.log
185+
if grep -E "\[ERROR\]" logs/rest-jmeter.log; then cat logs/rest-jmeter.log; exit 1; fi
186+
187+
mvn -DskipTests=true smart-doc:markdown 2>&1 | tee logs/rest-markdown.log
188+
if grep -E "\[ERROR\]" logs/rest-markdown.log; then cat logs/rest-markdown.log; exit 1; fi
189+
190+
mvn -DskipTests=true smart-doc:openapi 2>&1 | tee logs/rest-openapi.log
191+
if grep -E "\[ERROR\]" logs/rest-openapi.log; then cat logs/rest-openapi.log; exit 1; fi
192+
193+
mvn -DskipTests=true smart-doc:postman 2>&1 | tee logs/rest-postman.log
194+
if grep -E "\[ERROR\]" logs/rest-postman.log; then cat logs/rest-postman.log; exit 1; fi
195+
196+
mvn -DskipTests=true smart-doc:swagger 2>&1 | tee logs/rest-swagger.log
197+
if grep -E "\[ERROR\]" logs/rest-swagger.log; then cat logs/rest-swagger.log; exit 1; fi
198+
199+
mvn -DskipTests=true smart-doc:word 2>&1 | tee logs/rest-word.log
200+
if grep -E "\[ERROR\]" logs/rest-word.log; then cat logs/rest-word.log; exit 1; fi
201+
202+
mvn test -Dtest=com.power.doc.torna.TornaApiTest 2>&1 | tee logs/rest-TornaApiTest.log
203+
if grep -E "\[ERROR\]" logs/rest-TornaApiTest.log; then cat logs/rest-TornaApiTest.log; exit 1; fi
148204
;;
149205
dubbo)
150-
mvn -DskipTests=true smart-doc:rpc-adoc
151-
mvn -DskipTests=true smart-doc:rpc-html
152-
mvn -DskipTests=true smart-doc:rpc-markdown
206+
mvn -DskipTests=true smart-doc:rpc-adoc 2>&1 | tee logs/rpc-adoc.log
207+
if grep -E "\[ERROR\]" logs/rpc-adoc.log; then cat logs/rpc-adoc.log; exit 1; fi
208+
209+
mvn -DskipTests=true smart-doc:rpc-html 2>&1 | tee logs/rpc-html.log
210+
if grep -E "\[ERROR\]" logs/rpc-html.log; then cat logs/rpc-html.log; exit 1; fi
211+
212+
mvn -DskipTests=true smart-doc:rpc-markdown 2>&1 | tee logs/rpc-markdown.log
213+
if grep -E "\[ERROR\]" logs/rpc-markdown.log; then cat logs/rpc-markdown.log; exit 1; fi
153214
;;
154215
javadoc)
155-
mvn -DskipTests=true smart-doc:javadoc-adoc
156-
mvn -DskipTests=true smart-doc:javadoc-html
157-
mvn -DskipTests=true smart-doc:javadoc-markdown
216+
mvn -DskipTests=true smart-doc:javadoc-adoc 2>&1 | tee logs/javadoc-adoc.log
217+
if grep -E "\[ERROR\]" logs/javadoc-adoc.log; then cat logs/javadoc-adoc.log; exit 1; fi
218+
219+
mvn -DskipTests=true smart-doc:javadoc-html 2>&1 | tee logs/javadoc-html.log
220+
if grep -E "\[ERROR\]" logs/javadoc-html.log; then cat logs/javadoc-html.log; exit 1; fi
221+
222+
mvn -DskipTests=true smart-doc:javadoc-markdown 2>&1 | tee logs/javadoc-markdown.log
223+
if grep -E "\[ERROR\]" logs/javadoc-markdown.log; then cat logs/javadoc-markdown.log; exit 1; fi
158224
;;
159225
websocket)
160-
mvn -DskipTests=true smart-doc:websocket-adoc
161-
mvn -DskipTests=true smart-doc:websocket-html
162-
mvn -DskipTests=true smart-doc:websocket-markdown
226+
mvn -DskipTests=true smart-doc:websocket-adoc 2>&1 | tee logs/websocket-adoc.log
227+
if grep -E "\[ERROR\]" logs/websocket-adoc.log; then cat logs/websocket-adoc.log; exit 1; fi
228+
229+
mvn -DskipTests=true smart-doc:websocket-html 2>&1 | tee logs/websocket-html.log
230+
if grep -E "\[ERROR\]" logs/websocket-html.log; then cat logs/websocket-html.log; exit 1; fi
231+
232+
mvn -DskipTests=true smart-doc:websocket-markdown 2>&1 | tee logs/websocket-markdown.log
233+
if grep -E "\[ERROR\]" logs/websocket-markdown.log; then cat logs/websocket-markdown.log; exit 1; fi
163234
;;
164235
esac
165236
@@ -170,6 +241,13 @@ jobs:
170241
path: ${{ github.workspace }}/target/doc/
171242
if-no-files-found: error
172243

244+
- name: Upload ${{ matrix.doc_type }} API Documentation Logs
245+
if: failure()
246+
uses: actions/upload-artifact@v4
247+
with:
248+
name: error-log-${{ matrix.doc_type }}-api-docs
249+
path: logs
250+
173251
generate-grpc-api-doc:
174252
needs: maven-plugin-build
175253
runs-on: ${{ matrix.os }}
@@ -193,6 +271,10 @@ jobs:
193271
java-version: '17'
194272
distribution: 'temurin'
195273

274+
- name: Create Logs Directory
275+
run: mkdir -p logs
276+
shell: bash
277+
196278
- name: Download Artifact
197279
uses: actions/download-artifact@v4
198280
with:
@@ -218,20 +300,42 @@ jobs:
218300
mvn versions:set-property -Dproperty="smart-doc.version" -DnewVersion="${{ env.smart-doc-version }}" -DgenerateBackupPoms=false
219301
220302
- name: Build and Install Example Project
221-
run: mvn -DskipTests=true install
303+
run: |
304+
mvn -DskipTests=true install 2>&1 | tee logs/build-example-project.log
305+
if grep -E "\[ERROR\]" logs/build-example-project.log; then
306+
cat logs/build-example-project.log
307+
exit 1
308+
fi
309+
shell: bash
222310

223311
- name: Generate gRPC AsciiDoc Documentation
224-
run: mvn -DskipTests=true smart-doc:grpc-adoc
312+
run: |
313+
mvn -DskipTests=true smart-doc:grpc-adoc 2>&1 | tee logs/grpc-adoc.log
314+
if grep -E "\[ERROR\]" logs/grpc-adoc.log; then cat logs/grpc-adoc.log; exit 1; fi
315+
shell: bash
225316

226317
- name: Generate gRPC HTML Documentation
227-
run: mvn -DskipTests=true smart-doc:grpc-html
318+
run: |
319+
mvn -DskipTests=true smart-doc:grpc-html 2>&1 | tee logs/grpc-html.log
320+
if grep -E "\[ERROR\]" logs/grpc-html.log; then cat logs/grpc-html.log; exit 1; fi
321+
shell: bash
228322

229323
- name: Generate gRPC Markdown Documentation
230-
run: mvn -DskipTests=true smart-doc:grpc-markdown
324+
run: |
325+
mvn -DskipTests=true smart-doc:grpc-markdown 2>&1 | tee logs/grpc-markdown.log
326+
if grep -E "\[ERROR\]" logs/grpc-markdown.log; then cat logs/grpc-markdown.log; exit 1; fi
327+
shell: bash
231328

232329
- name: Upload gRPC API Documentation
233330
uses: actions/upload-artifact@v4
234331
with:
235332
name: gRPC-api-doc-${{ runner.os }}
236333
path: ${{ github.workspace }}/target/doc/
237-
if-no-files-found: error
334+
if-no-files-found: error
335+
336+
- name: Upload ${{ runner.os }} gRPC API Documentation Log
337+
if: failure()
338+
uses: actions/upload-artifact@v4
339+
with:
340+
name: error-log-${{ runner.os }}-grpc-api-doc
341+
path: logs

0 commit comments

Comments
 (0)