G-1: 메신저 Webhook Relay + _send_to_room 실제 httpx 호출 구현 G-2: POST /api/tasks/bulk SR 대량작업 엔드포인트 (최대 100건) G-3: 라이선스 만료 알림 스케줄러 (매일 09:00 KST) G-4: 체험판 upgrade_banner 필드 + license.py 배너 로직 G-5: core/auto_rca.py + incidents/problem auto-rca 엔드포인트 G-6: core/deploy_impact.py + vibe impact-analysis 엔드포인트 G-7: core/ticket_classifier.py + SR 생성 시 AI 분류 + ai-suggestion API G-8: VulnPatchRecord 모델 + vuln_scan 패치추적 4개 엔드포인트 G-9: core/jira_sync.py + gateway Jira/Confluence 연동 엔드포인트 G-10: core/push_notify.py + routers/push.py + PushSubscription 모델 G-11: approvals 다중승인 (위임/서명/기한초과/마감연장) G-12: alembic.ini + migrations/ + cicd/migrate_to_postgres.sh 하네스: guardia-orchestrator 확장기능 Phase 반영 봇명령어: /sr /status /license /bulk 슬래시 명령어 추가 설치스크립트: setup/ (Ubuntu, CentOS, RHEL, Windows) --test 옵션 포함 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
155 lines
5.6 KiB
Markdown
155 lines
5.6 KiB
Markdown
# GUARDiA ITSM — CI/CD 표준 가이드
|
|
|
|
> **버전**: 1.0.0
|
|
> **최종 수정**: 2026-05-25
|
|
> **대상 환경**: 온프레미스 Linux (RHEL 8/9, Rocky Linux 8/9, Ubuntu 20.04/22.04)
|
|
|
|
---
|
|
|
|
## 1. 개요
|
|
|
|
GUARDiA ITSM의 배포 파이프라인은 **Jenkins 기반 CI/CD**를 표준으로 사용한다.
|
|
SR(서비스 요청)이 접수되면 GUARDiA Messenger 봇과 Claude CLI가 바이브 코딩을 수행하고,
|
|
완료 후 **Jenkins 파이프라인**이 자동으로 빌드 → 테스트 → 배포 → 결과 통보까지 처리한다.
|
|
|
|
```
|
|
SR 접수
|
|
│
|
|
▼ GUARDiA Messenger → Claude CLI
|
|
바이브 코딩 (AI 어시스턴트)
|
|
│ 코딩 완료 → !build <session_id>
|
|
▼
|
|
Jenkins 파이프라인 트리거 (GUARDiA ITSM → Jenkins REST API)
|
|
│
|
|
├─ Stage 1: Checkout 소스 체크아웃 (Git)
|
|
├─ Stage 2: Build 컴파일 / 패키징
|
|
├─ Stage 3: Test 단위 테스트 / SonarQube 분석
|
|
├─ Stage 4: Archive 아티팩트 저장
|
|
├─ Stage 5: Deploy SSH 전송 (배포 서버)
|
|
├─ Stage 6: WAS Restart WAS 재기동
|
|
├─ Stage 7: Health Check 서비스 정상 확인
|
|
└─ Stage 8: ITSM Callback 결과 → GUARDiA ITSM 자동 등록
|
|
│
|
|
▼
|
|
SR COMPLETED + 고객 이메일·메신저 자동 발송
|
|
```
|
|
|
|
---
|
|
|
|
## 2. 폴더 구조
|
|
|
|
```
|
|
cicd/
|
|
├── README.md ← 이 파일 (CI/CD 표준 개요)
|
|
│
|
|
├── docs/ ← 설치/운영 문서
|
|
│ ├── 01_jenkins_install.md Jenkins 설치 (RHEL/Rocky/Ubuntu)
|
|
│ ├── 02_pipeline_standard.md 파이프라인 설계 표준
|
|
│ ├── 03_security_config.md 보안 설정 (Credentials, RBAC)
|
|
│ └── 04_itsm_integration.md GUARDiA ITSM 연동 가이드
|
|
│
|
|
├── jenkins/ ← Jenkinsfile 템플릿
|
|
│ ├── Jenkinsfile.java-maven Java Maven 프로젝트 표준
|
|
│ ├── Jenkinsfile.java-gradle Java Gradle 프로젝트 표준
|
|
│ ├── Jenkinsfile.nodejs Node.js 프로젝트 표준
|
|
│ ├── Jenkinsfile.deploy-only 배포 전용 (빌드 없음)
|
|
│ └── Jenkinsfile.rollback 롤백 파이프라인
|
|
│
|
|
├── scripts/
|
|
│ ├── install/
|
|
│ │ ├── jenkins_install.sh Jenkins 자동 설치
|
|
│ │ └── jenkins_plugins.sh 필수 플러그인 설치
|
|
│ ├── pipeline/
|
|
│ │ ├── build.sh 빌드 공통 스크립트
|
|
│ │ ├── test.sh 테스트 공통 스크립트
|
|
│ │ ├── deploy.sh 파일 배포 (rsync/SCP)
|
|
│ │ ├── was_restart.sh WAS 재기동 (Tomcat/JBoss/JEUS)
|
|
│ │ ├── health_check.sh 헬스체크 (HTTP/TCP)
|
|
│ │ └── rollback.sh 롤백 스크립트
|
|
│ └── notify/
|
|
│ └── itsm_callback.sh ITSM 결과 콜백
|
|
│
|
|
└── config/
|
|
├── jenkins.yaml JCasC (Jenkins as Code) 설정
|
|
└── sonarqube.properties SonarQube 연동 설정
|
|
```
|
|
|
|
---
|
|
|
|
## 3. 빠른 시작
|
|
|
|
### 3-1. Jenkins 설치
|
|
```bash
|
|
# RHEL/Rocky Linux
|
|
sudo bash cicd/scripts/install/jenkins_install.sh
|
|
|
|
# 플러그인 자동 설치
|
|
sudo bash cicd/scripts/install/jenkins_plugins.sh
|
|
```
|
|
|
|
### 3-2. JCasC 설정 적용
|
|
```bash
|
|
# Jenkins 재시작 후 JCasC 적용
|
|
cp cicd/config/jenkins.yaml /var/lib/jenkins/casc_configs/
|
|
sudo systemctl restart jenkins
|
|
```
|
|
|
|
### 3-3. GUARDiA ITSM 연동 설정
|
|
```bash
|
|
# 환경변수 설정 (itsm/.env)
|
|
JENKINS_URL=http://jenkins.agency.go.kr:8080
|
|
JENKINS_USER=itsm-bot
|
|
JENKINS_TOKEN=<API Token>
|
|
JENKINS_CALLBACK_URL=http://itsm.agency.go.kr:8000/api/vibe/callback
|
|
```
|
|
|
|
### 3-4. 파이프라인 등록
|
|
Jenkins 관리 콘솔 → New Item → Pipeline → SCM에서 Jenkinsfile 지정
|
|
또는 `cicd/config/jenkins.yaml` 로 자동 생성.
|
|
|
|
---
|
|
|
|
## 4. 브랜치 전략 (GitFlow)
|
|
|
|
```
|
|
main ─────────────────────────────── 운영 배포
|
|
↑ merge
|
|
develop ──────────────────────────────── 통합 개발
|
|
↑ merge
|
|
feature/* ────────────── 기능 개발 (SR 연결)
|
|
hotfix/* ─── 긴급 패치 (SR 연결)
|
|
release/* ──── 릴리즈 준비
|
|
```
|
|
|
|
| 브랜치 | 파이프라인 | 배포 환경 |
|
|
|--------|-----------|---------|
|
|
| `feature/*` | Build + Test | 개발 |
|
|
| `develop` | Build + Test + Deploy | 개발/스테이징 |
|
|
| `release/*` | Full Pipeline + SonarQube | 스테이징 |
|
|
| `main` | Full Pipeline + Approval Gate | 운영 |
|
|
| `hotfix/*` | Full Pipeline (Fast Track) | 운영 |
|
|
|
|
---
|
|
|
|
## 5. 환경별 Jenkins 파이프라인 파라미터
|
|
|
|
| 파라미터 | 설명 | 기본값 |
|
|
|---------|------|-------|
|
|
| `ITSM_SESSION_ID` | GUARDiA 바이브 세션 ID | — |
|
|
| `ITSM_SR_ID` | 연결된 SR ID | — |
|
|
| `DEPLOY_ENV` | 배포 환경 (dev/stg/prd) | dev |
|
|
| `TARGET_SERVER` | 배포 대상 서버명 | — |
|
|
| `SKIP_TEST` | 테스트 건너뜀 (긴급 시) | false |
|
|
| `ROLLBACK_VERSION` | 롤백 버전 (빌드 번호) | — |
|
|
|
|
---
|
|
|
|
## 6. 관련 문서
|
|
|
|
| 문서 | 경로 |
|
|
|------|------|
|
|
| Jenkins 설치 가이드 | [docs/01_jenkins_install.md](docs/01_jenkins_install.md) |
|
|
| 파이프라인 설계 표준 | [docs/02_pipeline_standard.md](docs/02_pipeline_standard.md) |
|
|
| 보안 설정 | [docs/03_security_config.md](docs/03_security_config.md) |
|
|
| ITSM 연동 가이드 | [docs/04_itsm_integration.md](docs/04_itsm_integration.md) |
|