itsm_ysm/deploy
itms-merge-dev 4fae61105c ci(itms): 운영 nginx vhost(itms.wise.ai.kr) + 통합앱 QR 페이지(/mobile-app) 아티팩트
- 운영 리버스 프록시 템플릿(RHEL conf.d, certbot 개별 발급 안내)
- dev/prod 공용 /mobile-app QR 페이지(중앙 ITSM APK 저장소 읽기전용 재사용)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 15:50:21 +09:00
..
env ci(itms): CI/CD 배포 아티팩트 추가 (적용 대기·산출물 준비형) 2026-07-17 21:08:59 +09:00
nginx ci(itms): 운영 nginx vhost(itms.wise.ai.kr) + 통합앱 QR 페이지(/mobile-app) 아티팩트 2026-07-19 15:50:21 +09:00
static ci(itms): 운영 nginx vhost(itms.wise.ai.kr) + 통합앱 QR 페이지(/mobile-app) 아티팩트 2026-07-19 15:50:21 +09:00
systemd ci(itms): CI/CD 배포 아티팩트 추가 (적용 대기·산출물 준비형) 2026-07-17 21:08:59 +09:00
build.sh ci(itms): CI/CD 배포 아티팩트 추가 (적용 대기·산출물 준비형) 2026-07-17 21:08:59 +09:00
deploy_itms_prod.sh ci(itms): dev->prod front 자동 승격 스크립트 추가 (deploy_itms_prod.sh) 2026-07-19 15:39:43 +09:00
deploy_server_itms_block.py ci(itms): CI/CD 배포 아티팩트 추가 (적용 대기·산출물 준비형) 2026-07-17 21:08:59 +09:00
gitea-webhook.md ci(itms): CI/CD 배포 아티팩트 추가 (적용 대기·산출물 준비형) 2026-07-17 21:08:59 +09:00
README.md ci(itms): 개발서버 도메인(itms.zioinfo.co.kr) 리버스 프록시 vhost 추가 (적용 대기) 2026-07-17 23:24:36 +09:00

ITMS CI/CD 배포 아티팩트 (적용 대기)

생성: 2026-07-17 (itms-cicd 하네스, 산출물 준비형) | 대상 저장소: Gitea ythong/itms 상태: 적용 대기(NOT applied). 이 디렉터리는 배포 대상 환경에서 적용할 준비된 산출물이다. 서버는 변경되지 않았다.

왜 "적용 대기"인가 (피저빌리티 게이트)

GUARDiA 인프라 서버(zioinfo.co.kr)에서 실측한 결과, ITMS 앱의 실기동(Tier2)은 이 환경에서 불가하다:

  • api/batch/datatrans 런타임 DB(MariaDB ur_itms_db·Oracle XE)가 GUARDiA 인프라에서 도달 불가(고객사 전용망 DB).
  • 서버 런타임 JDK가 21뿐(JDK17 부재). ITMS는 Boot 2.6.2로 Java 21 미지원.

따라서 실배포는 고객사 배포 환경(대상 기관 DB망 + 기관 프로파일 시크릿 + JDK17)에서 아래 아티팩트를 적용해 수행한다. Tier1(빌드 자동화)만 별도로 쓰려면 빌드 서버에 JDK17을 두고 deploy_server_itms_block.py의 빌드 단계만 사용한다.

구성 특수성

ITMS는 단일-jar가 아니라 4포트 독립 WAR 스택 + 데몬:

모듈 포트 산출물 런타임 의존 systemd
auth 11000 bootWar (RSA jwtkey) itms-auth.service
api 11010 bootWar MariaDB ur_itms_db itms-api.service
front 11020 bootWar DB 무접속(REST만) itms-front.service
batch 11030 bootWar MariaDB + Oracle XE + 메일/알림톡 itms-batch.service
datatrans (데몬) bootWar kccfnova/uac_cltr_db + NAS itms-datatrans.service
common 라이브러리(선행 빌드)
legacy/nlib Maven·Java8, CI 제외

파일

파일 용도
deploy_server_itms_block.py scripts/deploy/deploy_server.py_deploy()에 붙여넣을 elif repo == "itms": 블록(Tier1 빌드+아카이브; 기존 블록 불변)
build.sh 모듈별 gradle 빌드(common 선행 → 5모듈 bootWar) — JDK17 필요
systemd/itms-*.service 모듈별 systemd 유닛 템플릿(Tier2, 활성화 조건 충족 시)
env/itms-*.env.example 모듈별 env 템플릿(SPRING_PROFILES_ACTIVE=기관) — 실 시크릿은 여기 넣지 말고 서버 로컬에서 관리
gitea-webhook.md Gitea ythong/itms push webhook 생성 가이드 + 스크립트(미실행)

적용 절차 (고객사/배포 대상 환경)

  1. 선결: JDK17 설치, 런타임 DB(MariaDB/Oracle) 연결, 기관 프로파일 시크릿(keystore·yml) 배치.
  2. CI: deploy_server_itms_block.py를 배포 서버 deploy_server.py에 병합 → deploy 서비스 재시작. Gitea webhook 생성(gitea-webhook.md).
  3. 빌드: build.sh(또는 deploy 블록)로 common 선행 → 5모듈 bootWar. 산출물 */build/libs/*.war.
  4. CD(Tier2): env/itms-<module>.envSPRING_PROFILES_ACTIVE=<기관> 설정 → systemd/itms-*.service 배치 → systemctl daemon-reload && enable --now.
  5. 헬스체크: 11000/11010/11020 도달, batch/datatrans 로그 라이브니스.

보안 불변

  • 이 디렉터리 어떤 파일에도 AES 암호문·DB 접속정보·NCP/카카오 키·Gitea 비번·SSH 계정을 하드코딩 금지. 자격증명은 env/서버 로컬에서만.
  • force push 금지. 기존 단일-jar 솔루션 배포에 무영향(deploy_server는 itms 블록만 추가).

접속 도메인 (개발서버)

  • itms.zioinfo.co.kr (서버 101.79.17.164). 브라우저 진입점 = front(:11020).
  • 리버스 프록시: deploy/nginx/itms.zioinfo.co.kr.conf/etc/nginx/sites-available/ 에 배치 → sites-enabled 심볼릭 → nginx -t && systemctl reload nginx.
  • 라이브 조건: ① Tier2 앱 기동(front 등) ② TLS 인증서 발급(certbot -d itms.zioinfo.co.kr). 미충족 시 각각 502 / 인증서 오류.