멀티브랜치 파이프라인은 사용자 소스코드 저장소의 모든 브랜치에 대해 파이프라인을 자동으로 생성하게 해준다.
멀티브랜치 파이프라인은 Jenkinsfile을 통해 동작하고, 이 파일은 소스코드와 함께 버전 관리 저장소에 들어간다.
*jenkinsfile은 CI 파이프라인을 정의하는 파이프라인 스크립트다.
아래는 연동이 정상적으로 이루어진 상황이다.
이 내용은 2018년 책과는 상당히 거리가 있어 아래 참고 블로그를 바탕으로 진행했다. 깃허브 연동을 위해 여러가지를 동시에 시도해보니 중간 과정 스크린샷이 없어 아쉽다..
참고 블로그: Jenkins와 Github 연동하기
목표: 멀티브랜치 파이프라인과 연동되는 깃허브 저장소를 만들자!
node ('master') {
checkout scm
stage('Build') {
withMaven(maven: 'M3') {
if (isUnix()) {
sh 'mvn -Dmaven.test.failure.ignore clean package'
}
else {
bat 'mvn -Dmaven.test.failure.ignore clean package'
}
}
stage('Results') {
junit '**/target/surefire-reports/TEST-*.xml'
archive 'target/*.jar'
}
}
}
목표: 새로운 젠킨스 파이프라인 잡을 만든다!
1. 젠킨스 대시보드에서 새로운 Item 링크를 클릭한다.
2. 다양한 젠킨스 잡 중에서 Multibranch Pipeline을 선택하고, Enter and item name 영역에 파이프라인 이름을 작성한 후 페이지 하단의 OK 버튼을 틀릭한다.
3. 이동한 페이지에서 Branch Sources 섹션으로 스크롤을 내린다.
4. Add Source 버튼을 클릭한 후 Github을 선택한다. 다양한 영역의 설정을 입력한다.
이후 책에는 Webhooks 재등록을 하라고 나와있지만 나는 Webhooks를 따로 등록하지 않았을 뿐더러 최신 젠킨스에서는 Webhooks에 필요한 Github 섹션의 Advanced 버튼이 없는 것으로 보아 자동으로 이루어진다고 판단해 다음 단계를 진행하였다!
목표: mast branch에서 feature branch를 새로 만들어 젠킨스가 파이프라인으 실행시키는지 알아보자.
1. 깃허브 계정에 로그인 후 앞에서 만든 깃허브 저장소로 이동한다.
2. feature branch를 생성한다.
3. 새로 만든 feature branch에 대한 젠킨스 파이프라인이 즉시 실행되는지 확인한다.
feature branch에 대한 젠킨스 파이프라인이 실행되고 있음이 확인되었다!!
젠킨스 블루오션이란?
젠킨스를 다루는 완전히 새로운 방식이다. 젠킨스 주요 애플리케이션에 대한 UI 보조기능에 가깝다.
젠킨스 블루오션의 새 기능
- 향상된 시각화
- 파이프라인 에디터
- 개인화
- Git과 GitHub를 위한 쉽고 빠른 파이프라인 설정 마법사
목표: 앞에서 생성한 기존에 존재하는 젠킨스 파이프라인을 시각화해보자.
젠킨스 대시보드에서 새로 생겨난 Open Blue Ocean 메뉴를 클릭한다.
Blue Ocean 대시보드는 다음과 같다.
여기서 이전에 생성한 multibranch-pipeline-demo 파이프라인을 클릭한다. 이동한 화면의 내용은 다음과 같다.
각각의 빌드 버튼을 클릭하면 다음 화면과 같이 해당 파이프라인의 빌드 페이지로 이동한다.
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
해당 설정을 추가하지 않으면 다음과 같은 오류가 발생하기 때문이다.
"Error "Source option 5 is no longer supported. Use 6 or later" on Maven compile"
2. 저장소에 Jenkinsfile을 생성하고, 다음 코드를 입력한다.
pipeline {
agent {
node {
label 'built-in'
}
}
stages {
stage('Build') {
steps {
withMaven(maven: 'M3') {
sh 'mvn clean install'
}
}
}
stage('Results') {
steps {
junit '**/target/surefire-reports/TEST-*.xml'
archiveArtifacts 'target/*.jar'
}
}
}
}