Files
2026-10-20 01:10:02 +08:00

37 lines
1.5 KiB
Bash

#!/bin/sh
# Remote CI only. No production deployment or resources.
set -eu
cd "$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
release_sha=${LYRA_RELEASE_SHA:?LYRA_RELEASE_SHA is required}
case "$release_sha" in *[!0-9a-f]*|'') exit 1;; esac
test "${#release_sha}" -eq 40
image="endorphin-lyra-cli-ci:$release_sha"
checks="endorphin-lyra-cli-checks-${GITHUB_RUN_ID:-manual}-$$"
mkdir -p ci-output
printf '# Lyra Endor examples\n\nStatus: NOT_RUN; inspect CI logs.\n' > ci-output/endor-examples.md
printf '{"status":"NOT_RUN","cases":[]}\n' > ci-output/endor-examples.json
cleanup() { docker rm -f "$checks" >/dev/null 2>&1 || true; }
trap cleanup EXIT
trap 'exit 130' INT
trap 'exit 143' TERM
docker build -f Dockerfile.ci -t "$image" .
status=0
docker run --name "$checks" --init --env LYRA_RELEASE_SHA="$release_sha" "$image" sh -eu -c '
checks=0
sh scripts/check.sh || checks=$?
examples=0
python3 scripts/endor_examples.py --output-dir /build/ci-output || examples=$?
test "$checks" -eq 0
test "$examples" -eq 0
cargo build --release --locked -p cli
cp target/release/lyra ci-output/lyra
' || status=$?
copy_status=0
docker cp "$checks:/build/ci-output/endor-examples.md" ci-output/endor-examples.md || copy_status=$?
docker cp "$checks:/build/ci-output/endor-examples.json" ci-output/endor-examples.json || copy_status=$?
if [ "$status" -eq 0 ]; then
docker cp "$checks:/build/ci-output/lyra" ci-output/lyra || copy_status=$?
fi
if [ "$status" -ne 0 ]; then exit "$status"; fi
exit "$copy_status"