2017-06-06 20 views
0

我想从我的Jenkinsfile中的两个不同的回购拉特定标签。标签是通过从相关管道获取最新的成功构建并使用这些值确定要签出哪个标记来确定的。然而,由于SCM没有替换我添加的withEnv变量,所以我遇到了问题。在下面的代码,你可以看到我呼应了应该是什么标签(这回声正常工作),但是当涉及到SCM检查出的标签LAST_SUCCESSFUL_EXTENSIONS_REPO_BUILD和LAST_SUCCESSFUL_SHARED_REPO_BUILD变量都没有与他们的价值观取代拉詹金斯管道中的特定标签SCM

node { 

    stage('Checkout') { 
     withEnv([ 
      "LAST_SUCCESSFUL_EXTENSIONS_REPO_BUILD=${ sh (script: "curl <JENKINS_URL>/job/extensionsrepo/job/${BRANCH_NAME}/lastSuccessfulBuild/buildNumber", returnStdout: true) }", 
      "LAST_SUCCESSFUL_SHARED_REPO_BUILD=${ sh (script: "curl <JENKINS_URL>/job/sharedrepo/job/${BRANCH_NAME}/lastSuccessfulBuild/buildNumber", returnStdout: true) }" 
     ]) { 
      sh 'echo ${BRANCH_NAME}_${LAST_SUCCESSFUL_EXTENSIONS_REPO_BUILD}' 
      sh 'echo ${BRANCH_NAME}_${LAST_SUCCESSFUL_SHARED_REPO_BUILD}' 
      checkout scm 
      checkout([ 
       $class: 'GitSCM', 
       branches: [[name: 'refs/tags/${BRANCH_NAME}_${LAST_SUCCESSFUL_EXTENSIONS_REPO_BUILD}']], 
       doGenerateSubmoduleConfigurations: false, 
       extensions: [[ 
        $class: 'RelativeTargetDirectory', 
        relativeTargetDir: 'app/extensions' 
       ]], 
       submoduleCfg: [], 
       userRemoteConfigs: [[ 
        credentialsId: 'ssh-key', 
        url: '<GIT_URL>' 
       ]] 
      ]) 
      checkout([ 
       $class: 'GitSCM', 
       branches: [[name: 'refs/tags/${BRANCH_NAME}_${LAST_SUCCESSFUL_SHARED_REPO_BUILD}']], 
       doGenerateSubmoduleConfigurations: false, 
       extensions: [[ 
        $class: 'RelativeTargetDirectory', 
        relativeTargetDir: 'app/shared' 
       ]], 
       submoduleCfg: [], 
       userRemoteConfigs: [[ 
        credentialsId: 'ssh-key', 
        url: '<GIT_URL>' 
       ]] 
      ]) 
     } 
    } 

    // test, stage, deploy 
} 

任何关于我在这里做错了什么指针将不胜感激。毫无疑问,我没有做到正确,这是愚蠢的。

感谢

回答

0

尝试更换单引号您结帐电话,你必须用双引号分支变种。一般来说,在Groovy中,当包含嵌入变量时,您应该使用双引号(参见What's the difference of strings within single or double quotes in groovy?)。

像:

checkout([ 
      $class: 'GitSCM', 
      branches: [[name: "refs/tags/${BRANCH_NAME}_${LAST_SUCCESSFUL_EXTENSIONS_REPO_BUILD}"]], 
      doGenerateSubmoduleConfigurations: false, 
      extensions: [[ 
       $class: 'RelativeTargetDirectory', 
       relativeTargetDir: 'app/extensions' 
      ]], 
      submoduleCfg: [], 
      userRemoteConfigs: [[ 
       credentialsId: 'ssh-key', 
       url: '<GIT_URL>' 
      ]] 
     ])