【问题标题】:Jenkinsfile | Multibranch Pipeline詹金斯文件 |多分支管道
【发布时间】:2020-07-14 00:28:59
【问题描述】:

下面是我的管道:-

#!groovy
String version
String awsRegion = "us-east-1"
String appName = "abcde"
String dockerFilePath = "."
def featureEnv = env.BRANCH_NAME != 'master'
String branchName = env.BRANCH_NAME
String env = (env.BRANCH_NAME == 'master') ? 'release' : 'develop'
String ecrRepo = featureEnv ? "123456789012.dkr.ecr.${awsRegion}.amazonaws.com/abcde_${env}" : "987654321098.dkr.ecr.${awsRegion}.amazonaws.com/abcde_master"
String terraformPath = "terraform/dev"
println "Feature Environment=${featureEnv}"

pipeline {
    agent none
    options {
        buildDiscarder(logRotator(numToKeepStr: '30'))
        disableConcurrentBuilds()
        timeout(time: 6, unit: 'HOURS')
        ansiColor('xterm')
    }

    stages {
        stage('version build'){
          agent { label 'linux' }
          steps {
            script {
                    version = VersionNumber(
                        versionNumberString: '1.0.${BUILD_NUMBER, X}',
                        skipFailedBuilds:    false)
                    currentBuild.displayName = version
                    println "Pipeline Version='${version}'"
              }
        }
    }
        
        stage('Build') {
            when {
                anyOf { branch 'develop'; branch 'release' }
            }
            agent { label 'linux' }
            steps {
                checkout scm
                unstash name: "${appName}-docker"
                dir(dockerFilePath) {
                     sh("""
                        while IFS= read -r line; do
                            build_args+=" --build-arg \$line"
                        done < "env_vars.txt"
                        #echo \$build_args
                        docker build -t ${ecrRepo}:${version} \$build_args --no-cache=true .
                        eval \$(aws ecr get-login --no-include-email --region ${awsRegion})
                        docker push ${ecrRepo}:${version}
                        docker rmi ${ecrRepo}:${version}
                     """)
               }
            }
        }
    }
}

我正在使用 Multibranch 管道来执行 Jenkins 作业,但对于分支 release,默认情况下采用 develop 分支,我附加了 Jenkins 的 docker build 和 docker push 输出,而不是发布 ECR repo。请提出建议。

詹金斯输出:-

+ docker build -t 123456789012.dkr.ecr.us-east-1.amazonaws.com/abcde_develop:1.0.2 --build-arg HOST=0.0.0.0 --build-arg PORT=8080 --build-arg DOMAIN=abcde --build-arg MSAL_CLIENT_ID=1234567-bd11-4d2e-add5-d78f5e59e976 --build-arg
+ docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/abcde_develop:1.0.2

【问题讨论】:

    标签: jenkins jenkins-pipeline jenkins-groovy


    【解决方案1】:

    假设您可以将此版本用于测试目的

    when {
                    expression { BRANCH_NAME ==~ /(develop|release)/ }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2019-01-09
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多