- deploy/systemd: kintex.service(백엔드 8021) + kintex-nanobanana.service(워커, GEMINI env 워커 한정) - deploy/nginx: kintex.zioinfo.kr vhost(/ static, /api·/ws → 8021) - deploy/deploy_kintex.sh: 검증→원자교체→헬스체크→롤백(WISE 패턴) - deploy/setup_kintex_service.py: 멱등 프로비저닝(유닛·venv·nginx) - deploy/deploy_server_kintex_block.py: 서버 webhook 블록 정본 사본 - Jenkinsfile: push→build(vite+bootJar)→deploy→health - .gitattributes: 배포 산출물 LF 강제 포트 8021 배정(8003~8020 기존 GUARDiA 예약). 시크릿은 서버 env only(미커밋). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
47 lines
3.2 KiB
Python
47 lines
3.2 KiB
Python
# KINTEX 블록 — 서버 /opt/zioinfo/deploy_server.py 의 _deploy() 체인에 삽입되는 정본 사본.
|
|
# (deploy_server.py 는 루트 인프라 파일이므로 kintex 리포엔 이 참조 사본만 둔다. 서버 사본이 실행 권위.)
|
|
# 삽입 위치: 마지막 `elif repo == "uiws":` 블록 다음, `logging.info(f"=== {repo} 배포 완료 ===")` 앞.
|
|
# Gitea owner=zio, 기본 브랜치=main, 백엔드 포트 8021.
|
|
|
|
'''
|
|
elif repo == "kintex":
|
|
# 분리형 배포: 프론트 dist(Vite) → /var/www/kintex, 백엔드 bootJar(Gradle) → /opt/kintex/app/app.jar,
|
|
# kintex.service + kintex-nanobanana.service(나노바나나 워커, GEMINI 키는 워커 env 전용) 재기동.
|
|
# Flyway baseline-on-migrate=true → 기동 시 스키마 자동 적용. deploy_kintex.sh 가 검증→원자교체→헬스체크→롤백.
|
|
SRC = "/opt/kintex/src"
|
|
ok = run_steps(repo, [
|
|
("git pull", ["bash", "-c",
|
|
f"if [ -d {SRC}/.git ]; then "
|
|
f"git -C {SRC} fetch origin main && git -C {SRC} reset --hard origin/main; "
|
|
f"else "
|
|
f"[ -e {SRC} ] && mv {SRC} {SRC}.bak_$(date +%Y%m%d%H%M%S); "
|
|
f"git clone 'http://zio:1q2w3e%21Q@127.0.0.1:9003/zio/kintex.git' {SRC}; "
|
|
f"fi"]),
|
|
("npm build", ["bash", "-c",
|
|
f"cd {SRC}/src/frontend && (npm ci 2>/dev/null || npm install) && "
|
|
f"NODE_OPTIONS=--max-old-space-size=4096 npm run build"]),
|
|
("gradle build", ["bash", "-c",
|
|
f"cd {SRC}/src/backend && chmod +x gradlew 2>/dev/null; sed -i 's/\\r$//' gradlew 2>/dev/null; "
|
|
f"./gradlew clean bootJar -x test -q --no-daemon > /tmp/kintex_gradle.log 2>&1; "
|
|
f"rc=$?; tail -8 /tmp/kintex_gradle.log; exit $rc"]),
|
|
("verify jar", ["bash", "-c",
|
|
f"JAR=$(ls -1 {SRC}/src/backend/build/libs/kintex-backend-*.jar 2>/dev/null | grep -v plain | head -1); "
|
|
f"[ -n \"$JAR\" ] || {{ echo 'jar not found'; exit 1; }}; "
|
|
f"unzip -l \"$JAR\" | grep -q 'BOOT-INF/classes/com/zioinfo/kintex/KintexApplication.class' "
|
|
f"|| {{ echo 'invalid jar'; exit 1; }}; echo \"jar OK: $JAR\""]),
|
|
("deploy (deploy_kintex.sh)", ["bash", "-c",
|
|
f"sed -i 's/\\r$//' {SRC}/deploy/*.sh 2>/dev/null; "
|
|
f"bash {SRC}/deploy/deploy_kintex.sh {SRC}"]),
|
|
("health check", ["bash", "-c",
|
|
"for i in $(seq 1 20); do sleep 3; "
|
|
"code=$(curl -s -m 5 -o /dev/null -w '%{http_code}' http://127.0.0.1:8021/health); "
|
|
"if [ \"$code\" = '200' ]; then echo \"health OK ($code)\"; exit 0; fi; "
|
|
"done; echo 'health FAIL'; systemctl is-active kintex.service 2>/dev/null; exit 1"]),
|
|
])
|
|
if ok:
|
|
notify_itsm(True, "✅ kintex 배포 완료 (kintex.zioinfo.kr, 포트 8021)")
|
|
trigger_jenkins("kintex")
|
|
else:
|
|
notify_itsm(False, "❌ kintex 빌드/배포 실패")
|
|
'''
|