Skip to content

Commit dd34aa0

Browse files
committed
step
1 parent 4060057 commit dd34aa0

File tree

4 files changed

+102
-37
lines changed

4 files changed

+102
-37
lines changed

.github/workflows/package_core.yml

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -275,43 +275,7 @@ jobs:
275275
pattern: test-report-*
276276
merge-multiple: true
277277

278-
- run: |
279-
ARTIFACTS=$(jq -cr 'map(.artifact) | unique | .[]' <<< ${ALL_BOARD_DATA}) # this avoids the 'zephyr' artifact
280-
for artifact in $ARTIFACTS ; do
281-
echo "### \`$artifact\` test results:" >> "$GITHUB_STEP_SUMMARY"
282-
jq -c "map(select(.artifact == \"$artifact\")) | .[]" <<< ${ALL_BOARD_DATA} | while read -r BOARD_DATA; do
283-
BOARD=$(echo $BOARD_DATA | jq -cr '.board')
284-
VARIANT=$(echo $BOARD_DATA | jq -cr '.variant')
285-
SUBARCH=$(echo $BOARD_DATA | jq -cr '.subarch')
286-
FQBN="arduino:$SUBARCH:$BOARD"
287-
REPORT_FILE="$(echo $FQBN | tr ':' '-').json"
288-
if [ ! -f $REPORT_FILE ]; then
289-
echo "* :x: $BOARD (\`$VARIANT\`) - No report found?" >> "$GITHUB_STEP_SUMMARY"
290-
else
291-
REPORT=$(jq -cr '.boards[0].sketches[0]' $REPORT_FILE)
292-
JOB_ID=$(echo $REPORT | jq -cr '.job_id')
293-
JOB_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/job/${JOB_ID}#step:5:2"
294-
if ! $(echo $REPORT | jq -cr '.compilation_success') ; then
295-
echo "* :x: [$BOARD]($JOB_URL) (\`$VARIANT\`) - Build failed" >> "$GITHUB_STEP_SUMMARY"
296-
else
297-
WARNINGS=$(echo $REPORT | jq -cr '.warnings.current.absolute // 0')
298-
if [ $WARNINGS -eq 0 ]; then
299-
echo "* :white_check_mark: $BOARD (\`$VARIANT\`) - Build successful" >> "$GITHUB_STEP_SUMMARY"
300-
else
301-
echo >> "$GITHUB_STEP_SUMMARY"
302-
echo "<details><summary>&nbsp;&nbsp; :warning: <a href=\"$JOB_URL\">$BOARD</a> (<tt>$VARIANT</tt>) - $WARNINGS warnings:</summary>" >> "$GITHUB_STEP_SUMMARY"
303-
echo >> "$GITHUB_STEP_SUMMARY"
304-
echo "\`\`\`" >> "$GITHUB_STEP_SUMMARY"
305-
echo $REPORT | jq -cr '.warnings_log[]' >> "$GITHUB_STEP_SUMMARY"
306-
echo "\`\`\`" >> "$GITHUB_STEP_SUMMARY"
307-
echo >> "$GITHUB_STEP_SUMMARY"
308-
echo "</details>" >> "$GITHUB_STEP_SUMMARY"
309-
echo >> "$GITHUB_STEP_SUMMARY"
310-
fi
311-
fi
312-
fi
313-
done
314-
done
278+
- run: extra/ci_collect_logs.sh
315279

316280
# - name: Clean up intermediate artifacts
317281
# uses: geekyeggo/[email protected]

extra/artifacts/zephyr_unoq.exc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
libraries/Ethernet/
2+
libraries/Storage/
3+
libraries/WiFi/
4+
libraries/Zephyr_SDRAM/

extra/artifacts/zephyr_unoq.only

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
libraries/Arduino_LED_Matrix/
2+
libraries/Arduino_RouterBridge/
3+
libraries/Arduino_RPClite/

