2017-06-06 5 views
0

Jenkinsfileの2つの異なるreposから特定のタグを取得しようとしています。タグは、関連パイプラインから最新の成功ビルドを取得し、これらの値を使用してチェックアウトするタグを決定することによって決定されます。しかし、SCMは私が追加したwithEnv変数を置き換えないので、私は問題を得ています。コードでは、私は、タグであるべきかをエコーし​​ています(このエコーが正常に動作していない)が、それはSCMは、タグLAST_SUCCESSFUL_EXTENSIONS_REPO_BUILDとLAST_SUCCESSFUL_SHARED_REPO_BUILD変数をチェックアウトすることになると何もそれらの値に置換されて見ることができるの下Jenkinsパイプラインで特定のタグを引き出す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

あなたは二重引用符で分岐VARを持っているあなたのチェックアウトのコールでの単一引用符を交換してみてください。一般に、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>' 
      ]] 
     ]) 
関連する問題