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 |