Files
gitea-homelab/scripts/test.sh
Raghav bb68b6b9f2 Initial commit
Co-Authored-By: Oz <oz-agent@warp.dev>
2026-04-16 09:04:22 +05:30

73 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPT_DIR}/lib.sh"
WITH_TLS=false
ALLOW_PENDING_EXTERNAL=false
for arg in "$@"; do
case "$arg" in
--with-tls) WITH_TLS=true ;;
--allow-pending-external) ALLOW_PENDING_EXTERNAL=true ;;
*) die "Unknown argument: $arg" ;;
esac
done
load_env
require_cmd curl
log "Checking docker compose status"
if [[ "${WITH_TLS}" == "true" ]]; then
compose --profile tls ps
else
compose ps
fi
log "Checking local HTTP health"
curl -fsS "http://localhost:${GITEA_HTTP_PORT}/api/healthz" && printf '\n'
log "Checking local web root"
curl -I -sS "http://localhost:${GITEA_HTTP_PORT}" | grep -E 'HTTP/[0-9.]+ 200|HTTP/[0-9.]+ 302'
if command -v getent >/dev/null 2>&1; then
log "Checking DNS resolution for ${GITEA_DOMAIN}"
getent hosts "${GITEA_DOMAIN}" || log "DNS resolution not yet set for ${GITEA_DOMAIN}"
fi
if command -v nc >/dev/null 2>&1; then
log "Checking SSH TCP port on localhost"
nc -z localhost "${GITEA_SSH_PORT}"
fi
if [[ "${WITH_TLS}" == "true" ]]; then
log "Checking Caddy container status"
compose --profile tls ps caddy | grep -E 'gitea-caddy|caddy'
if command -v nc >/dev/null 2>&1; then
log "Checking reverse proxy listener ports"
nc -z localhost 80
nc -z localhost 443
fi
if getent hosts "${GITEA_DOMAIN}" >/dev/null 2>&1; then
log "Checking HTTPS response by domain"
if [[ "${ALLOW_PENDING_EXTERNAL}" == "true" ]]; then
if ! curl -k -I -sS "https://${GITEA_DOMAIN}" | grep -E 'HTTP/[0-9.]+ 200|HTTP/[0-9.]+ 302|HTTP/[0-9.]+ 308'; then
log "HTTPS domain check did not pass yet (pending DNS/routing/certificate propagation)"
fi
else
curl -I -sS "https://${GITEA_DOMAIN}" | grep -E 'HTTP/[0-9.]+ 200|HTTP/[0-9.]+ 302|HTTP/[0-9.]+ 308'
fi
else
if [[ "${ALLOW_PENDING_EXTERNAL}" == "true" ]]; then
log "Skipping strict HTTPS domain check until DNS is configured"
else
die "DNS not configured for ${GITEA_DOMAIN}; rerun with --allow-pending-external if still propagating"
fi
fi
fi
log "All tests passed"