1a69fcfd04
- Updated the installation script to clarify that production wrappers do not include fixed test secrets, improving user guidance for local testing. - Modified the jiggablend-manager and jiggablend-runner scripts to remove fixed test configurations, emphasizing the use of local test credentials via `make init-test`. - Enhanced error handling in the runner script to ensure that an API key is provided, improving security and user feedback. - Added new flags and options for the runner, including sandboxing capabilities and GPU ray tracing control, enhancing flexibility for users. - Improved README documentation to reflect changes in usage and configuration, ensuring users have clear instructions for setup and execution.
131 lines
4.1 KiB
Bash
131 lines
4.1 KiB
Bash
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
# Install the latest jiggablend binary for Linux AMD64 and create wrapper scripts.
|
|
# Production wrappers do NOT install fixed test secrets. For local test credentials,
|
|
# use `make init-test` from a development checkout.
|
|
|
|
# Dependencies: curl, jq, tar, sha256sum, sudo (for installation to /usr/local/bin)
|
|
|
|
REPO="s1d3sw1ped/jiggablend"
|
|
API_URL="https://git.s1d3sw1ped.com/api/v1/repos/${REPO}/releases/latest"
|
|
ASSET_NAME="jiggablend-linux-amd64.tar.gz"
|
|
|
|
echo "Fetching latest release information..."
|
|
RELEASE_JSON=$(curl -s "$API_URL")
|
|
|
|
TAG=$(echo "$RELEASE_JSON" | jq -r '.tag_name')
|
|
echo "Latest version: $TAG"
|
|
|
|
ASSET_URL=$(echo "$RELEASE_JSON" | jq -r ".assets[] | select(.name == \"$ASSET_NAME\") | .browser_download_url")
|
|
if [ -z "$ASSET_URL" ]; then
|
|
echo "Error: Asset $ASSET_NAME not found in latest release."
|
|
exit 1
|
|
fi
|
|
|
|
CHECKSUM_URL=$(echo "$RELEASE_JSON" | jq -r '.assets[] | select(.name == "checksums.txt") | .browser_download_url')
|
|
if [ -z "$CHECKSUM_URL" ]; then
|
|
echo "Error: checksums.txt not found in latest release."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Downloading $ASSET_NAME..."
|
|
curl -L -o "$ASSET_NAME" "$ASSET_URL"
|
|
|
|
echo "Downloading checksums.txt..."
|
|
curl -L -o "checksums.txt" "$CHECKSUM_URL"
|
|
|
|
echo "Verifying checksum..."
|
|
if ! sha256sum --ignore-missing --quiet -c checksums.txt; then
|
|
echo "Error: Checksum verification failed."
|
|
rm -f "$ASSET_NAME" checksums.txt
|
|
exit 1
|
|
fi
|
|
|
|
echo "Extracting..."
|
|
tar -xzf "$ASSET_NAME"
|
|
|
|
echo "Installing binary to /usr/local/bin (requires sudo)..."
|
|
sudo install -m 0755 jiggablend /usr/local/bin/
|
|
|
|
echo "Creating manager wrapper script..."
|
|
cat << 'EOF' > jiggablend-manager.sh
|
|
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
# Wrapper to run jiggablend manager.
|
|
# Does NOT set fixed/test API keys or default admin passwords.
|
|
# Bootstrap (one-time, local admin):
|
|
# jiggablend manager config enable localauth
|
|
# jiggablend manager config add user you@example.com 'strong-password' --admin
|
|
# jiggablend manager config add apikey my-runner --scope manager
|
|
# For local development only: use `make init-test` from a source checkout.
|
|
|
|
mkdir -p logs
|
|
rm -f logs/manager.log
|
|
|
|
jiggablend manager -l logs/manager.log
|
|
EOF
|
|
chmod +x jiggablend-manager.sh
|
|
sudo install -m 0755 jiggablend-manager.sh /usr/local/bin/jiggablend-manager
|
|
rm -f jiggablend-manager.sh
|
|
|
|
echo "Creating runner wrapper script..."
|
|
cat << 'EOF' > jiggablend-runner.sh
|
|
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
# Wrapper to run jiggablend runner.
|
|
# Usage: jiggablend-runner [MANAGER_URL] --api-key <key> [RUNNER_FLAGS...]
|
|
# Or set JIGGABLEND_API_KEY. Default MANAGER_URL: http://localhost:8080
|
|
|
|
MANAGER_URL="http://localhost:8080"
|
|
if [[ $# -gt 0 && "$1" != -* ]]; then
|
|
MANAGER_URL="$1"
|
|
shift
|
|
fi
|
|
|
|
EXTRA_ARGS=("$@")
|
|
|
|
API_KEY="${JIGGABLEND_API_KEY:-}"
|
|
# Allow --api-key in EXTRA_ARGS; if not present and env empty, fail clearly
|
|
HAS_KEY=0
|
|
for arg in "${EXTRA_ARGS[@]+"${EXTRA_ARGS[@]}"}"; do
|
|
case "$arg" in
|
|
--api-key|--api-key=*|-k) HAS_KEY=1 ;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z "$API_KEY" && "$HAS_KEY" -eq 0 ]]; then
|
|
echo "Error: provide a runner API key via JIGGABLEND_API_KEY or --api-key." >&2
|
|
echo "Create one with: jiggablend manager config add apikey <name> --scope manager" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p logs
|
|
rm -f logs/runner.log
|
|
|
|
if [[ -n "$API_KEY" && "$HAS_KEY" -eq 0 ]]; then
|
|
jiggablend runner -l logs/runner.log --api-key="$API_KEY" --manager "$MANAGER_URL" "${EXTRA_ARGS[@]+"${EXTRA_ARGS[@]}"}"
|
|
else
|
|
jiggablend runner -l logs/runner.log --manager "$MANAGER_URL" "${EXTRA_ARGS[@]+"${EXTRA_ARGS[@]}"}"
|
|
fi
|
|
EOF
|
|
chmod +x jiggablend-runner.sh
|
|
sudo install -m 0755 jiggablend-runner.sh /usr/local/bin/jiggablend-runner
|
|
rm -f jiggablend-runner.sh
|
|
|
|
echo "Cleaning up..."
|
|
rm -f "$ASSET_NAME" checksums.txt jiggablend
|
|
|
|
echo "Installation complete!"
|
|
echo "Binary: jiggablend"
|
|
echo "Wrappers: jiggablend-manager, jiggablend-runner"
|
|
echo "Run 'jiggablend-manager' to start the manager (no fixed test secrets)."
|
|
echo "Run 'jiggablend-runner [url] --api-key <key>' to start a runner."
|
|
echo "Local dev only: use 'make init-test' from a source checkout for test credentials."
|
|
echo "Note: Blender, ImageMagick, or FFmpeg may be required. See README."
|