Skip to content

Commit 637011f

Browse files
committed
ci: detect and report demo generation failures
Demo generation previously swallowed failures silently due to the absence of `set -e`. Each demo now checks its exit code: failures remove partial output, and the full list with reproduction commands is reported at the end of the step.
1 parent 084322d commit 637011f

1 file changed

Lines changed: 28 additions & 13 deletions

File tree

.github/workflows/ci.yml

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,24 +1086,30 @@ jobs:
10861086
"html"' || '' }}
10871087
)
10881088
1089+
demo_failures=""
1090+
10891091
# Generate the demos for each variant and generator
10901092
for variant in single multi; do
10911093
for generator in "${generators[@]}"; do
10921094
[[ $generator = xml && $variant = multi ]] && continue
10931095
[[ $variant = multi ]] && multipage="true" || multipage="false"
1094-
# boost.url demo
1095-
mrdocs --config="$(pwd)/boost/libs/url/doc/mrdocs.yml" "../CMakeLists.txt" --output="$(pwd)/demos/boost-url/$variant/$generator" --multipage=$multipage --generator="$generator" --log-level=debug
1096-
echo "Number of files in demos/boost-url/$variant/$generator: $(find demos/boost-url/$variant/$generator -type f | wc -l)"
1097-
# beman.optional demo
1098-
mrdocs --config="$(pwd)/beman-optional/docs/mrdocs.yml" --output="$(pwd)/demos/beman-optional/$variant/$generator" --multipage=$multipage --generator="$generator" --log-level=debug
1099-
# nlohmann-json demo
1100-
mrdocs --config="$(pwd)/nlohmann-json/docs/mrdocs.yml" --output="$(pwd)/demos/nlohmann-json/$variant/$generator" --multipage=$multipage --generator="$generator" --log-level=debug
1101-
# mp-units demo
1102-
mrdocs --config="$(pwd)/mp-units/docs/mrdocs.yml" --output="$(pwd)/demos/mp-units/$variant/$generator" --multipage=$multipage --generator="$generator" --log-level=debug
1103-
# fmt demo
1104-
mrdocs --config="$(pwd)/fmt/doc/mrdocs.yml" --output="$(pwd)/demos/fmt/$variant/$generator" --multipage=$multipage --generator="$generator" --log-level=debug
1105-
# mrdocs documenting mrdocs demo
1106-
mrdocs --config="$(pwd)/docs/mrdocs.yml" "$(pwd)/CMakeLists.txt" --output="$(pwd)/demos/mrdocs/$variant/$generator" --multipage=$multipage --generator="$generator" --log-level=debug
1096+
for project_args in \
1097+
"boost-url|$(pwd)/boost/libs/url/doc/mrdocs.yml|../CMakeLists.txt" \
1098+
"beman-optional|$(pwd)/beman-optional/docs/mrdocs.yml|" \
1099+
"nlohmann-json|$(pwd)/nlohmann-json/docs/mrdocs.yml|" \
1100+
"mp-units|$(pwd)/mp-units/docs/mrdocs.yml|" \
1101+
"fmt|$(pwd)/fmt/doc/mrdocs.yml|" \
1102+
"mrdocs|$(pwd)/docs/mrdocs.yml|$(pwd)/CMakeLists.txt" \
1103+
; do
1104+
IFS='|' read -r project config extra <<< "$project_args"
1105+
outdir="$(pwd)/demos/$project/$variant/$generator"
1106+
cmd=(mrdocs --config="$config" $extra --output="$outdir" --multipage=$multipage --generator="$generator" --log-level=debug)
1107+
if ! "${cmd[@]}"; then
1108+
echo "FAILED: $project/$variant/$generator"
1109+
demo_failures="$demo_failures $project/$variant/$generator\n ${cmd[*]}\n"
1110+
rm -rf "$outdir"
1111+
fi
1112+
done
11071113
done
11081114
11091115
# Render the asciidoc files to html using asciidoctor
@@ -1114,6 +1120,9 @@ jobs:
11141120
dst="$root/adoc-asciidoc"
11151121
stylesheet="$(pwd)/share/mrdocs/addons/generator/common/layouts/style.css"
11161122
1123+
# Skip if adoc generation failed for this project
1124+
[[ -d "$src" ]] || continue
1125+
11171126
# Create the top-level output dir
11181127
mkdir -p "$dst"
11191128
@@ -1133,6 +1142,12 @@ jobs:
11331142
tar -cjf $(pwd)/demos.tar.gz -C $(pwd)/demos --strip-components 1 .
11341143
echo "demos_path=$(pwd)/demos.tar.gz" >> $GITHUB_ENV
11351144
1145+
if [[ -n "$demo_failures" ]]; then
1146+
echo "The following demos failed:"
1147+
printf "$demo_failures"
1148+
exit 1
1149+
fi
1150+
11361151
- name: Upload Demos as Artifacts
11371152
uses: actions/upload-artifact@v4
11381153
with:

0 commit comments

Comments
 (0)