ㅡ.ㅡ

[Jenkins] Docker Image Tagging 본문

WorkFlow

[Jenkins] Docker Image Tagging

ekwkqk12 2021. 10. 11. 03:11

Gitlat Repo Jenkinsfile 수정
Argocd에서 사용되는 Helm Repo에 저장된 이미지의 태그 값을 업데이트하여 ArgoCD에서 변경 사항을 감지하게하는 과정이다.

  1. Clone repository
    push된 저장소를 불러오는 과정으로 JenkinsAgent로 저장소의 파일들을 복사한다.
    또한 이미지의 태그값으로 사용할 COMMIT_ID_SHORT값을 추출한다.
  2. Image Tag Update
    기존에 불러온 APP의 저장소를 삭제하고 Gitlab credentials을 사용해 Helm저장소를 불러온다.
    Clone repository Stage에서 values.yaml파일에 저장된 tag값을 추출한 COMMIT_ID_SHORT 값으로 변경 후 push를한다.

Gitlab credentials의 비밀번호 값에 $가 들어가있었더니 해당 값으로부터 뒤의 문자열은 다잘려나가는 오류가 있었다(인증실패). 해당 버전 문제인지.. 구문 분석이 안되는거 일수도있을것같다.

Jenkinsfile

pipeline {
    agent any
    environment {
        dockerImage = ""
        GITLAB_URL = "http or https를 제외한 Gitlab 주소"
        ECR_URL = "https를 제외한 ECR 주소"
    }
    stages {
        stage("Clone repository") {
            steps {
                checkout scm
                script {
                    env.GIT_COMMIT_SHORT = env.GIT_COMMIT.take(8)
                }
            }
        }
        stage("Image Tag Update") {
            steps {
                checkout([$class: 'GitSCM', 
                    branches: [[name: '*/main']],
                    extensions: [[
                        $class: "CleanBeforeCheckout",
                        deleteUntrackedNestedRepositories: true
                    ]],
                    userRemoteConfigs: [[
                        credentialsId: "Gitlab credentials(계정)",
                        url: "http://${env.GITLAB_URL}/helm/springboot.git"
                    ]]
                ])
                script {
                    sh "sed -i 's|tag: .*|tag: ${env.GIT_COMMIT_SHORT}|' values파일"
                    sh "git config --global user.name 계정"
                    sh "git config --global user.email 이메일"
                    withCredentials([usernamePassword(credentialsId: 'Gitlab credentials(계정)', usernameVariable: 'USERNAME', passwordVariable:'PASSWORD')]) {
                        sh "git add ."
                        sh "git commit -m 'Ref ${env.gitlabSourceNamespace}/${env.gitlabSourceRepoName}@${env.GIT_COMMIT_SHORT}'"
                        sh "git push http://${USERNAME}:${PASSWORD}@${env.GITLAB_URL}/helm/springboot HEAD:main"
                    }
                }
            }
        }
    }
}

)

'WorkFlow' 카테고리의 다른 글

[Jenkins] CI/ECR  (0) 2021.10.09
[Gitlab] CD/Argocd  (0) 2021.10.01
[Argocd] Argocd, Argo-Rollouts  (0) 2021.09.29
[Jenkins] Gitlab Repo 연동  (0) 2021.09.28
[Jenkins] Jenkins  (0) 2021.09.26