데스크탑 앱 추가수정
This commit is contained in:
Executable
+88
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/env bash
|
||||
# Jenkins desktop 빌드 트리거 연결·인증 검증 (exdev 서버에서 실행)
|
||||
set -euo pipefail
|
||||
|
||||
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:${PATH:-/usr/bin:/bin}"
|
||||
|
||||
JENKINS_URL="${GC_DESKTOP_JENKINS_URL:-http://127.0.0.1:8090}"
|
||||
JENKINS_JOB="${GC_DESKTOP_JENKINS_JOB:-goldenChart-Desktop-Pipeline}"
|
||||
JENKINS_USER="${GC_DESKTOP_JENKINS_USER:-}"
|
||||
JENKINS_TOKEN="${GC_DESKTOP_JENKINS_TOKEN:-}"
|
||||
JENKINS_TRIGGER_TOKEN="${GC_DESKTOP_JENKINS_TRIGGER_TOKEN:-goldenchart-desktop-build}"
|
||||
DOCKER_JENKINS_URL="${DOCKER_JENKINS_URL:-http://host.docker.internal:8090}"
|
||||
DRY_RUN="${DRY_RUN:-1}"
|
||||
|
||||
JENKINS_URL="${JENKINS_URL%/}"
|
||||
JOB_API="${JENKINS_URL}/job/${JENKINS_JOB// /%20}"
|
||||
|
||||
log() { echo "[verify-jenkins] $*"; }
|
||||
fail() { log "FAIL: $*"; exit 1; }
|
||||
|
||||
curl_get() {
|
||||
if [[ -n "$JENKINS_USER" && -n "$JENKINS_TOKEN" ]]; then
|
||||
curl -sS -u "${JENKINS_USER}:${JENKINS_TOKEN}" "$@"
|
||||
else
|
||||
curl -sS "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
curl_post() {
|
||||
local extra=()
|
||||
if [[ -n "$JENKINS_USER" && -n "$JENKINS_TOKEN" ]]; then
|
||||
extra=(-u "${JENKINS_USER}:${JENKINS_TOKEN}")
|
||||
fi
|
||||
curl -sS -o /tmp/gc-jenkins-trigger-body.txt -w "%{http_code}" "${extra[@]}" -X POST \
|
||||
-H "Content-Type: application/x-www-form-urlencoded" "$@"
|
||||
}
|
||||
|
||||
log "Jenkins URL (host): $JENKINS_URL"
|
||||
log "Job: $JENKINS_JOB"
|
||||
log "Trigger token: $JENKINS_TRIGGER_TOKEN"
|
||||
log "API user: ${JENKINS_USER:-<not set>}"
|
||||
log "DRY_RUN=$DRY_RUN (실제 빌드 트리거 없음, HTTP 코드만 확인)"
|
||||
|
||||
if ! curl -sf -o /dev/null "${JENKINS_URL}/login"; then
|
||||
fail "Jenkins에 연결할 수 없습니다 ($JENKINS_URL). Jenkins가 8090에서 실행 중인지 확인하세요."
|
||||
fi
|
||||
log "OK: Jenkins login page reachable"
|
||||
|
||||
if [[ -z "$JENKINS_USER" || -z "$JENKINS_TOKEN" ]]; then
|
||||
log "WARN: GC_DESKTOP_JENKINS_USER/TOKEN 미설정 — 웹 UI 빌드 트리거는 대부분 403으로 실패합니다."
|
||||
log " Jenkins → 사용자 → Configure → API Token 생성 후:"
|
||||
log " ./scripts/configure-desktop-jenkins-backend.sh"
|
||||
fi
|
||||
|
||||
if [[ "$DRY_RUN" == "1" ]]; then
|
||||
job_code="$(curl_get -o /tmp/gc-jenkins-job.json -w "%{http_code}" "${JOB_API}/api/json?tree=name" || true)"
|
||||
log "GET job api → HTTP $job_code"
|
||||
if [[ "$job_code" == "404" ]]; then
|
||||
fail "Job 없음 (HTTP 404). ./scripts/server-install-desktop-jenkins.sh 실행."
|
||||
fi
|
||||
if [[ "$job_code" == "401" || "$job_code" == "403" ]]; then
|
||||
fail "Jenkins API 인증 실패 (HTTP $job_code). GC_DESKTOP_JENKINS_USER/TOKEN 확인."
|
||||
fi
|
||||
if [[ ! "$job_code" =~ ^2 ]]; then
|
||||
fail "Job API 오류 (HTTP $job_code)"
|
||||
fi
|
||||
log "OK: Job API 접근 가능 (빌드 트리거는 DRY_RUN으로 생략)"
|
||||
else
|
||||
log "실제 빌드 트리거 — ./scripts/trigger-desktop-jenkins-build.sh 호출"
|
||||
GC_DESKTOP_JENKINS_URL="$JENKINS_URL" \
|
||||
GC_DESKTOP_JENKINS_USER="$JENKINS_USER" \
|
||||
GC_DESKTOP_JENKINS_TOKEN="$JENKINS_TOKEN" \
|
||||
GC_DESKTOP_JENKINS_TRIGGER_TOKEN="$JENKINS_TRIGGER_TOKEN" \
|
||||
"$(cd "$(dirname "$0")" && pwd)/trigger-desktop-jenkins-build.sh"
|
||||
fi
|
||||
|
||||
if command -v docker >/dev/null 2>&1 && docker ps --format '{{.Names}}' 2>/dev/null | grep -qx 'gc-backend'; then
|
||||
log "Docker backend → host Jenkins 연결 테스트 ($DOCKER_JENKINS_URL)"
|
||||
if docker exec gc-backend wget -qO- --timeout=5 "${DOCKER_JENKINS_URL}/login" >/dev/null 2>&1; then
|
||||
log "OK: gc-backend 컨테이너에서 host Jenkins 접근 가능"
|
||||
else
|
||||
fail "gc-backend에서 $DOCKER_JENKINS_URL 접근 불가. docker-compose extra_hosts·GC_DESKTOP_JENKINS_URL 확인 후 docker compose up -d backend"
|
||||
fi
|
||||
else
|
||||
log "SKIP: gc-backend 컨테이너 없음 — Docker 연결 테스트 생략"
|
||||
fi
|
||||
|
||||
log "검증 완료"
|
||||
Reference in New Issue
Block a user