mirror of
https://codeberg.org/Toasterson/solstice-ci.git
synced 2026-04-10 21:30:41 +00:00
53 lines
2 KiB
Text
53 lines
2 KiB
Text
|
|
#!/usr/bin/env bash
|
||
|
|
set -euo pipefail
|
||
|
|
# Serve cross-built workflow-runner binaries for Linux and Illumos on two ports.
|
||
|
|
# Intended for local development only.
|
||
|
|
# Env:
|
||
|
|
# SOL_RUNNER_BIND - bind address (default: 0.0.0.0)
|
||
|
|
# SOL_RUNNER_PORT_LINUX - port for Linux runner (default: 8090)
|
||
|
|
# SOL_RUNNER_PORT_ILLUMOS - port for Illumos runner (default: 8091)
|
||
|
|
# PYTHON - python interpreter (default: python3)
|
||
|
|
#
|
||
|
|
# Exposes:
|
||
|
|
# http://HOST:PORT/solstice-runner-linux
|
||
|
|
# http://HOST:PORT/solstice-runner-illumos
|
||
|
|
|
||
|
|
ROOT_DIR=$(cd "$(dirname "$0")/../../.." && pwd)
|
||
|
|
cd "$ROOT_DIR"
|
||
|
|
|
||
|
|
PYTHON=${PYTHON:-python3}
|
||
|
|
command -v "$PYTHON" >/dev/null 2>&1 || { echo "python3 is required" >&2; exit 127; }
|
||
|
|
|
||
|
|
# Ensure cross-built artifacts exist
|
||
|
|
if [[ ! -x "$ROOT_DIR/target/x86_64-unknown-linux-gnu/release/solstice-runner" || ! -x "$ROOT_DIR/target/x86_64-unknown-illumos/release/solstice-runner" ]]; then
|
||
|
|
echo "Cross-built runner binaries not found; building with cross..." >&2
|
||
|
|
"$ROOT_DIR/.mise/tasks/build/runner-cross"
|
||
|
|
fi
|
||
|
|
|
||
|
|
SERVE_DIR="$ROOT_DIR/target/runner-serve-multi"
|
||
|
|
rm -rf "$SERVE_DIR"
|
||
|
|
mkdir -p "$SERVE_DIR"
|
||
|
|
cp -f "$ROOT_DIR/target/x86_64-unknown-linux-gnu/release/solstice-runner" "$SERVE_DIR/solstice-runner-linux"
|
||
|
|
cp -f "$ROOT_DIR/target/x86_64-unknown-illumos/release/solstice-runner" "$SERVE_DIR/solstice-runner-illumos"
|
||
|
|
chmod +x "$SERVE_DIR/solstice-runner-linux" "$SERVE_DIR/solstice-runner-illumos" || true
|
||
|
|
|
||
|
|
BIND=${SOL_RUNNER_BIND:-0.0.0.0}
|
||
|
|
PORT_LIN=${SOL_RUNNER_PORT_LINUX:-8090}
|
||
|
|
PORT_ILL=${SOL_RUNNER_PORT_ILLUMOS:-8091}
|
||
|
|
|
||
|
|
echo "Serving from $SERVE_DIR" >&2
|
||
|
|
|
||
|
|
set +e
|
||
|
|
"$PYTHON" -m http.server "$PORT_LIN" --bind "$BIND" --directory "$SERVE_DIR" &
|
||
|
|
PID_LIN=$!
|
||
|
|
"$PYTHON" -m http.server "$PORT_ILL" --bind "$BIND" --directory "$SERVE_DIR" &
|
||
|
|
PID_ILL=$!
|
||
|
|
set -e
|
||
|
|
|
||
|
|
trap 'kill $PID_LIN $PID_ILL 2>/dev/null || true' INT TERM EXIT
|
||
|
|
|
||
|
|
echo "Linux runner: http://$BIND:$PORT_LIN/solstice-runner-linux" >&2
|
||
|
|
echo "Illumos runner: http://$BIND:$PORT_ILL/solstice-runner-illumos" >&2
|
||
|
|
|
||
|
|
# Wait on background servers
|
||
|
|
wait
|