pipeline {
agent any
environment {
dockerImage = ""
appRepoUrl = ""
manifestRepoUrl = ""
ecrUrl = ""
}
parameters {
gitParameter name: 'TAG',
type: 'PT_TAG',
defaultValue: 'v1.0.0'
}
stages {
stage("checkout app code") {
steps {
checkout(
[$class: 'GitSCM',
branches: [[name: "${params.TAG}"]],
extensions: [],
userRemoteConfigs: [[credentialsId: 'GitHub', url: "https://${appRepoUrl}"]]])
}
}
stage("build") {
steps {
script {
dockerImage = docker.build(ecrUrl)
}
}
}
stage("push to ecr") {
steps {
script {
sh 'rm ~/.dockercfg || true'
sh 'rm ~/.docker/config.json || true'
docker.withRegistry("https://${env.ecrUrl}", 'ecr:ap-northeast-2:ECR') {
dockerImage.push("${params.TAG}")
dockerImage.push('latest')
}
}
}
}
stage("update k8s manifest") {
steps {
deleteDir()
checkout(
[$class: 'GitSCM',
branches: [[name: '*/main']],
extensions: [],
userRemoteConfigs: [[credentialsId: 'GitHub', url: "https://${manifestRepoUrl}"]]])
script {
sh "kustomize edit set image nginx=${env.ecrUrl}:${params.TAG}"
sh "git config user.name jenkins"
sh "git config user.email [email protected]"
withCredentials([usernameColonPassword(credentialsId: 'GitHub', variable: 'USERPASS')]) {
sh "git add . && git commit -m 'update image' && git push https://$USERPASS@${env.manifestRepoUrl} HEAD:main || true"
}
}
}
}
}
}