Groovy

Java Virtual Machine (JVM) 에서 실행되는 동적 스크립팅 언어 (런타임 시에 타입이 결정됨)

Java 에 Python 이나 Ruby 등 특징을 더한 동적 객체 프로그래밍 언어

 

동적 스크립팅 언어기 때문에 타입을 def 로 모두 선언할 수 도 있음

String message = 'hi'
def message = 'hi'

 

참고로 Parameters 란의 booleanParam은 파이프라인에서 bool 값으로 처리안되고 String 비교만된다 

이유는 모름 

properties([
    parameters([
		booleanParam(name: 'bSync', defaultValue: true, description: '싱크하실?')
    ])
])

pipeline {
    stages { 
        stage ('Perforce Sync')
        {
            when {
                expression { bSync == "true" } // bSync == true 안됨
            }
            steps {
                script {
                    Sync_From_Perforce()
                }                
            }
        }
    }
}

bool로 사용하고싶다면 아래 예제처럼 .toBoolean() 함수사용

혹은 Boolean bUpload = (bUploadSharedFolder == 'Y') ? true : false 

 

두 방식 모두 가능

stage ('Perforce Sync') {
    steps {
        script {
            Sync_From_Perforce(bSync)
        }                
    }
}

def Sync_From_Perforce(bExecute) {
    if (bSync.toBoolean())
    {
    	...
    }
}
stage ('Perforce Sync') {
    steps {
        script {
            Sync_From_Perforce(bSync.toBoolean())
        }                
    }
}

void Sync_From_Perforce(Boolean bExecute) {
	...
}

변수 선언 시, def bExecute (def는 생략 가능) / 함수 앞의 def는 생략 불가

 

 

클래스 확인하기

def bUploadSharedFolder = "Y"
println("Class: " + bUploadSharedFolder.class)

Class: class java.lang.String

 

문자열

문자열을 표기하는 방법은 ''(작은 따옴표)""(큰 따옴표) 

' '(작은 따옴표) 단순히 문자열을 출력하는데 사용

 

" "(큰 따옴표) 문자열을 출력하는데 사용이되며, 문자열 내부에 $변수를 이용해 동적인 내용을 표시하는데에 사용할 수 있습니다.

 

여러행

만약 여러줄을 사용하고 싶다면, ''' ''' (작은 따옴표 3개로 열고 닫기) 또는 """ """(큰 따옴표 3개로 열고닫기)를 사용

bat '''
    echo  SHARE_FOLDER_DIR
    echo  ${SHARE_FOLDER_DIR}
'''
 
> SHARE_FOLDER_DIR
> ${SHARE_FOLDER_DIR}
 
 
bat """
    echo  SHARE_FOLDER_DIR
    echo  ${SHARE_FOLDER_DIR}
"""

> SHARE_FOLDER_DIR
> 실제 변수 출력 됨

그래서 쉘 스크립트나 배치 스크립트 작성할 땐 " " (큰 따옴표) 사용

 

주의 점은 주석 처리해도 배치 내부에선 주석처리 해도 젠킨스에선 읽기때문에 정의되지 않은 파라미터를 사용하면 오류 남

def PACKAGE_DIR = "String1"
def SHARE_FOLDER_DIR = "String2"
def SHARE_FOLDER_NAME = "String3"


... 생략

script{
    bat """
        xcopy ${PACKAGE_DIR}\\Windows ${SHARE_FOLDER_DIR}\\${SHARE_FOLDER_NAME} /s /y /i
        :: set PATH=%PATH%;C:/Program Files/7-Zip/
        :: 7z a "Window_Build".zip ${PACKAGE_Full_DIR} 
    """
}

// PACKAGE_Full_DIR 정의 안되어있어서 오류

 

클래스

class Student {
	int Id
	String name
	Date registerDate
}

... 생략


script {
    s = new Student(Id:1, name:"학생1", registerDate:new Date())
    println s.Id + "," + s.name + "," + s.registerDate
}

 

 

파이프라인

script {
    bat """
        if ${TARGET_PLATFORM} == Android (
            echo ===========================================
            echo Android Package Build Move
            echo ===========================================
        ) else if ${TARGET_PLATFORM} == Win64 (
            echo ===========================================
            echo Window Package Build Move
            echo ===========================================

        ) else (

        )
    """
}

if else 문 안에 내용 비어있으면 오류 (배치파일)

script{
    bat """
        xcopy ${PACKAGE_DIR}\\Windows ${SHARE_FOLDER_DIR}\\${SHARE_FOLDER_NAME} /s /y /i
        :: set PATH=%PATH%;C:/Program Files/7-Zip/
        :: 7z a "Window_Build".zip ${PACKAGE_Full_DIR}
    """
}

주석처리 되어있더라도 ${PACKAGE_Full_DIR} 정의되어있지 않다면 오류

'Jenkins' 카테고리의 다른 글

Jenkins CD (Unreal)  (0) 2023.06.05
Jenkins 팁  (0) 2023.04.01

+ Recent posts