itsm_ysm/deploy/gitea-webhook.md
itms-merge-dev 08e634c3a5 ci(itms): CI/CD 배포 아티팩트 추가 (적용 대기·산출물 준비형)
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>
2026-07-17 21:08:59 +09:00

1.6 KiB

Gitea webhook — ythong/itms (적용 대기)

push 시 배포 서버 deploy_server(port 9999)로 알리는 webhook. 아직 생성하지 않음.

3대 함정 (GUARDiA 기지 교훈 — 반드시 준수)

  1. url: NAT 헤어핀 회피 위해 http://127.0.0.1:9999/(localhost) 로 지정.
  2. secret: 배포 서버 deploy_server 의 검증 secret 과 일치시킬 것(불일치 시 403). 값은 서버 운영 시크릿 — 여기에 적지 말 것.
  3. ALLOWED_HOST_LIST: Gitea app.ini [webhook] ALLOWED_HOST_LIST 에 loopback 포함(없으면 localhost 웹훅 차단).

생성 (배포 대상 환경에서 실행; 자격증명·secret 은 env 로 주입)

# GITEA_TOKEN, DEPLOY_SECRET 를 환경변수로 주입(하드코딩 금지)
curl -s -X POST "https://git.zioinfo.co.kr/api/v1/repos/ythong/itms/hooks" \
  -H "Authorization: token ${GITEA_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "gitea",
    "active": true,
    "events": ["push"],
    "config": {
      "url": "http://127.0.0.1:9999/",
      "content_type": "json",
      "secret": "'"${DEPLOY_SECRET}"'"
    }
  }'
  • branch 필터가 필요하면 deploy_server 측에서 ref == refs/heads/main 확인(현행 deploy_server 는 repo 이름으로 분기).
  • 생성 후 Gitea UI 의 "Test Delivery" 로 발화 → deploy_server 로그에서 repo=itms 수신 확인.

deploy_server 반영

deploy_server_itms_block.py 를 배포 서버 deploy_server.py_deploy() elif 체인에 병합 → 서버 사본 반영 → deploy 서비스 재시작. (교훈: 서버 사본 미반영/미재시작 시 웹훅 로그 '완료'여도 1ms no-op = 블록 부재.)