#!/usr/bin/env bash # ============================================================================== # Jenkins Job 설치/갱신 — BizCare-Pipeline (Track B) # 서버에서 실행: bash scripts/install-jenkins-bizcare-job.sh # ============================================================================== set -euo pipefail export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:${PATH:-/usr/bin:/bin}" JENKINS_HOME="${JENKINS_HOME:-/Users/aidev/.jenkins}" JENKINS_URL="${JENKINS_URL:-http://127.0.0.1:8090}" JOB_NEW="BizCare-Pipeline" JOB_OLD="BillCare-Pipeline" BARE_REPO="file:///Volumes/ADATA/git/BizCare.git" DEPLOY_SCRIPT="/Volumes/ADATA/git/deploy-bizcare.sh" write_job() { local job="$1" desc="$2" local dir="${JENKINS_HOME}/jobs/${job}" mkdir -p "$dir" cat > "${dir}/config.xml" < ${desc} false 2 ${BARE_REPO} */main false true false false false false #!/bin/bash set -euo pipefail export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:\$PATH" export GIT_DIR="/Volumes/ADATA/git/BizCare.git" export WORK_TREE="/Users/aidev/apps/BizCare" echo "=== BizCare Jenkins Build #\${BUILD_NUMBER} ===" echo "시각: \$(date)" echo "GIT_DIR=\$GIT_DIR" echo "WORK_TREE=\$WORK_TREE" SERVICE_NAME="\${SERVICE_NAME:-all}" ${DEPLOY_SCRIPT} EOF echo "[OK] wrote ${dir}/config.xml" } echo "======================================================" echo " Jenkins BizCare job 설치 $(date '+%Y-%m-%d %H:%M:%S')" echo "======================================================" [ -d "$JENKINS_HOME" ] || { echo "ERROR: JENKINS_HOME 없음: $JENKINS_HOME"; exit 1; } [ -x "$DEPLOY_SCRIPT" ] || { echo "ERROR: deploy 스크립트 없음: $DEPLOY_SCRIPT"; exit 1; } [ -d /Volumes/ADATA/git/BizCare.git ] || { echo "ERROR: BizCare.git 없음"; exit 1; } write_job "$JOB_NEW" "BizCare — Track B (deploy-bizcare.sh, file:// BizCare.git)" write_job "$JOB_OLD" "BillCare → BizCare 위임 — Track B (deploy-bizcare.sh, file:// BizCare.git)" # Jenkins에 설정 리로드 if curl -sf -o /dev/null "${JENKINS_URL}/login" 2>/dev/null; then echo "[INFO] Jenkins reloadConfiguration 시도: $JENKINS_URL" # crumb (보안 켜져 있으면) CRUMB_JSON="$(curl -sf "${JENKINS_URL}/crumbIssuer/api/json" 2>/dev/null || true)" HDR=() if [ -n "$CRUMB_JSON" ]; then FIELD="$(printf '%s' "$CRUMB_JSON" | python3 -c "import sys,json; print(json.load(sys.stdin).get('crumbRequestField',''))" 2>/dev/null || true)" VAL="$(printf '%s' "$CRUMB_JSON" | python3 -c "import sys,json; print(json.load(sys.stdin).get('crumb',''))" 2>/dev/null || true)" if [ -n "$FIELD" ] && [ -n "$VAL" ]; then HDR=(-H "${FIELD}:${VAL}") fi fi if curl -sf "${HDR[@]}" -X POST "${JENKINS_URL}/reload" >/dev/null 2>&1 \ || curl -sf "${HDR[@]}" -X POST "${JENKINS_URL}/reloadConfiguration" >/dev/null 2>&1; then echo "[OK] Jenkins reload 요청 성공" else echo "[WARN] HTTP reload 실패 — Jenkins 재시작 또는 UI에서 'Reload Configuration from Disk' 실행" echo " 또는: launchctl kickstart -k gui/\$(id -u)/homebrew.mxcl.jenkins-lts" fi else echo "[WARN] Jenkins 미기동 ($JENKINS_URL) — job 파일은 기록됨. Jenkins 기동 후 자동 로드됨" fi echo "======================================================" echo " Job: $JOB_NEW (정본)" echo " Job: $JOB_OLD (구 이름 호환 → 동일 BizCare 배포)" echo " SCM: $BARE_REPO" echo " Deploy: $DEPLOY_SCRIPT" echo "======================================================"