Tool
[Jenkins] Git 파일 변경확인
까레까레
2021. 4. 13. 01:44
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'
}
}
}
}
반응형