지난 글에 이어서 빌드된 이미지를 Docker Hub로 Push 해보려고 합니다.
빌드까지 정상적으로 이루어졌다면, jenkinsfile-build를 수정해주어야 합니다.
하지만 해당 글은 가이드이기 때문에 jenkinsfile-push라는 파일을 새로 생성하여 진행하겠습니다.
먼저 Docker-Hub의 인증정보를 입력해야 하기 때문에, Jenkins의 Credentials 메뉴로 이동합니다.
Jenkins->Credentials->global->Add Credentials
저는 예제로 이렇게 사용하겠습니다.
그 다음엔 이제 jenkinsfile-push를 생성해서 변경하여 줍니다.
주요 코드는 다음과 같습니다.
node {
stage('Clone repository') {
checkout scm
}
stage('Build image') {
app = docker.build("teichae/jenkins")
}
stage('Push image') {
docker.withRegistry('https://registry.hub.docker.com', 'docker-hub') {
app.push("${env.BUILD_NUMBER}")
app.push("latest")
}
}
}
#변경점
stage('Build image') {
app = docker.build("teichae/jenkins") #Push Image 단계에서 빌드번호를 붙이기 때문에 옵션 제거
}
stage('Push image') {
docker.withRegistry('https://registry.hub.docker.com', 'docker-hub') #업로드할 레지스트리 정보, Jenkins Credentials ID {
app.push("${env.BUILD_NUMBER}") #image에 빌드번호를 태그로 붙인 후 Push
app.push("latest") #image에 latest를 태그로 붙인 후 Push
}
}
}
해당 코드를 이제 Github에 업로드한 후 Pipeline Item에서 사용할 Script Path를 수정하여 줍니다.
이제 모든 설정이 완료되었습니다.
빌드를 시작합니다.
빌드 진행사항을 확인하면 요렇게 보입니다.
Docker Hub에 정상적으로 로그인 후 새로 생성한 이미지를 업로드하는 것이 확인됩니다.
이제 Docker Hub에도 확인해보면 업로드가 잘 된것이 보입니다.
7번이라는 빌드번호가 붙어서 업로드 되었고, 7번 이미지의 latest 태그를 하나 추가해서 업로드가 된 것이 확인됩니다.
Docker의 Private Repository를 통해서도 이와 같이 업로드할 수 있습니다.
Build까지의 과정을 잘 따라오신 분들이라면 충분히 여기까지 쉽게 따라오실 수 있을 것이라 생각됩니다.
이번 작업에 대한 코드는 https://github.com/teichae/jenkins를 통해 공개하고 있습니다.
궁금한 사항은 언제든 댓글 달아주시면 보는 대로 답변드리겠습니다. :)
다음은 AWS ECR에 Image를 Push 하는 방법에 대해 가이드해보도록 하겠습니다.
감사합니다.