And Brain said,
CI/CD Argonautica - Jenkins, 선장 본문
반응형
CI/CD Argonautica
Docker, 선박
Kubernetes, 조타수 Harbor, 항구
Helm, 타륜
Istio, 돛
Jenkins, 선장
ArgoCD, 출항
1장/ Loki, Trickster
Troubleshooting
열심히 출항 준비를 했더니, 저 멀리 느긋하게 선장이 오는 것이 보입니다. 그래도 그는 베테랑 선장답게 도착하자마자, 배의 상태를 여유있으면서도 빠지는 부분없이 점검하기 시작합니다.
먼저, 배가 다시 선착장에 올 때 통행증이 필요하겠지요. Harbor의 접속 정보가 담긴 Jenkins Credential을 만들어줍니다.
젠킨스 관리 -> Credentials -> Add credentials -> Username with password
Credential을 만들어 준 뒤 New Item -> Pipeline을 만들어줍니다.
다음은 배에 수하물들을 싣고 점검해야겠지요. 소스들을 클론 후 빌드하고 컨테이너에 넣어줍시다. 이것이 다음 스크립트에 관한 설명입니다.
pipeline {
agent any
environment{
registry = "localhost:80"
repository = "$registry/msa/${SERVICE_NAME}"
registryCredential = 'harbor_credentials'
}
stages{
stage("Service"){
stages {
stage('CLONE') {
steps {
dir("${SERVICE_NAME}") {
echo 'Clone'
git branch: 'master', credentialsId: 'your-credentials', url: "https://github.com/your-repo"
}
}
}
stage('CLEAN & BUILD') {
steps {
script {
dir("${SERVICE_NAME}") {
sh "chmod +x /var/jenkins_home/workspace/MSA-Pipeline/${SERVICE_NAME}/gradlew"
sh "./gradlew clean"
sh "./gradlew bootjar"
}
}
}
}
stage('DOCKER-REGISTRY PUSH') {
steps {
script {
docker.withRegistry("https://$registry", "$registryCredential") {
dir("${SERVICE_NAME}") {
def previousImageExists = sh(script: "docker pull $repository:latest", returnStatus: true) == 0
if (previousImageExists) {
sh "docker tag $repository:latest $repository:previous"
docker.image("$repository:previous").push()
} else {
echo 'No previous image found. Skipping tagging and pushing.'
}
sh "docker build --no-cache -t $repository:latest -f Dockerfile.${SERVICE_NAME} ."
docker.image("$repository:latest").push()
}
}
}
}
}
}
}
}
}
이 스크립트는 Spring boot를 위한 프로젝트입니다. 항상 최신 이미지 상태를 유지하기 위해 Docker는 캐시없이 빌드합니다. 참고하셔서 여러분들의 작업으로 만들어보세요!
* SERVICE_NAME은 Choice Parameter로 넘길 수 있습니다.
이제 선장이 모든 준비를 마치고 출항을 명령합니다.
자, 여기까지 오시느라 정말 수고많으셨습니다. 다음 시간은 'ArgoCD, 출항' 편입니다.
Thanks for watching, Have a nice day.
반응형
'IT > CICD Argonautica' 카테고리의 다른 글
CI/CD Argonautica - 1장/ Loki, Trickster (0) | 2023.10.04 |
---|---|
CI/CD Argonautica - ArgoCD, 출항 (0) | 2023.09.26 |
CI/CD Argonautica - Troubleshooting (0) | 2023.09.14 |
CI/CD Argonautica - Istio, 돛 (0) | 2023.09.14 |
CI/CD Argonautica - Helm, 타륜 (0) | 2023.09.12 |
Comments