juntekim.com/mist_infra/arc/forgejo/deploy.sh
2026-03-12 21:05:06 +00:00

58 lines
2 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
# ==========================================================
# Deploy Forgejo act_runner + KEDA autoscaling to Kubernetes
# ==========================================================
NAMESPACE="forgejo-runners"
SCRIPT_DIR="$(dirname "$0")"
echo "=== Deploying Forgejo Runner with KEDA Autoscaling ==="
RUNNER_TOKEN="RPAjk4Jdc42By5vSxnULPPPrjU0goPLQIiKgwOIo"
# Forgejo API token — create at https://git.juntekim.com/user/settings/applications
# Needs: read:repository scope (to list repos and query action tasks)
if [[ -z "${FORGEJO_API_TOKEN:-}" ]]; then
read -rsp "Forgejo API token (for metrics exporter): " FORGEJO_API_TOKEN
echo
fi
# Install KEDA if not already installed
if ! kubectl get crd scaledobjects.keda.sh &>/dev/null; then
echo "=== Installing KEDA ==="
helm repo add kedacore https://kedacore.github.io/charts
helm repo update kedacore
helm install keda kedacore/keda --namespace keda --create-namespace
echo "✅ KEDA installed"
else
echo "✅ KEDA already installed"
fi
kubectl create namespace "$NAMESPACE" --dry-run=client -o yaml | kubectl apply -f -
# Runner registration token (used by act_runner to register with Forgejo)
kubectl create secret generic forgejo-runner-secret \
--namespace "$NAMESPACE" \
--from-literal=token="$RUNNER_TOKEN" \
--dry-run=client -o yaml | kubectl apply -f -
# Forgejo API token (used by metrics exporter to query job queue)
kubectl create secret generic forgejo-api-secret \
--namespace "$NAMESPACE" \
--from-literal=token="$FORGEJO_API_TOKEN" \
--dry-run=client -o yaml | kubectl apply -f -
kubectl apply -f "$SCRIPT_DIR/deployment.yaml"
kubectl apply -f "$SCRIPT_DIR/metrics-exporter.yaml"
kubectl apply -f "$SCRIPT_DIR/keda-scaledobject.yaml"
echo
echo "✅ Forgejo runner deployed with KEDA autoscaling"
echo
echo "Next steps:"
echo " kubectl get pods -n $NAMESPACE"
echo " kubectl get scaledobject -n $NAMESPACE"
echo " kubectl logs -n $NAMESPACE deploy/forgejo-metrics-exporter"
echo " Check runners at: https://git.juntekim.com/-/admin/runners"