티스토리 뷰
Plugin Install
- 좌측에 Jenkins 관리 클릭
- System Configuration > 플러그인 관리 클릭
- 좌측 Avaulable plugins 클릭 후 검색창에 Docker API Plugin 타이핑
- checkbox 클릭 후 설치 진행
Docker Pipeline CLI
Credentials
일반적으로 Docker Pipeline CLI 를 쓰는 이유는 사내 docker registry 혹은 docker hub 에 이미지를 푸시하기 위해 사용된다. 그렇기에 해당 registry에 접근하기 위한 username & password 등록이 필요하다.
구성을 보면
- Username
- Password
- ID
이렇게 존재하며 여기서 Username은 레지스트리 아이디, Password 는 레지스트리 비밀번호, ID는 젠킨스에서 사용할 키 이다.
키 등록 방법
- Manage Credentials
- System -> Global credentials <Default 일 경우> -> 우측에 Add Credentials 클릭 -> Kind ( Username with password) 설정 후 위에서 말한 Username, Password, ID 등록
pipeline
stage('docker registry access') {
steps {
script {
docker.withRegistry("<DOMAIN>","<YOUR_CREDENTIALS_ID>") { // -- 1
def dockerImage = docker.build("<DOMAIN>/<REPOSITORY>/<IMAGE_NAME>:<TAG>", " .") // -- 2
dockerImage.push() // -- 3
}
}
}
}
- withRegistry
docker registry 접근하기 위해서는 로그인이 필요한 상황인데 이를 도와주는 인터페이스이다.
위에서 등록한 로그인하고자 하는 레지스트리 도메인은 좌측에, credentialsId 를 우측에 작성하면 된다.
- docker.build("image 관련 정보 (이미지이름, 태그, 레지스트리 도메인, 레포지토리)", "빌드 시 추가적인 arg 명령어를 작성할 수 있는 곳")
대략적으로 다시 설명하자면 좌측에는 이미지 이름과 태그 등 어떻게 등록할 것인가에 대한 내용을, 우측에는 추가적인 명령어를 작성하고자 했을 때 사용하면 된다.
- dockerImage.push()
build를 하게 되면 이미지 객체를 가지게 되는데 이에 대한 내용을 레지스트리에 등록하는 명령어이다.
여기서 push 안에 force 파라미터에 대한 boolean 값을 설정할 수 있는데 이는 제대로 동작하지 않는 것 같다. 기본적으로 force = true 이며 false 로 진행해도 true로 동작한다.
그래서 만일 force = true 의 동작을 미리 하고 싶다면 다음과 같이 구현하면 될 것 같다.
validation
stage('validate') {
steps {
script {
docker.withRegistry('<DOMAIN>','<YOUR_CREDENTIALS_ID>') {
def valid = false
try {
sh "docker pull <IMAGE>:<TAG>"
} catch(Exception e) {
valid = true
}
if (!valid) {
error("already ${IMAGE}:${TAG} exists")
}
}
}
}
}
원리는 간단하다. 푸쉬하고자 하는 image 와 tag 를 미리 레지스트리에 pull하여 해당 이미지 존재 유무를 판단하고 이에 대해서 error를 일으킬 것인지 아니면 그래도 동작하게 할 것인지 돌아가게 하면 된다.
'JVM > Jenkins' 카테고리의 다른 글
[Jenkins Pipeline] Environment Setting (0) | 2023.05.07 |
---|
- Total
- Today
- Yesterday
- 파이썬
- env
- setattr
- BFS
- docker-compose
- thread
- 백준
- Command Line
- Pattern
- Collections
- Python
- 카카오
- DRF
- ubuntu
- postgres
- headers
- 그래프
- dockerignore
- Celery
- 2021 KAKAO BLIND RECRUITMENT
- Spring
- django
- Linux
- 알고리즘
- PostgreSQL
- docker
- 자바
- 면접
- 프로그래머스
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |