diff --git a/kamco-make-dataset-generation/Jenkinsfile b/kamco-make-dataset-generation/Jenkinsfile index 319960c..e79d84f 100644 --- a/kamco-make-dataset-generation/Jenkinsfile +++ b/kamco-make-dataset-generation/Jenkinsfile @@ -1,12 +1,22 @@ pipeline { agent any + + parameters { + string(name: 'SPRING_PROFILES_ACTIVE', defaultValue: 'prod', description: 'Spring Profile (dev/prod)') + string(name: 'BATCH_DATE', defaultValue: '', description: 'Batch Date (YYYY-MM-DD, empty = today)') + string(name: 'ADDITIONAL_PARAMS', defaultValue: '', description: 'Additional Parameters (e.g., limit=100)') + choice(name: 'ACTION', choices: ['RUN', 'VERIFY_ONLY'], description: 'Action to perform') + } + tools { jdk 'jdk21' } + environment { BRANCH = 'main' GIT_REPO = 'https://kamco.git.gs.dabeeo.com/MVPTeam/kamco-cd-cron.git' JAR_NAME = 'generator-dataset-for-training.jar' + TODAY = sh(script: "date +%Y-%m-%d", returnStdout: true).trim() } // NOTE: Pre-built JAR is included in the repository @@ -56,13 +66,49 @@ pipeline { } } - stage('Deploy') { + stage('Run JAR') { + when { + expression { params.ACTION == 'RUN' } + } steps { dir("kamco-make-dataset-generation") { script { def jarPath = "build/libs/${env.JAR_NAME}" - echo "Ready to deploy: ${jarPath}" + // Determine batch date: use parameter if provided, otherwise use today + def batchDate = params.BATCH_DATE ?: env.TODAY + + echo "=========================================" + echo "Running JAR: ${jarPath}" + echo "Profile: ${params.SPRING_PROFILES_ACTIVE}" + echo "Batch Date: ${batchDate}" + echo "Additional Params: ${params.ADDITIONAL_PARAMS}" + echo "=========================================" + + // Build Java command + def javaCmd = "java -jar ${jarPath}" + + // Add Spring profile + if (params.SPRING_PROFILES_ACTIVE) { + javaCmd += " --spring.profiles.active=${params.SPRING_PROFILES_ACTIVE}" + } + + // Add batch date parameter + javaCmd += " date=${batchDate}" + + // Add additional parameters + if (params.ADDITIONAL_PARAMS) { + javaCmd += " ${params.ADDITIONAL_PARAMS}" + } + + echo "Executing: ${javaCmd}" + + // Execute JAR + sh """ + ${javaCmd} + """ + + echo "JAR execution completed successfully" } } } diff --git a/kamco-make-dataset-generation/claudedocs/PREBUILT_JAR_DEPLOYMENT.md b/kamco-make-dataset-generation/claudedocs/PREBUILT_JAR_DEPLOYMENT.md index 5cabae8..fcc946d 100644 --- a/kamco-make-dataset-generation/claudedocs/PREBUILT_JAR_DEPLOYMENT.md +++ b/kamco-make-dataset-generation/claudedocs/PREBUILT_JAR_DEPLOYMENT.md @@ -57,11 +57,90 @@ git push ### 2. Jenkins 서버 (폐쇄망 환경) +#### Jenkins 파라미터 + +파이프라인 실행 시 다음 파라미터를 설정할 수 있습니다: + +| 파라미터 | 타입 | 기본값 | 설명 | +|---------|------|--------|------| +| SPRING_PROFILES_ACTIVE | String | prod | Spring Profile (dev/prod) | +| BATCH_DATE | String | (공백) | Batch 날짜 (YYYY-MM-DD, 공백 = 오늘) | +| ADDITIONAL_PARAMS | String | (공백) | 추가 파라미터 (예: limit=100) | +| ACTION | Choice | RUN | 실행 모드 (RUN / VERIFY_ONLY) | + +#### 실행 예시 + +**1. 기본 실행 (오늘 날짜)**: +``` +ACTION: RUN +SPRING_PROFILES_ACTIVE: prod +BATCH_DATE: (공백) ← 자동으로 오늘 날짜 사용 +ADDITIONAL_PARAMS: (공백) + +→ java -jar generator-dataset-for-training.jar --spring.profiles.active=prod date=2026-02-09 +``` + +**2. 특정 날짜로 실행**: +``` +ACTION: RUN +SPRING_PROFILES_ACTIVE: prod +BATCH_DATE: 2024-01-15 +ADDITIONAL_PARAMS: (공백) + +→ java -jar generator-dataset-for-training.jar --spring.profiles.active=prod date=2024-01-15 +``` + +**3. 오늘 날짜 + 추가 파라미터**: +``` +ACTION: RUN +SPRING_PROFILES_ACTIVE: prod +BATCH_DATE: (공백) +ADDITIONAL_PARAMS: limit=100 debug=true + +→ java -jar generator-dataset-for-training.jar --spring.profiles.active=prod date=2026-02-09 limit=100 debug=true +``` + +**4. 개발 환경 테스트**: +``` +ACTION: RUN +SPRING_PROFILES_ACTIVE: dev +BATCH_DATE: 2024-02-01 +ADDITIONAL_PARAMS: dryRun=true + +→ java -jar generator-dataset-for-training.jar --spring.profiles.active=dev date=2024-02-01 dryRun=true +``` + +**5. JAR 검증만 (실행 안 함)**: +``` +ACTION: VERIFY_ONLY +→ JAR 파일 존재만 확인하고 종료 +``` + +#### 날짜 파라미터 동작 방식 + +**BATCH_DATE 파라미터**: +- **비어있음 (기본값)**: Jenkins 서버의 현재 날짜 자동 사용 (YYYY-MM-DD) +- **값 입력**: 입력한 날짜 사용 (예: 2024-01-15) + +**예시**: +```bash +# BATCH_DATE가 비어있으면 +TODAY=$(date +%Y-%m-%d) # 2026-02-09 +java -jar app.jar date=2026-02-09 + +# BATCH_DATE에 2024-01-15 입력하면 +java -jar app.jar date=2024-01-15 +``` + +#### Jenkins 파이프라인 단계 + Jenkins는 자동으로: -1. Git에서 코드 체크아웃 -2. JAR 파일 존재 확인 -3. JAR 파일 정보 출력 -4. 배포 실행 (Deploy stage에 배포 명령 추가 필요) +1. **Environment 설정**: 오늘 날짜 계산 (TODAY 변수) +2. **Checkout**: Git에서 코드 체크아웃 +3. **Verify JAR**: JAR 파일 존재 확인 +4. **Run JAR** (ACTION=RUN인 경우만): + - BATCH_DATE가 비어있으면 TODAY 사용 + - JAR 실행 with 파라미터 ## 파일 구조 @@ -90,14 +169,30 @@ out/ ## Jenkinsfile 구조 ```groovy +parameters { + string(name: 'SPRING_PROFILES_ACTIVE', defaultValue: 'prod', ...) + string(name: 'BATCH_DATE', defaultValue: '', ...) + string(name: 'ADDITIONAL_PARAMS', defaultValue: '', ...) + choice(name: 'ACTION', choices: ['RUN', 'VERIFY_ONLY'], ...) +} + +environment { + TODAY = sh(script: "date +%Y-%m-%d", returnStdout: true).trim() +} + stage('Verify JAR') { // JAR 파일 존재 확인 // 파일 정보 출력 } -stage('Deploy') { - // 배포 명령 실행 - // 예: scp, ssh, kubectl 등 +stage('Run JAR') { + when { + expression { params.ACTION == 'RUN' } + } + // 날짜 결정: BATCH_DATE가 비어있으면 TODAY 사용 + def batchDate = params.BATCH_DATE ?: env.TODAY + // JAR 실행 + // java -jar generator-dataset-for-training.jar --spring.profiles.active=prod date=${batchDate} ${ADDITIONAL_PARAMS} } ```