728x90
Jenkins에서 빌드를 할 때 Git으로부터 받은 파일 중 변경된 내용이 확인할 필요가 있습니다.
Pipeline에서 어떻게 사용할지 공유합니다.
Git에서 Clone 받기
빌드할 레포지토리를 Git으로부터 받습니다.
stage('Git Clone') {
SCM_VARS = git branch: 'development', url: 'https://github.com/oofbird/repo.git'
}
SCM_VARS로 다음의 정보가 포함됩니다.
- GIT_BRANCH : 브랜치명 (origin/master 등)
- GIT_LOCAL_BRANCH : 로컬 브랜치명 (mater 등)
- GIT_COMMIT : SHA-1 커밋번호
- GIT_PREVIOUS_COMMIT : 직전 빌드 SHA-1 커밋번호
- GIT_PREVIOUS_SUCCESSFUL_COMMIT : 직전 성공한 빌드 SHA-1 커밋번호
원하는 파일 비교
git diff 명령으로 파일변경을 비교합니다.
stage('Check File change') {
def CHANGE = sh(script: "git diff ${SCM_VARS.GIT_PREVIOUS_SUCCESSFUL_COMMIT} ${SCM_VARS.GIT_COMMIT} test.txt", returnStdout: true)
script {
if (CHANGE.length() > 0) {
sh "echo 'test.txt is change'
}
}
}
지금의 커밋과 이전에 성공한 빌드의 커밋을 비교하여 test.txt 파일이 변경되었는지 확인합니다.
변경이 있을 경우 CHANGE에 git diff 명령의 출력결과가 입력됩니다.
없는 경우에는 CHANGE에 아무런 결과가 없습니다.
그래서 CHANGE.length() 로 0 이상이 될 경우 변경이 되었다 판단이 가능합니다.
전체 구성
위 두개를 합친 구성은 다음과 같습니다.
node {
def SCM_VARS
stage('Git Clone') {
SCM_VARS = git branch: 'development', url: 'https://github.com/oofbird/repo.git'
}
stage('Check File change') {
def CHANGE = sh(script: "git diff ${SCM_VARS.GIT_PREVIOUS_SUCCESSFUL_COMMIT} ${SCM_VARS.GIT_COMMIT} test.txt", returnStdout: true)
script {
if (CHANGE.length() > 0) {
sh "echo 'test.txt is change'
}
}
}
}
반응형
'Tool' 카테고리의 다른 글
[Git] Proxy 설정하기 (0) | 2022.04.07 |
---|---|
[Chrome] Mac에서 구글드라이브 한글 자소분리현상(깨짐) 해결 (5) | 2021.12.23 |
[Jenkins] pipeline에서 오늘날짜 구하기 (0) | 2021.04.13 |
[Windows] Bootloader(부팅섹터) 복구 (0) | 2021.04.08 |
[Colaboratory] 코랩으로 python 환경 구성하기 (0) | 2021.04.06 |