zioinfo.co.kr 피저빌리티 게이트 결과 ITMS 실기동(Tier2)은 이 환경 불가
(런타임 DB MariaDB/Oracle 도달 불가 + JDK17 부재 + Boot2.6.2 Java21 미지원)
→ 서버 미변경, 배포 대상 환경에서 적용할 준비된 산출물만 생성.
- deploy/deploy_server_itms_block.py: deploy_server.py 에 붙일 itms 블록
(Tier1 빌드+커밋별 아카이브; Tier2 재기동은 주석 처리, 기존 블록 불변, 자격증명 env 주입)
- deploy/build.sh: common 선행 → 5모듈 bootWar (JDK17)
- deploy/systemd/itms-{auth,api,front,batch,datatrans}.service: 4포트 WAR+데몬 유닛 템플릿
- deploy/env/itms.env.example: SPRING_PROFILES_ACTIVE 등 (실 시크릿 미포함)
- deploy/gitea-webhook.md: webhook 3대 함정(url·secret·ALLOWED_HOST_LIST) 반영 생성 가이드(미실행)
- deploy/README.md: 특수성·적용 절차·피저빌리티 근거
보안: AES 암호문·DB 접속정보·NCP 키·Gitea 비번 하드코딩 0(env 주입). 기존 단일-jar 배포 무영향.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
49 lines
3.4 KiB
Markdown
49 lines
3.4 KiB
Markdown
# 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>.env`에 `SPRING_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 블록만 추가).
|