[Jenkins] Docker + Jenkins + SVN Pipeline 구축
도커 컨테이너에 젠킨스를 띄워놓고 SVN과 연결해 파이프라인을 구축해보자.
1. 도커 작업
docker pull jenkins/jenkins:latest
docker container run -d -p 8092:8080 -v jenkins-data:var/jenkins_home —name jenkins-container jenkins/jenkins
젠킨스 이미지를 받아와서 컨테이너를 실행하자.
이 때 도커 볼륨을 추가해야 젠킨스 (컨테이너) 내부에서 플러그인들을 설치할 수 있고, 컨테이너를 삭제하더라도 데이터를 보존할 수 있다.
2. 필요한 플러그인 설치
추천하는 플러그인은 모두 설치하고 추가로 SVN, pmd, maven 플러그인을 설치해주자.
3. SVN 계정 추가
연동할 SVN의 권한을 가진 계정을 추가해주자.
credentials를 검색해서 추가해도 좋고 새로운 item 추가에서 Freestyle project를 구성하면서 함께 추가해도 좋다.
4. 컨테이너 내부에 maven 설치
빌드 도구로는 maven을 사용한다. 컨테이너 내부에 maven을 설치해야 젠킨스가 빌드 작업을 수행할 수 있다.
docker exec —user=’root’ -it jenkins-container /bin/bash
apt-get update
apt-get install -y maven
관리자 권한으로 수행해야 설치할 수 있으니 CLI 환경에서 위의 명령어를 통해 설치를 진행하자.
이후 mvn --version을 통해 설치가 완료됐음을 확인할 수 있다.
5. Pipeline 구축
새로운 item -> pipeline 을 통해 새로운 파이프라인을 구축하자.
pipeline {
agent any
stages {
stage('Checkout') {
steps {
checkout([$class: 'SubversionSCM',
locations: [[
credentialsId: '61qwe-2ccxz28-450f-a7b2-b98ae1308978',
remote: 'svn://..'
]],
workspaceUpdater: [$class: 'UpdateUpdater']])
}
}
stage('Build') {
steps {
dir('...') {
sh 'mvn clean install'
}
}
}
stage('PMD') {
steps {
dir('...') {
sh 'mvn pmd:pmd'
}
// sh 'mvn pmd:pmd'
}
}
stage('Unit Test') {
steps {
dir('...') {
sh 'mvn test'
}
// sh 'mvn test'
}
}
}
}
Pipeline script를 위와 같이 작성하자.
이전에 등록해 둔 아이디를 통해 svn에 접근하고, 해당 위치에 pom.xml 파일이 없으면 빌드할 수 없으니 dir을 사용해 pom.xml이 위치한 디렉토리를 지정해 줘야 한다.
젠킨스의 트리거가 발동하면 빌드 - PMD - Unit Test 를 과정을 거치도록 설계했다.
Pipeline script를 적절히 작성하면 main 브런치로 병합하거나 서버로 변경 내역을 다시 배포하는 등 여러 가지 추가 작업을 수행할 수 있다.
제대로 작성했다면 위와 같이 모든 테스트가 통과함을 확인할 수 있다.
svn에 커밋되거나 특정 시간에 도달함을 트리거로 설정하고 트리거 발동 시 어떤 작업을 수행할 지는 pipeline script로 적절하게 표현해 젠킨스를 활용하자.
'DevOps > Jenkins' 카테고리의 다른 글
[Jenkins] Pipeline Script (0) | 2023.03.22 |
---|---|
[Jenkins] CI와 젠킨스 (0) | 2023.03.22 |
[Jenkins] SVN과 Jenkins 연결 (0) | 2023.03.20 |
댓글
이 글 공유하기
다른 글
-
[Jenkins] Pipeline Script
[Jenkins] Pipeline Script
2023.03.22 -
[Jenkins] CI와 젠킨스
[Jenkins] CI와 젠킨스
2023.03.22 -
[Jenkins] SVN과 Jenkins 연결
[Jenkins] SVN과 Jenkins 연결
2023.03.20