728x90
(1) configure & Jenkinsfile
(2) Pipeline & lint
(3) Docker Image ECR에 Push
[Jenkins] Pipeline 구성 (3) Docker Image ECR에 Push
저번 포스팅에서 파이프라인을 생성하고, 파이썬 라이브러리를 이용한 정적 분석까지 빌드를 완료했다.
이제 도커 이미지를 빌드하고 ECR에 Push하는 과정을 진행해보자
Jenkins의 Amazon ECR plugin의 자료에서 파이프라인의 사용법이 나와있다.
https://plugins.jenkins.io/amazon-ecr/
Docker Image를 빌드하고 Push하기 위해서 권한이 필요하다.
ECR URL과 앞선 포스팅에서 생성했던 credentials ID를 입력해주면 되는데, 기억이 안난다면
Jenkins 관리 -> Credentials 에서 생성한 걸 확인할 수 있다.
⚠ credentials ID에 공백이 들어가면 인식을 못하는 것 같다.
app = docker.build("<ECR URL>")
docker.withRegistry('<ECR URL>', 'ecr:ap-northeast-2:<credentials ID>')
파이프라인을 작성해보자
node {
stage('lint') {
withPythonEnv('python3'){
sh 'if [ -f requirements.txt ]; then pip install -r requirements.txt; fi'
sh 'pip install flake8'
sh 'python3 -m flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics'
sh 'python3 -m flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics'
}
}
stage('Clone repository') {
checkout scm
}
stage('Build image') {
app = docker.build("<ECR URL>/<repo name>")
}
stage('Push image') {
docker.withRegistry('https://<ECR URL>', 'ecr:ap-northeast-2:<Credetials ID>) {
app.push("${env.BUILD_NUMBER}")
app.push("latest")
}
}
}
만약 Docker인증 문제가 발생한다면 docker 명령을 실행하기 전
docker 구성 파일을 제거하는 명령어를 추가해준다
stage('Push image') {
sh 'rm -f ~/.dockercfg ~/.docker/config.json || true'
docker.withRegistry('https://<ECR URL>', 'ecr:ap-northeast-2:<Credetials ID>) {
app.push("${env.BUILD_NUMBER}")
app.push("latest")
}
Jenkinsfile을 작성한 후 Push 해주면 자동으로 빌드가 시작된다.
ECR에 가서 이미지가 잘 Push 됐는지 확인해보자
Docker pipeline 플러그인과 ECR 플러그인을 사용하여 간단하게 이미지를 빌드하고 푸쉬할 수 있다.
참조
반응형
'💽 CICD > Jenkins' 카테고리의 다른 글
[Jenkins] Execute Shell 사용하기 (0) | 2023.10.26 |
---|---|
[Jenkins] Pipeline 구성 (2) Pipeline & lint (0) | 2023.08.03 |
[Jenkins] Pipeline 구성 (1) configure & Jenkinsfile (0) | 2023.08.02 |
[Jenkins] 관리자(admin) 암호 재설정 (0) | 2023.08.01 |
[Jenkins] 우분투(Ubuntu) 22.04에 젠킨스 설치 (0) | 2023.07.26 |