provisioning-catalog/components/woodpecker/cluster/install-woodpecker.sh

55 lines
2.3 KiB
Bash
Raw Normal View History

#!/bin/bash
set -euo pipefail
WOODPECKER_NAMESPACE="${WOODPECKER_NAMESPACE:-data}"
WOODPECKER_IMAGE_SERVER="${WOODPECKER_IMAGE_SERVER:-woodpecker/server:latest}"
WOODPECKER_IMAGE_AGENT="${WOODPECKER_IMAGE_AGENT:-woodpecker/agent:latest}"
WOODPECKER_DATABASE="${WOODPECKER_DATABASE:-woodpecker}"
WOODPECKER_DB_HOST="${WOODPECKER_DB_HOST:-postgresql.data.svc}"
WOODPECKER_FORGEJO_URL="${WOODPECKER_FORGEJO_URL:-http://forgejo.data.svc:3000}"
WOODPECKER_HTTP_PORT="${WOODPECKER_HTTP_PORT:-8000}"
WOODPECKER_GRPC_PORT="${WOODPECKER_GRPC_PORT:-9000}"
WOODPECKER_STORAGE_CLASS="${WOODPECKER_STORAGE_CLASS:-local-path}"
WOODPECKER_STORAGE_SIZE="${WOODPECKER_STORAGE_SIZE:-5Gi}"
WOODPECKER_DB_NAMESPACE="${WOODPECKER_DB_NAMESPACE:-core-data}"
WOODPECKER_HOSTNAME="${WOODPECKER_HOSTNAME:-}"
WOODPECKER_CLUSTER_ISSUER="${WOODPECKER_CLUSTER_ISSUER:-letsencrypt-prod-librecloud}"
WOODPECKER_TLS_SECRET="${WOODPECKER_TLS_SECRET:-woodpecker-tls}"
WOODPECKER_GATEWAY_NAME="${WOODPECKER_GATEWAY_NAME:-libre-daoshi}"
WOODPECKER_GATEWAY_NS="${WOODPECKER_GATEWAY_NS:-kube-system}"
WOODPECKER_FORGEJO_GATEWAY_IP="${WOODPECKER_FORGEJO_GATEWAY_IP:-}"
WOODPECKER_ADMIN="${WOODPECKER_ADMIN:-}"
KUBECONFIG="${KUBECONFIG:-/root/.kube/config}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CATALOG_LIB="${SCRIPT_DIR}/../../../lib"
# When bundled for remote execution, catalog/lib/ is copied to lib/ beside this
# script (forgejo/radicle convention); fall back to a flat sibling, then dev layout.
if [ -f "${SCRIPT_DIR}/lib/gateway-tls.sh" ]; then
CATALOG_LIB="${SCRIPT_DIR}/lib"
elif [ -f "${SCRIPT_DIR}/gateway-tls.sh" ]; then
CATALOG_LIB="${SCRIPT_DIR}"
fi
export KUBECONFIG
CMD_TSK="${CMD_TSK:-${1:-install}}"
[ -f "${SCRIPT_DIR}/env-woodpecker" ] && source "${SCRIPT_DIR}/env-woodpecker"
# SOPS-injected secrets (WOODPECKER_AGENT_SECRET, …, POSTGRES_PASSWORD) from woodpecker.sops.yaml
[ -f "${SCRIPT_DIR}/_credentials.env" ] && set -a && source "${SCRIPT_DIR}/_credentials.env" && set +a
# shellcheck source=woodpecker-lib.sh
source "${SCRIPT_DIR}/woodpecker-lib.sh"
case "$CMD_TSK" in
install) _do_install ;;
update) _do_update ;;
delete) _do_delete ;;
health) _do_health ;;
*)
echo "ERROR: unknown CMD_TSK='$CMD_TSK'. Valid: install|update|delete|health" >&2
exit 1
;;
esac