#!/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"