젠킨스를 이용하여 간단한 파이프라인을 구성했다.
이번 포스트에서 진행할 파이프라인은 github 레포지토리에 커밋트리거가 발생하면 젠킨스로 웹 훅을 보내 알리고 젠킨스가 자동으로 체크아웃, 빌드, 이미지 빌드, 도커 허브에 푸시까지 진행하는 파이프라인입니다.
저는 NCP로 Ubuntu 18.04를 제공받아 사용했다.
먼저 네이버 클라우드 서버에 접속한다.
ssh root@ip주소
네이버 클라우드 키를 이용하여 관리자 비밀번호를 확인하고 ssh로 접속해준다.
젠킨스는 도커 이미지를 통하여 설치하였다.
먼저 ubuntu에 도커를 설치해야 한다.
필요한 패키지 설치
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
도커 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
도커 공식 apt 저장소 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
도커 설치
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
위의 과정으로 도커를 설치하였다.
도커허브에 젠킨스의 공식이미지 jenkins/jenkins가 있기 때문에 해당 이미지를 내려받아 사용할 것이다.
docker pull jenkins/jenkins
docker run -d -p 8080:8080 --name jenkins
-v /var/run/docker.sock:/var/run/docker.sock
-v /var/jenkins_home:/var/jenkins_home
-u root jenkins/jenkins
하나하나 살펴보면
-d : 도커 컨테이너를 데몬으로 실행한다. (백그라운드 실행)
-p : 도커 컨테이너를 <호스트포트>:<컨테이너포트> 로 매핑한다.
-v : 컨테이너 내부의 폴더, 파일과 마운트 한다.
- <호스트 디렉토리>:<컨테이너 내부 디렉토리>
- 위의 docker.sock은 docker out of docker 방법으로 컨테이너 내부에서 도커를 사용하기 위함이다.
- jenkins_home은 젠킨스의 컨테이너 내부 폴더를 외부 호스트 폴더와 매핑하기 위해 사용했다.
- user의 옵션을 root 권한으로 올린다. (권한문제 방지)
Docker out of Docker 방법은 다음 포스트에서 다루겠습니다.
docker logs jenkins
젠킨스의 로그를 확인하여 젠킨스 비밀번호를 복사하고 localhost:8080으로 접속하여 비밀번호 입력 후 플러그인 설치, 회원가입을 진행한다.
젠킨스 파이프라인 생성
좌측 상단의 새로운 아이템을 클릭한다.
이름을 입력하고 pipeline을 선택한다.
다음 페이지에서 GitHub Repository를 체크하고 자신의 깃헙 레포지토리 주소를 입력해준다.
그리고 GitHub hook trigger for GITScm polling을 체크해준다.
이제 여기서 젠킨스 파이프라인 구문을 통하여 진행을 하면되고 자바로 예를들어서 작성해보겠다.
pipeline{
agent any
stages{
stage("checkout"){
steps{
git url: "github repository clone url",
branch: 'main'
}
}
stage("spring boot build"){
steps{
sh './gradlew clean build'
}
}
stage("docker build"){
steps{
sh 'docker build -t name/project_name .'
}
}
stage("docker hub push"){
steps{
sh 'docker push name/project_name'
}
}
}
}
docker hub에 로그인을 미리 해주어야 한다.
이렇게 파이프라인 구문을 작성해주면 된다.
깃 웹훅 보내기
깃허브 셋팅에 들어가서 가장 밑에 보이는 Developer settings로 가서 토큰을 발급받아야 한다.
Generate new token , classic으로 받아준다.
repo를 모두 체크하고 토큰 이름, 만료기간을 설정한다.
여기서 발급한 토큰은 다시 확인할 수 없기 때문에 안전한곳에 보관한다.
젠킨스로 돌아와서 젠킨스 관리 탭으로 들어간다.
security의 Credentials로 들어가서 Domains의 Global을 클릭한다.
Add Credentials를 클릭한다.
깃헙 이름과 Password에는 방금 발급받은 깃헙 토큰을 입력하고
ID에는 파이프라인 이름을 넣어주도록 하자.
마지막으로 Web hook을 날리고자 하는 레퍼지토리로 가서 셋팅에 Web Hook탭으로 들어간다.
새로운 웹 훅을 만들고
페이로드 URL에 http://hostname:port/github-webhook/
을 입력하여 주면 깃에 푸시가 되었을 때 젠킨스로 웹 훅이 날라가게 된다.
결과
다음 포스트에서 Docker Container 내부에서 도커를 사용하는 방법에 대해서 설명하겠습니다.
'데브옵스' 카테고리의 다른 글
[Jenkins] 젠킨스 빌드할 때 필요한 파일 미리 넣어두기 (0) | 2024.02.17 |
---|---|
[Jenkins] Jenkinsfile을 통해서 파이프라인 실행 (0) | 2024.02.16 |
윈도우에 우분투 설치 (1) | 2024.02.15 |
[NCP] NCP 쿠버네티스 클러스터 사용법 (1) | 2023.11.13 |
컨테이너 내부에서 도커 명령어를 사용하는 방법 (0) | 2023.11.04 |