37 lines
1.5 KiB
Bash
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"
|