jenkinsfile
This commit is contained in:
50
kamco-make-dataset-generation/Jenkinsfile
vendored
50
kamco-make-dataset-generation/Jenkinsfile
vendored
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user