Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »


젠킨스 스크립트 설정

필수 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

서비스 유형: 폴더 생성 및 배포 시 서비스 간 구분

  • Backend: core

  • BackOffice: admin

  • FrontOffice: web

    • pc

    • mobile

GIT_URL

http://dcsf-dev08.i-on.net/dxp/frontbuilder.git

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에서 서버명 설정

명명규칙

  • 개발 - devapi01

  • 스테이지 - stgapi01

  • 운영(이중화) - prdapi01 / prdapi02

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 ''"
                        ],
                    ]
                ]
            ])
        ])

  • No labels