【问题标题】:Set and reference variables in Jenkins Scripted Pipeline across Stages在 Jenkins Scripted Pipeline 中跨阶段设置和引用变量
【发布时间】:2018-12-14 19:11:01
【问题描述】:

我正在尝试通过使用 withEnv 设置变量(GIT_ORG)并稍后在 Checkout Stage 中引用来确定 Github 组织,但无法做到这一点,我正在使用 Jenkins Scripted Pipeline 与“节点”和多个“阶段” (s)。当前作业在克隆 Git 存储库时失败,因为结帐时没有有效的 ${GIT_ORG}。 我还想跨阶段使用 withEnv 变量,不知道该怎么做。任何帮助表示赞赏。谢谢!

  stage( 'Checkout - TIBCO BW') {
    sh '/app/aims/scripts/folder.sh'
      sh 'echo "Checkout TIBCO BW CODE"'
   if (env.MDM_BW == 'true') {
         withEnv(["GIT_ORG=Enterprise-MDM"]){
         echo env.GIT_ORG
        }
    } else {
        withEnv(["GIT_ORG=Enterprise-Integrations"]){
        echo $GIT_ORG
        }
    }                    
    checkout([$class: 'GitSCM', 
        branches: [[name: '$GIT_CODE_TAG']], 
        doGenerateSubmoduleConfigurations: false, 
        extensions: [[$class: 'RelativeTargetDirectory', 
        relativeTargetDir: '${TIBCO_EARNAME}/code']], 
        submoduleCfg: [], 
        userRemoteConfigs: [[credentialsId: 'GIT_USER', url: 'git@github.company.com:${GIT_ORG}/${TIBCO_EARNAME}.git']]])
        //workspaceUpdater: [$class: 'UpdateUpdater']])
  }

【问题讨论】:

    标签: jenkins environment-variables jenkins-pipeline


    【解决方案1】:

    试试下面的脚本:

    if (env.MDM_BW == 'true') {
            environment{
                GIT_ORG=Enterprise-MDM
               }
        } else {
            environment{
                GIT_ORG=Enterprise-Integrations
               }
    } 
    

    【讨论】:

    • 谢谢,@Amit。我试过了,还是不行。同一阶段的结帐具有从 Git 克隆的代码,这是我想引用 GIT_ORG 变量的地方。您能否建议如何引用在 IF 循环中初始化的变量。再次感谢您的帮助!
    • 如果它不必分配给环境,你可以在阶段之外定义一个全局变量,然后在你的 if 语句中设置它。
    • 是的,我不想要环境变量,但我将如何在脚本管道的后续阶段引用全局变量。抱歉,我真的不是 Devops 人,只是想帮助其中一个。
    猜你喜欢
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多