ci: add deterministic demo scenarios and test reports
This commit is contained in:
1 parent
98033f6b8c
commit
a749962cf3
1 file changed
+55
@@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -eu
|
||||||
|
mkdir -p reports artifacts
|
||||||
|
rm -f reports/*.xml artifacts/*
|
||||||
|
scenario=${SCENARIO:-success}
|
||||||
|
version=${RELEASE_VERSION:-1.0.0}
|
||||||
|
target=${TARGET_ENV:-sg}
|
||||||
|
case "$scenario" in success|failure|unstable|aborted) ;; *) exit 2 ;; esac
|
||||||
|
case "$target" in dev|staging|sg) ;; *) exit 2 ;; esac
|
||||||
|
echo "[DEMO] Synthetic CI fixtures; no production deployment is performed."
|
||||||
|
echo "[INFO] job=$JOB_NAME build=$BUILD_NUMBER scenario=$scenario target=$target version=$version"
|
||||||
|
echo "[SCM] $(git log -1 --format='%h %s')"
|
||||||
|
test -s README.md && test -s VERSION && test -s ci/demo-build.sh
|
||||||
|
echo "[STAGE] checkout and configuration checks passed"
|
||||||
|
lines=${LOG_LINES:-80}
|
||||||
|
case "$lines" in ''|*[!0-9]*) exit 2 ;; esac
|
||||||
|
[ "$lines" -le 3000 ] || exit 2
|
||||||
|
i=1
|
||||||
|
while [ "$i" -le "$lines" ]; do
|
||||||
|
if [ $((i % 37)) -eq 0 ]; then
|
||||||
|
printf '[WARN] Fixture retry checkpoint %04d: demo dependency responds slowly; retry budget remains.\n' "$i"
|
||||||
|
else
|
||||||
|
printf '[INFO] Checkpoint %04d: validate route, transform fixture, verify checksum and collect diagnostics.\n' "$i"
|
||||||
|
fi
|
||||||
|
i=$((i+1))
|
||||||
|
done
|
||||||
|
delay=${RUN_SECONDS:-2}
|
||||||
|
case "$delay" in ''|*[!0-9]*) exit 2 ;; esac
|
||||||
|
[ "$delay" -le 45 ] || exit 2
|
||||||
|
sleep "$delay"
|
||||||
|
failures=0
|
||||||
|
[ "$scenario" != unstable ] || failures=2
|
||||||
|
printf '<testsuite name="DemoContractTests" tests="12" failures="%s" errors="0" skipped="1" time="2.4">\n' "$failures" > reports/junit.xml
|
||||||
|
i=1
|
||||||
|
while [ "$i" -le 12 ]; do
|
||||||
|
printf '<testcase classname="demo.ContractSuite" name="case_%02d" time="0.2">' "$i" >> reports/junit.xml
|
||||||
|
if [ "$i" -eq 12 ]; then
|
||||||
|
printf '<skipped message="Optional demo scenario"/>' >> reports/junit.xml
|
||||||
|
elif [ "$failures" -gt 0 ] && [ "$i" -le 2 ]; then
|
||||||
|
printf '<failure message="Intentional demo assertion mismatch">Expected fixture validation success; scenario=unstable</failure>' >> reports/junit.xml
|
||||||
|
echo "[TEST-FAIL] case_$i intentional demo assertion mismatch"
|
||||||
|
fi
|
||||||
|
printf '</testcase>\n' >> reports/junit.xml
|
||||||
|
i=$((i+1))
|
||||||
|
done
|
||||||
|
printf '</testsuite>\n' >> reports/junit.xml
|
||||||
|
printf 'Demo build\nJob: %s\nBuild: %s\nVersion: %s\nTarget: %s\nScenario: %s\n' "$JOB_NAME" "$BUILD_NUMBER" "$version" "$target" "$scenario" > artifacts/build-summary.txt
|
||||||
|
printf '{"demo":true,"version":"%s","target":"%s","scenario":"%s"}\n' "$version" "$target" "$scenario" > artifacts/release-manifest.json
|
||||||
|
tar -czf artifacts/demo-package.tgz README.md VERSION ci reports
|
||||||
|
echo "[ARTIFACT] build-summary.txt release-manifest.json demo-package.tgz"
|
||||||
|
if [ "$scenario" = failure ]; then
|
||||||
|
echo "[ERROR] Intentional demo packaging/configuration failure: invalid release fixture."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "[STAGE] Completed demo build; JUnit failures=$failures"
|
||||||
Reference in new issue
Block a user