ci: add synthetic fixture runner

This commit is contained in:
codex-test committed 2026-10-12 15:23:00 +00:00
1 parent 2aeb53d902
commit 7223b117a9
1 file changed
+55
+55
View File
@@ -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"