2017-06-06 28 views
2

我想爲新工作使用新的jenkins文件。Jenkinsfile與用戶輸入變量在選擇

我有jenkinsfile至極我在獨奏庫:

  1. 我得到的混帳LS-遠程在bash另一gitlab存儲庫分支。我將它們存儲在變量:BRANCH1,BRANCH2,brach3 ....
  2. 然後我想使用用戶輸入選擇這些變量

    script {     
        env.BRANCHDEPLOY = input message: 'User input required', 
        ok: 'Deploy!', 
        parameters: [choice(name: 'Branch to deploy', choices: '${branch1}\n${branch2}\n${branch3}', description: 'What branch you wont deploy?')] 
    } 
    echo "${env.BRANCHDEPLOY}" 
    
  3. 然後我會用${env.BRANCHDEPLOY}的git的部署選擇分支。

問題是我不能在用戶選擇中使用變量來處理它。

我只需要讓用戶選擇他想從另一個gitlab存儲庫部署的分支。

回答

2

你只是讓做在你的變量,必須由腳本來代替單引號的錯誤,所以只是改變了單引號括起來,以雙引號和它的作品。

"${branch1}\n${branch2}\n${branch3}" 

例:第二階段打印所選的選項

pipeline { 
agent any 

environment{ 
    branch1 = 'stack' 
    branch2 = 'over' 
    branch3 = 'flow' 
} 

stages { 
    stage('Stage-One') { 
     steps { 
      script {     
       env.BRANCHDEPLOY = input message: 'User input required', 
       ok: 'Deploy!', 
       parameters: [choice(name: 'Branch to deploy', choices: "${branch1}\n${branch2}\n${branch3}", description: 'What branch you wont deploy?')] 
      } 
     } 
    } 
    stage('Stage-Two'){ 
     steps{ 
      sh "echo ${BRANCHDEPLOY}" 
     } 
    } 
} 

}

+0

謝謝CHANDAN納亞克,但我得到一個錯誤,用雙引號。 「沒有這樣的屬性:branch1 for class:groovy.lang.Binding」 – Hustoles

+0

請使用一個硬編碼環境先測試它,例如,確保您可以打印sh「echo $ {env.branch1}」 –

+0

With:environment {branch1 ='stack'}我從sh「echo $ {env.branch1}」得到結果「stack」。但在輸入它不工作。 – Hustoles

0

你有沒有嘗試類似的東西,你應該能夠通過臨屋區。

parameters { 
    string(branchName: 'feature_x') 
} 
scm { 
    checkout(
     branches: [[name: '*/$branchName']], 
.... 

}