chore(ci): remove impersonation from smoke-test, add docker cache, add watch-build.sh
This commit is contained in:
parent
eaf7428afc
commit
6426c67691
|
|
@ -14,9 +14,10 @@ steps:
|
||||||
# Steg 2: Bygg Docker-image
|
# Steg 2: Bygg Docker-image
|
||||||
- name: 'gcr.io/cloud-builders/docker'
|
- name: 'gcr.io/cloud-builders/docker'
|
||||||
id: build
|
id: build
|
||||||
waitFor: ['cost-check']
|
|
||||||
args:
|
args:
|
||||||
- 'build'
|
- 'build'
|
||||||
|
- '--cache-from'
|
||||||
|
- '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:latest'
|
||||||
- '-t'
|
- '-t'
|
||||||
- '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:$BUILD_ID'
|
- '${_REGION}-docker.pkg.dev/${PROJECT_ID}/${_ARTIFACT_REPO}/osvauco-agent:$BUILD_ID'
|
||||||
- '-t'
|
- '-t'
|
||||||
|
|
@ -72,17 +73,16 @@ steps:
|
||||||
# Henter fersk token per forsøk siden token kan utløpe under lang cold start
|
# Henter fersk token per forsøk siden token kan utløpe under lang cold start
|
||||||
echo "Venter på /health ..."
|
echo "Venter på /health ..."
|
||||||
STATUS="000"
|
STATUS="000"
|
||||||
for i in $$(seq 1 18); do
|
for i in $$(seq 1 9); do
|
||||||
TOKEN=$$(gcloud auth print-identity-token \
|
TOKEN=$$(gcloud auth print-identity-token
|
||||||
--impersonate-service-account=${_AGENT_SA} \
|
|
||||||
--audiences="$$BASE_URL" 2>/dev/null)
|
--audiences="$$BASE_URL" 2>/dev/null)
|
||||||
if [ -z "$$TOKEN" ]; then
|
if [ -z "$$TOKEN" ]; then
|
||||||
echo " /health forsøk $$i: kunne ikke hente token, venter..."
|
echo " /health forsøk $$i: kunne ikke hente token, venter..."
|
||||||
sleep 10
|
sleep 10
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
STATUS=$$(curl -s -o /dev/null -w "%{http_code}" \
|
STATUS=$$(curl -s -o /dev/null -w "%{http_code}"
|
||||||
-H "Authorization: Bearer $$TOKEN" \
|
-H "Authorization: Bearer $$TOKEN"
|
||||||
"$$BASE_URL/health")
|
"$$BASE_URL/health")
|
||||||
echo " /health forsøk $$i: HTTP $$STATUS"
|
echo " /health forsøk $$i: HTTP $$STATUS"
|
||||||
[ "$$STATUS" = "200" ] && break
|
[ "$$STATUS" = "200" ] && break
|
||||||
|
|
@ -90,19 +90,19 @@ steps:
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$$STATUS" != "200" ]; then
|
if [ "$$STATUS" != "200" ]; then
|
||||||
echo "❌ /health svarte ikke 200 etter 180s (siste: $$STATUS)"
|
echo "❌ /health svarte ikke 200 etter 90s (siste: $$STATUS)"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Kjør /run med fersk token
|
# Kjør /run med fersk token
|
||||||
TOKEN=$$(gcloud auth print-identity-token \
|
TOKEN=$$(gcloud auth print-identity-token
|
||||||
--impersonate-service-account=${_AGENT_SA} \
|
|
||||||
--audiences="$$BASE_URL")
|
--audiences="$$BASE_URL")
|
||||||
|
|
||||||
RESPONSE=$$(curl -s -w "\nHTTP_STATUS:%{http_code}" \
|
RESPONSE=$$(curl -s -w "
|
||||||
-H "Authorization: Bearer $$TOKEN" \
|
HTTP_STATUS:%{http_code}"
|
||||||
-H "Content-Type: application/json" \
|
-H "Authorization: Bearer $$TOKEN"
|
||||||
-d '{"user_id": "ci", "session_id": "smoke-$$BUILD_ID", "message": "ping"}' \
|
-H "Content-Type: application/json"
|
||||||
|
-d '{"user_id": "ci", "session_id": "smoke-$$BUILD_ID", "message": "ping"}'
|
||||||
"$$BASE_URL/run")
|
"$$BASE_URL/run")
|
||||||
|
|
||||||
HTTP_STATUS=$$(echo "$$RESPONSE" | grep "HTTP_STATUS:" | cut -d: -f2)
|
HTTP_STATUS=$$(echo "$$RESPONSE" | grep "HTTP_STATUS:" | cut -d: -f2)
|
||||||
|
|
@ -125,14 +125,18 @@ steps:
|
||||||
args:
|
args:
|
||||||
- '-c'
|
- '-c'
|
||||||
- |
|
- |
|
||||||
WH_URL=$$(gcloud secrets versions access latest \
|
WH_URL=$$(gcloud secrets versions access latest
|
||||||
--secret=webhook-url \
|
--secret=webhook-url
|
||||||
--project=${PROJECT_ID} 2>/dev/null || echo "")
|
--project=${PROJECT_ID} 2>/dev/null || echo "")
|
||||||
if [[ -n "$$WH_URL" ]]; then
|
if [[ -n "$$WH_URL" ]]; then
|
||||||
NOTIFY_MSG="✅ *OSVauco Deploy fullført*\nCommit: \`$COMMIT_SHA\`\nService: \`${_CLOUD_RUN_SERVICE}\`\nRegion: \`${_REGION}\`\nSmoke test: ✅"
|
NOTIFY_MSG="✅ *OSVauco Deploy fullført*
|
||||||
curl -s -X POST "$$WH_URL" \
|
Commit: `$COMMIT_SHA`
|
||||||
-H 'Content-Type: application/json' \
|
Service: `${_CLOUD_RUN_SERVICE}`
|
||||||
-d "{\"text\": \"$$NOTIFY_MSG\"}" || true
|
Region: `${_REGION}`
|
||||||
|
Smoke test: ✅"
|
||||||
|
curl -s -X POST "$$WH_URL"
|
||||||
|
-H 'Content-Type: application/json'
|
||||||
|
-d "{"text": "$$NOTIFY_MSG"}" || true
|
||||||
echo "✓ Deploy-notifikasjon sendt"
|
echo "✓ Deploy-notifikasjon sendt"
|
||||||
else
|
else
|
||||||
echo "⚠️ Ingen webhook-url i Secret Manager — hopper over varsling"
|
echo "⚠️ Ingen webhook-url i Secret Manager — hopper over varsling"
|
||||||
|
|
|
||||||
65
scripts/watch-build.sh
Executable file
65
scripts/watch-build.sh
Executable file
|
|
@ -0,0 +1,65 @@
|
||||||
|
#!/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(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" ]
|
||||||
Loading…
Reference in New Issue
Block a user