젠킨스 스크립트 설정
필수 Jenkins Plugin 설치
Active Choices
Extended Choice Parameter
Multiselect parameter
Publish Over SSH
Git
(선택) Slack Notification
Jenkinsfile 생성
{프로젝트}/devops/Jenkinsfile을 {프로젝트}/Jenkinsfile로 복사
파라미터 설정
Environment
젠킨스 스크립트에서만 설정 가능한 파라미터 → static 설정
파라미터 | Default Value | Description |
---|---|---|
ROOT_PATH | /app/ice4 | 프로젝트 최상위 Root |
APPLICATION_TYPE | admin | 서비스 유형: 폴더 생성 및 배포 시 서비스 간 구분
|
GIT_URL | Git URL | |
GIT_CREDENTIAL | gitlabtoken | Git Access Token → Jenkins Credential에서 설정 |
SLACK_TOKEN | slacktoken | 슬랙 Access Token → Jenkins Credential에서 설정 |
SLACK_CHANNEL | #jenkins | 슬랙 알람 채널명 |
RED | #F25749 | 빌드 실패시 슬랙 채널에 노출되는 색상 |
GREEN | #50BFA0 | 빌드 성공시 슬랙 채널에 노출되는 색상 |
YELLOW | #F2C438 | 빌드 unstable시 슬랙 채널에 노출되는 색상 |
Parameters
빌드시 Form 형태로 입력 가능한 파라미터 → 동적으로 변경 가능
파라미터 | Default Value | Description |
---|---|---|
SPRING_PROFILE | demo-dev | 스프링 프로파일 설정 → 서버에서 어플리케이션 실행시 사용할 프로파일명 |
GIT_BRANCH | project/DEMO | GIT branch 설정 |
ICE4_START | true | 서버 START - 필수: USE_DEPLOY |
ICE4_STOP | true | 서버 STOP |
ICE4_CACHE_BACKUP | true | 캐시 백업 - 필수: ICE4_STOP |
OFFLINE_BUILD | false | Gradle 오프라인 빌드(폐쇠망) |
SLACK_NOTIFICAION | false | 슬랙 알람 사용 여부 |
DELETE_JENKINS_WORKSPACE | true | 빌드 진행 완료 후 Jenkins 서버 내 workspace 폴더 소스 Clean |
UES_GIT_CHECKOUT | true | ICE4 Git Clone |
USE_BUILD | true | ICE4 빌드 |
USE_DEPLOY | true | SSH 배포 및 ICE4 START |
USE_PUBLISH | true | SSH 배포 - 필수: USE_DEPLOY |
USE_TEST | false | Postman Collection TEST |
CURRENT_BUILD_INFO |
Extended Choice Parameter
파라미터 | Default Value | Description |
---|---|---|
DEPLOY_SERVER_NAME | devapi01 | 배포할 서버 → Jenkins Config → PublishSSH에서 서버명 설정 명명규칙
|
SERVER_URL | http://dev-api.demo.com | 배포할 서버 Backend URL(스키마 로드) |
ExtendedChoiceParameterDefinition
type: 다중 선택 모드
name: 파라미터명
value: 값
visibleItemCount: 빌드 시 파라미터 선택 창에 노출할 vault 갯수
properties([ parameters([ [ $class: 'ExtendedChoiceParameterDefinition', type: 'PT_MULTI_SELECT', name: 'DEPLOY_SERVER_NAME', value: 'devapi01', defaultValue: 'devapi01', description: '배포할 서버', visibleItemCount: '1' ], ]) ])
DynamicReferenceParameter
referencedParameters: 레퍼런스 파라미터 value값
name: 파라미터명
script.value: 레퍼런스 파라미터 value값에 따른 파라미터 value 값 결정
properties([ parameters([ [ $class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', referencedParameters: 'DEPLOY_SERVER_NAME', name: 'SERVER_URL', description: '배포할 서버 Backend URL(스키마 로드)', omitValueField: true, script: [ $class: 'GroovyScript', script: [ classpath: [], sandbox: false, script: ''' switch(DEPLOY_SERVER_NAME){ case~/.*devapi01.*/: return """<input name="value" value="http://dev-api.justten.io" class="setting-input" type="text">""" break default: return "" break } ''' ], fallbackScript: [ classpath: [], sandbox: false, script: "return ''" ], ] ] ]) ])
예시 - 개발서버 1대
value: devapi01
DEPLOY_SERVER_NAME
case: devapi01
value: 배포할 URL
properties([ parameters([ [ $class: 'ExtendedChoiceParameterDefinition', type: 'PT_MULTI_SELECT', name: 'DEPLOY_SERVER_NAME', value: 'devapi01', defaultValue: 'devapi01', description: '배포할 서버', visibleItemCount: '1' ], [ $class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', referencedParameters: 'DEPLOY_SERVER_NAME', name: 'SERVER_URL', description: '배포할 서버 Backend URL(스키마 로드)', omitValueField: true, script: [ $class: 'GroovyScript', script: [ classpath: [], sandbox: false, script: ''' switch(DEPLOY_SERVER_NAME){ case~/.*devapi01.*/: return """<input name="value" value="http://dev-api.justten.io" class="setting-input" type="text">""" break default: return "" break } ''' ], fallbackScript: [ classpath: [], sandbox: false, script: "return ''" ], ] ] ]) ])
예시 - 운영서버 1대
value: prdapi01, prdapi02
DEPLOY_SERVER_NAME
case: prdapi01
value: prdapi01, prdapi02
DEPLOY_SERVER_NAME
case: prdapi01
value: 배포할 IP:PORT 혹은 URL
case: prdapi02
value: 배포할 IP:PORT 혹은 URL
properties([ parameters([ [ $class: 'ExtendedChoiceParameterDefinition', type: 'PT_MULTI_SELECT', name: 'DEPLOY_SERVER_NAME', value: 'prdapi01,prdapi02', defaultValue: 'prdapi01', description: '배포할 서버', visibleItemCount: '1' ], [ $class: 'DynamicReferenceParameter', choiceType: 'ET_FORMATTED_HTML', referencedParameters: 'DEPLOY_SERVER_NAME', name: 'SERVER_URL', description: '배포할 서버 Backend URL(스키마 로드)', omitValueField: true, script: [ $class: 'GroovyScript', script: [ classpath: [], sandbox: false, script: ''' switch(DEPLOY_SERVER_NAME){ case~/.*prdapi01.*/: return """<input name="value" value="http://api.justten.io" class="setting-input" type="text">""" break case~/.*prdapi02.*/: return """<input name="value" value="http://api.justten.io" class="setting-input" type="text">""" break default: return "" break } ''' ], fallbackScript: [ classpath: [], sandbox: false, script: "return ''" ], ] ] ]) ])