我在docker环境中使用Jenkins for CI-CD。 我有3个环境,并根据环境有分支。 说,开发,质量检查,产品。
我正在使用Jenkins管道来构建图像并将其推送到DTR。
我只想检查如何在jenkinsfile中获取分支名称,以便我可以根据分支名称设置条件,以便根据分支名称来推送Docker映像,例如:
if(env.BRANCH_NAME==develop){
下面是我的Jenkins文件:
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'
}
}
}
}
答案 0 :(得分:1)
我相信您缺少引号,是您得到未定义的var错误吗? 试试:
if (env.BRANCH_NAME== 'develop') {\\code here}
答案 1 :(得分:0)
在多分支管道上,我使用的是以下内容:
pipeline {
agent { label "jenkins" }
stages {
stage("A Stage") {
when {
expression { GIT_BRANCH ==~ /(develop)/ }
}
steps {
sh 'deploy'
}
}
}
}
如果您不使用多分支,则可能需要使用sh 'env'
来查找。