solstice-ci/.mise/tasks/build/runner-cross

50 lines
1.7 KiB
Text
Raw Normal View History

#!/usr/bin/env bash
set -euo pipefail
# Cross-build the workflow-runner for Linux and Illumos targets.
# Requires: cross (https://github.com/cross-rs/cross)
# Builds and stages runner binaries under target/runners for the orchestrator HTTP server.
# Outputs (staged for serving by orchestrator):
# - target/runners/solstice-runner-linux
# - target/runners/solstice-runner-illumos
# - target/runners/solstice-runner (symlink to -linux by default)
ROOT_DIR=$(cd "$(dirname "$0")/../../.." && pwd)
cd "$ROOT_DIR"
if ! command -v cross >/dev/null 2>&1; then
echo "cross is required. Install with: cargo install cross" >&2
exit 127
fi
# Build Linux runner
cross build -p workflow-runner --target x86_64-unknown-linux-gnu --release
# Build Illumos runner
cross build -p workflow-runner --target x86_64-unknown-illumos --release
LIN_BIN="${ROOT_DIR}/target/x86_64-unknown-linux-gnu/release/solstice-runner"
ILL_BIN="${ROOT_DIR}/target/x86_64-unknown-illumos/release/solstice-runner"
SERVE_DIR="${ROOT_DIR}/target/runners"
mkdir -p "$SERVE_DIR"
# Stage with orchestrator-expected filenames
if [[ -f "$LIN_BIN" ]]; then
cp -f "$LIN_BIN" "$SERVE_DIR/solstice-runner-linux"
chmod +x "$SERVE_DIR/solstice-runner-linux" || true
fi
if [[ -f "$ILL_BIN" ]]; then
cp -f "$ILL_BIN" "$SERVE_DIR/solstice-runner-illumos"
chmod +x "$SERVE_DIR/solstice-runner-illumos" || true
fi
# Provide a generic solstice-runner as a convenience (symlink to linux)
if [[ -f "$SERVE_DIR/solstice-runner-linux" ]]; then
ln -sf "solstice-runner-linux" "$SERVE_DIR/solstice-runner"
fi
echo "Built runner binaries:" >&2
ls -l "$LIN_BIN" 2>/dev/null || true
ls -l "$ILL_BIN" 2>/dev/null || true
echo "Staged for orchestrator serving under $SERVE_DIR:" >&2
ls -l "$SERVE_DIR" 2>/dev/null || true