Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
74 lines
2.3 KiB
Bash
Executable File
74 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# OSVauco — Periodisk health check for lokal arbeidsflate
|
|
# Kjør manuelt fra ~/OSVauco eller via cron/systemd
|
|
|
|
set -u
|
|
|
|
LOG=/tmp/osvauco-health.log
|
|
TS=$(date -Iseconds)
|
|
REPO=~/OSVauco
|
|
ALERT=0
|
|
ALERT_MSGS=()
|
|
|
|
echo "[$TS] === HEALTH CHECK START ===" >> "$LOG"
|
|
|
|
# --- 1. Git working tree ---
|
|
cd "$REPO" 2>/dev/null || { echo "[$TS] ❌ REPO not found: $REPO" >> "$LOG"; exit 1; }
|
|
DIRTY=$(git status --porcelain 2>/dev/null | wc -l | tr -d ' ')
|
|
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
|
|
LAST_SHA=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
|
AHEAD=$(git rev-list --count "@{u}..HEAD" 2>/dev/null || echo "0")
|
|
echo "[$TS] git: branch=$BRANCH dirty=$DIRTY ahead=$AHEAD last=$LAST_SHA" >> "$LOG"
|
|
|
|
if [ "$DIRTY" -gt 50 ]; then
|
|
ALERT=1
|
|
ALERT_MSGS+=("$DIRTY uncommitted changes (>50, mulig merge gone wrong)")
|
|
fi
|
|
|
|
# --- 2. Disk ---
|
|
FREE=$(df -h "$REPO" 2>/dev/null | awk 'NR==2 {print $4}')
|
|
FREE_BYTES=$(df -B1 "$REPO" 2>/dev/null | awk 'NR==2 {print $4}')
|
|
echo "[$TS] disk: free=$FREE" >> "$LOG"
|
|
|
|
# Mindre enn 500MB → alert
|
|
if [ -n "$FREE_BYTES" ] && [ "$FREE_BYTES" -lt 524288000 ]; then
|
|
ALERT=1
|
|
ALERT_MSGS+=("Disk lav: kun $FREE ledig")
|
|
fi
|
|
|
|
# --- 3. ADC reachability ---
|
|
TOKEN_LEN=$(gcloud auth application-default print-access-token 2>/dev/null | wc -c | tr -d ' ')
|
|
echo "[$TS] adc: token_len=$TOKEN_LEN" >> "$LOG"
|
|
if [ "$TOKEN_LEN" -lt 100 ]; then
|
|
ALERT=1
|
|
ALERT_MSGS+=("ADC token mangler eller for kort ($TOKEN_LEN tegn)")
|
|
fi
|
|
|
|
# --- 4. gcloud auth account + project ---
|
|
ACCOUNT=$(gcloud config get-value account 2>/dev/null || echo "")
|
|
PROJECT=$(gcloud config get-value project 2>/dev/null || echo "")
|
|
echo "[$TS] gcloud: account=$ACCOUNT project=$PROJECT" >> "$LOG"
|
|
|
|
if [ "$ACCOUNT" != "chris.christiansen@vauco.no" ]; then
|
|
ALERT=1
|
|
ALERT_MSGS+=("WRONG GCLOUD ACCOUNT: $ACCOUNT (forvent chris.christiansen@vauco.no)")
|
|
fi
|
|
|
|
if [ "$PROJECT" != "propane-will-491900-m5" ]; then
|
|
ALERT=1
|
|
ALERT_MSGS+=("WRONG PROJECT: $PROJECT (forvent propane-will-491900-m5)")
|
|
fi
|
|
|
|
# --- 5. Alert summary ---
|
|
if [ "$ALERT" -eq 1 ]; then
|
|
echo "[$TS] ⚠️ ALERT (${#ALERT_MSGS[@]} issues):" >> "$LOG"
|
|
for msg in "${ALERT_MSGS[@]}"; do
|
|
echo "[$TS] - $msg" >> "$LOG"
|
|
done
|
|
fi
|
|
|
|
echo "[$TS] === HEALTH CHECK END ===" >> "$LOG"
|
|
echo "" >> "$LOG"
|
|
|
|
exit "$ALERT"
|