extra/ci_collect_logs.sh

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
# Expectations:
6+
# - ALL_BOARD_DATA is set to a JSON array of objects with 'board', 'variant', 'subarch', and 'artifact' fields
7+
# - GITHUB_REPOSITORY and GITHUB_RUN_ID are set to identify the current GitHub Actions run
8+
# - Each report file is in the current directory, named as 'arduino-<subarch>-<board>.json', with ':' replaced by '-'
9+
10+
if [ -z "$ALL_BOARD_DATA" ] || [ -z "$GITHUB_REPOSITORY" ] || [ -z "$GITHUB_RUN_ID" ] ; then
11+
echo "Not in a Github CI run, cannot proceed."
12+
exit 0
13+
fi
14+
15+
artifact_entry() {
16+
ICON="$1"
17+
TEXT="$2"
18+
LINK="$3"
19+
20+
if [ -z "$LINK" ] ; then
21+
BOARD_LINK="$BOARD"
22+
else
23+
BOARD_LINK="<a href=\"$LINK\">$BOARD</a>"
24+
fi
25+
echo -n "<li><details><summary>$ICON $BOARD_LINK (\`$VARIANT\`) - $TEXT</summary>"
26+
echo -ne "\n\n$DETAILS"
27+
echo "</details></li>"
28+
}
29+
30+
details_line() {
31+
ICON="$1"
32+
TEXT="$2"
33+
echo "$ICON \`$SKETCH_NAME\`: $TEXT"
34+
}
35+
36+
ARTIFACTS=$(jq -cr 'map(.artifact) | unique | .[]' <<< ${ALL_BOARD_DATA}) # this avoids the 'zephyr' artifact
37+
for artifact in $ARTIFACTS ; do
38+
echo "### \`$artifact\` test results:"
39+
jq -c "map(select(.artifact == \"$artifact\")) | .[]" <<< ${ALL_BOARD_DATA} | while read -r BOARD_DATA; do
40+
BOARD=$(echo $BOARD_DATA | jq -cr '.board')
41+
VARIANT=$(echo $BOARD_DATA | jq -cr '.variant')
42+
SUBARCH=$(echo $BOARD_DATA | jq -cr '.subarch')
43+
FQBN="arduino:$SUBARCH:$BOARD"
44+
REPORT_FILE="$(echo $FQBN | tr ':' '-').json"
45+
46+
DETAILS=""
47+
ARTIFACT_LINK=""
48+
if [ ! -f $REPORT_FILE ]; then
49+
ARTIFACT_STATUS="fire"
50+
else
51+
REPORTS=$(jq -cr '.boards[0].sketches' $REPORT_FILE)
52+
JOB_ID=$(echo $REPORTS | jq -cr '.[0].job_id')
53+
ARTIFACT_LINK="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}/job/${JOB_ID}#step:5:2"
54+
55+
SKETCH_COUNT=$(echo $REPORTS | jq -cr 'length')
56+
SKETCH_ERRORS=0
57+
SKETCH_WARNINGS=0
58+
ARTIFACT_STATUS=success
59+
for i in $(seq 0 $((SKETCH_COUNT - 1))) ; do
60+
REPORT=$(echo $REPORTS | jq -cr ".[$i]")
61+
SKETCH_NAME=$(echo $REPORT | jq -cr '.name' | sed -e 's/.*libraries//' -e 's/examples\///')
62+
if ! $(echo $REPORT | jq -cr '.compilation_success') ; then
63+
SKETCH_ERRORS=$((SKETCH_ERRORS + 1))
64+
ARTIFACT_STATUS=error
65+
DETAILS="${DETAILS}$(details_line ":x:" "Compilation failed")\n"
66+
else
67+
SKETCH_WARNINGS=$((SKETCH_WARNINGS + 1))
68+
WARNINGS=$(echo $REPORT | jq -cr '.warnings.current.absolute // 0')
69+
if [ $WARNINGS -eq 0 ]; then
70+
[ $ARTIFACT_STATUS == "success" ] && ARTIFACT_STATUS="warning"
71+
DETAILS="${DETAILS}$(details_line ":white_check_mark:" "Build successful")\n"
72+
else
73+
DETAILS="${DETAILS}$(details_line ":grey_exclamation:" "$WARNINGS warnings")\n"
74+
fi
75+
fi
76+
done
77+
fi
78+
79+
case $ARTIFACT_STATUS in
80+
success)
81+
artifact_entry ":white_check_mark:" "All $SKETCH_COUNT sketches built successfully"
82+
;;
83+
warning)
84+
artifact_entry ":grey_exclamation:" "All $SKETCH_COUNT sketches built, $SKETCH_WARNINGS with warnings" "$ARTIFACT_LINK"
85+
;;
86+
error)
87+
artifact_entry ":x:" "$SKETCH_ERRORS out of $SKETCH_COUNT sketches failed to build" "$ARTIFACT_LINK"
88+
;;
89+
*)
90+
artifact_entry ":fire:" "Report file missing or unreadable"
91+
;;
92+
esac
93+
done
94+
done

0 commit comments

Comments
 (0)