- 이 포스팅에서는 스프링 부트 프로젝트를 jenkins를 통해 build 하여 docker로 build 및 Docker Hub에 push 하는 과정을 담았습니다.
- job에서 build 작업 완료 시 docker로 build 및 push 하는 파이프라인을 구성했습니다.
- 이 전 포스팅을 과정을 전제로 합니다.
- https://velog.io/@imsooyeon/Jenkins-프로젝트Job-생성-및-자동-배포-구성하기
- jenkins가 설치된 환경에 docker도 설치돼 있어야 합니다.
- https://velog.io/@imsooyeon/Docker-설치-가이드
- 2022.08.31 (수정) DockerFile 작성하는 부분이 빠져서 수정했습니다.
Dashboard
> Jenkins 관리
> 플러그인 관리
> 설치 가능
> docker pipeline 검색 후 설치 > 설치가 끝나고 실행중인 작업이 없으면 Jenkins 재시작
을 체크하면 jenkins가 재시작 된다.Account Settings
클릭 > Security
> New Access Tokens
클릭 > Access Token Description
입력 (원하는 이름으로 입력하면 된다.) > Generate
클릭 > token 복사Jenkins 관리
> Manage Credentials
> Add Credentials
선택Username
: Docker hub id 입력Password
: Docker hub token 입력ID
: 원하는 credetial 이름 지정Dashboard
> 새로운 item
> Pipeline
선택 후 이름 입력 > ok
Build Triggers
에서 Build after other projects are built
선택 > Projects to watch
에 파이프라인과 연결할 project 이름을 입력 > Trigger only if build is stable
선택Pipeline
에는 Pipline script를 작성한다.script 작성법과 문법은 나중에 더 자세히 다루도록 하겠습니다.
pipeline {
environment {
repository = "sue/jenkins" //docker hub id와 repository 이름
DOCKERHUB_CREDENTIALS = credentials('sue-dockerhub') // jenkins에 등록해 놓은 docker hub credentials 이름
dockerImage = ''
}
agent any
stages {
stage('Building our image') {
steps {
script {
sh "cp /var/lib/jenkins/workspace/sue_jenkins_project/build/libs/sue-member-0.0.1-SNAPSHOT.war /var/lib/jenkins/workspace/pipeline/" // war 파일을 현재 위치로 복사
dockerImage = docker.build repository + ":$BUILD_NUMBER"
}
}
}
stage('Login'){
steps{
sh 'echo $DOCKERHUB_CREDENTIALS_PSW | docker login -u $DOCKERHUB_CREDENTIALS_USR --password-stdin' // docker hub 로그인
}
}
stage('Deploy our image') {
steps {
script {
sh 'docker push $repository:$BUILD_NUMBER' //docker push
}
}
}
stage('Cleaning up') {
steps {
sh "docker rmi $repository:$BUILD_NUMBER" // docker image 제거
}
}
}
}
저장
을 누르고 빠져나온다.$ sudo vi /var/lib/jenkins/workspace/pipeline/Dockerfile
FROM openjdk:8-jre-slim
WORKDIR /app
COPY ./sue-member-0.0.1-SNAPSHOT.war .
ENTRYPOINT ["java","-jar","-Dserver.port=8080","sue-member-0.0.1-SNAPSHOT.war"]
스프링부트 프로젝트를 build하는 job 실행 후 작업 완료 시 docker pipeline이 작업되는 것을 확인할 수 있다.
스프링부트 프로젝트 build 시작
스프링부트 프로젝트 완료 후 docker pipeline build 시작
docker pipeline 콘솔 로그
질문이 있거나 부족한 점이 있으면 댓글 남겨 주시길 바랍니다. 감사합니다. 🙂
pipeline 스크립트에서, $DOCKERHUB_CREDENTIALS_PSW나 $BUILD_NUMBER와 같은 변수는 어디에서 정의하는거죠?