OSVauco/scripts/watch-build.sh

65 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# watch-build.sh - Velg en Cloud Build trigger, kjør den og stream loggen live.
set -euo pipefail
PROJECT_ID="${PROJECT_ID:-propane-will-491900-m5}"
REGION="${REGION:-us-central1}"
# Farger for output
GREEN="$(tput setaf 2 2>/dev/null || true)"
RED="$(tput setaf 1 2>/dev/null || true)"
YELLOW="$(tput setaf 3 2>/dev/null || true)"
CYAN="$(tput setaf 6 2>/dev/null || true)"
BOLD="$(tput bold 2>/dev/null || true)"
NC="$(tput sgr0 2>/dev/null || true)"
# Hent tilgjengelige triggers
TRIGGERS=($(gcloud builds triggers list --project="$PROJECT_ID" --region="$REGION" --format="value(name)"))
if [ ${#TRIGGERS[@]} -eq 0 ]; then
echo -e "${RED}Fant ingen build triggers i $PROJECT_ID i region $REGION.${NC}"
exit 1
fi
TRIGGER_NAME="${1:-}"
# Hvis ingen trigger er gitt som argument, vis en meny
if [ -z "$TRIGGER_NAME" ]; then
echo -e "${BOLD}Velg en Cloud Build trigger:${NC}"
select T_NAME in "${TRIGGERS[@]}"; do
if [ -n "$T_NAME" ]; then
TRIGGER_NAME="$T_NAME"
break
else
echo -e "${YELLOW}Ugyldig valg. Prøv igjen.${NC}"
fi
done
fi
echo -e "
${CYAN}Kjører trigger: ${BOLD}$TRIGGER_NAME${NC} på branch 'main'..."
# Kjør trigger og hent build-ID
BUILD_ID=$(gcloud builds triggers run "$TRIGGER_NAME" --project="$PROJECT_ID" --region="$REGION" --branch=main --format="value(metadata.build.id)")
if [ -z "$BUILD_ID" ]; then
echo -e "${RED}Klarte ikke å starte build eller hente build-ID.${NC}"
exit 1
fi
echo -e "${GREEN}Build startet! ID: ${BOLD}$BUILD_ID${NC}"
echo -e "--- Streaming logs ---
"
START_TIME=$(date +%s)
gcloud builds log --stream "$BUILD_ID" --project="$PROJECT_ID" --region="$REGION"
FINAL_STATUS=$(gcloud builds describe "$BUILD_ID" --project="$PROJECT_ID" --region="$REGION" --format="value(status)")
END_TIME=$(date +%s)
ELAPSED=$((END_TIME - START_TIME))
echo -e "
--- Build Complete ---"
echo -e "${BOLD}Status: $FINAL_STATUS | Tid: $((ELAPSED / 60))m $((ELAPSED % 60))s${NC}"
[ "$FINAL_STATUS" == "SUCCESS" ]