我在Docker环境中使用Jenkins for CI-CD . 我根据环境有3个环境和分支 . 说, develop , qa , prod .
我正在使用Jenkins管道来构建并将图像推送到DTR .
我只想检查如何在jenkinsfile中获取分支名称,以便我可以在分支名称的基础上使用条件来推送依赖于分支名称的Docker镜像,如:
if(env.BRANCH_NAME==develop){
下面是我的Jenkinsfile:
pipeline {
agent {
label "master"
}
stages {
stage('Build') {
steps {
echo '..........................Building Jar..........................'
echo 'Pulling................................................' + env.BRANCH_NAME
sh 'npm install'
}
}
stage('Build-Image') {
steps {
echo '..........................Building Image..........................'
sh 'sudo docker build -t some_org_dev/some_repo:v0.1 --build-arg PORT=9007 --build-arg ENVIRONMENT=develop .'
}
}
stage('Tag-Image') {
steps {
if(env.BRANCH_NAME==develop){
echo '..........................Taging Image..........................'
sh 'sudo docker login some_org_dev/some_repo -u username -p password'
sh 'sudo docker tag some_org_dev/some_repo:v0.1 some_org/some_repo/service-portal:v0.1'
}else if(env.BRANCH_NAME==qa){
echo '..........................Taging Image..........................'
sh 'sudo docker login some_org_qa/some_repo -u username -p password'
sh 'sudo docker tag some_org_qa/some_repo:v0.1 some_org/some_repo/service-portal:v0.1'
}
}
stage('Push-Image') {
steps {
if(env.BRANCH_NAME==develop){
echo '..........................Pushing Image..........................'
sh 'sudo docker push some_org_dev/some_repo:v0.1 some_org/some_repo/service-portal:v0.1'
}
}else if(env.BRANCH_NAME==qa){
echo '..........................Pushing Image..........................'
sh 'sudo docker push some_org_qa/some_repo:v0.1 some_org/some_repo/service-portal:v0.1'
}
}
}
}
2 回答
在multibranch-pipeline上,我使用如下内容:
如果你不使用multibranch,你可能需要使用
sh 'env'
.我相信你缺少引号,错误是你得到一个未定义的变量吗?尝试: