From 389c657082e7beef52f27ba75c1f85d59a967a23 Mon Sep 17 00:00:00 2001 From: codex-test Date: Mon, 12 Oct 2026 14:42:24 +0000 Subject: [PATCH] ci: add deterministic demo scenarios and test reports --- ci/demo-build.sh | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 ci/demo-build.sh diff --git a/ci/demo-build.sh b/ci/demo-build.sh new file mode 100644 index 0000000..f5428cb --- /dev/null +++ b/ci/demo-build.sh @@ -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 '\n' "$failures" > reports/junit.xml +i=1 +while [ "$i" -le 12 ]; do + printf '' "$i" >> reports/junit.xml + if [ "$i" -eq 12 ]; then + printf '' >> reports/junit.xml + elif [ "$failures" -gt 0 ] && [ "$i" -le 2 ]; then + printf 'Expected fixture validation success; scenario=unstable' >> reports/junit.xml + echo "[TEST-FAIL] case_$i intentional demo assertion mismatch" + fi + printf '\n' >> reports/junit.xml + i=$((i+1)) +done +printf '\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"