Skip to content

Commit d8391d9

Browse files
committed
feat: enhance release workflow with detailed Spark diagnostics and improved artifact uploads
- Added detailed diagnostic steps for Docker and Spark on test failure. - Improved artifact naming and organization with run-specific identifiers. - Increased retention period for uploaded diagnostics to aid debugging.
1 parent 6f64d02 commit d8391d9

1 file changed

Lines changed: 68 additions & 3 deletions

File tree

.github/workflows/release.yml

Lines changed: 68 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,83 @@ jobs:
5858
5959
- name: Run Spark big data matrix tests
6060
run: |
61-
./gradlew --no-configuration-cache :example:spark:sparkBigDataMatrixTest --stacktrace --info
61+
./gradlew --no-configuration-cache :example:spark:sparkBigDataMatrixTest --stacktrace --debug
6262
63-
- name: Upload test reports
63+
- name: Collect and print Spark diagnostics on failure
64+
if: failure()
65+
run: |
66+
set +e
67+
diagnostics_dir="build/github-diagnostics"
68+
mkdir -p "${diagnostics_dir}/docker" "${diagnostics_dir}/spark"
69+
70+
echo "::group::Docker containers"
71+
docker ps -a | tee "${diagnostics_dir}/docker/containers.txt"
72+
echo "::endgroup::"
73+
74+
echo "::group::Docker images"
75+
docker images | tee "${diagnostics_dir}/docker/images.txt"
76+
echo "::endgroup::"
77+
78+
mapfile -t container_ids < <(docker ps -aq)
79+
for container_id in "${container_ids[@]}"; do
80+
container_name="$(docker inspect --format '{{.Name}}' "${container_id}" 2>/dev/null | sed 's#^/##')"
81+
if [ -z "${container_name}" ]; then
82+
container_name="${container_id}"
83+
fi
84+
safe_name="$(printf '%s' "${container_name}" | tr -c 'A-Za-z0-9_.-' '_')"
85+
docker inspect "${container_id}" > "${diagnostics_dir}/docker/${safe_name}.inspect.json" 2>&1
86+
docker logs "${container_id}" > "${diagnostics_dir}/docker/${safe_name}.stdout-stderr.log" 2>&1
87+
done
88+
89+
echo "::group::Spark container log files"
90+
if [ -d example/spark/build/bigdata-test-container-logs ]; then
91+
find example/spark/build/bigdata-test-container-logs -type f -print | sort
92+
else
93+
echo "No Spark container log directory found."
94+
fi
95+
echo "::endgroup::"
96+
97+
if [ -d example/spark/build/bigdata-test-container-logs ]; then
98+
while IFS= read -r log_file; do
99+
echo "::group::${log_file}"
100+
sed -n '1,400p' "${log_file}"
101+
line_count="$(wc -l < "${log_file}")"
102+
if [ "${line_count}" -gt 400 ]; then
103+
echo "... truncated first 400 lines from ${line_count} total lines ..."
104+
echo "--- tail ---"
105+
tail -n 400 "${log_file}"
106+
fi
107+
echo "::endgroup::"
108+
done < <(find example/spark/build/bigdata-test-container-logs -type f -print | sort)
109+
cp -a example/spark/build/bigdata-test-container-logs "${diagnostics_dir}/spark/container-logs"
110+
fi
111+
112+
echo "::group::Spark test XML results"
113+
if [ -d example/spark/build/test-results ]; then
114+
while IFS= read -r result_file; do
115+
echo "--- ${result_file} ---"
116+
sed -n '1,240p' "${result_file}"
117+
done < <(find example/spark/build/test-results -type f -name '*.xml' -print | sort)
118+
else
119+
echo "No Spark test result directory found."
120+
fi
121+
echo "::endgroup::"
122+
cp -a example/spark/build/test-results "${diagnostics_dir}/spark/test-results" 2>/dev/null || true
123+
cp -a example/spark/build/reports/tests "${diagnostics_dir}/spark/test-reports" 2>/dev/null || true
124+
125+
- name: Upload test reports and container logs
64126
if: failure()
65127
uses: actions/upload-artifact@v4
66128
with:
67-
name: test-reports
129+
name: test-diagnostics-${{ github.run_id }}-${{ github.run_attempt }}
68130
path: |
69131
**/build/reports/tests/
70132
**/build/test-results/
71133
**/build/reports/problems/
134+
**/build/bigdata-test-container-logs/
135+
build/github-diagnostics/
72136
if-no-files-found: ignore
137+
retention-days: 14
73138

74139
- name: Write signing key
75140
env:

0 commit comments

Comments
 (0)