2015-06-10 24 views
2

我想通過'構建環境'部分中的選項在jenkins中設置密碼,該部分可以在我的測試中用於獲取密碼並使用它。這是我在「將密碼注入到構建中作爲環境變量」的選項。問題是一旦種子作業運行,我就失去這些值。所以我添加的值在種子作業運行後正在消失。有人遇到這個問題嗎?如何使它永久保存,以便每次我都可以在我的測試代碼中檢索這些密碼?注入構建環境變量的密碼

回答

1

@daspilker,@JesseGlick,非常感謝您的回覆。它幫助我在Jenkins編寫我的第一個配置塊。提到我的行爲對於面臨同樣問題的其他人可能會有所幫助。

由於我們使用的是作業DSL 1.27,我無法直接使用憑證 - 綁定。因此創建了一個配置塊,並通過我的.groovy腳本注入了所需的變量。

注意:您需要採取轉換值從'credentialsId「***** /工作/ config.xml中,如果你得到‘credentialsId沒有找到’錯誤。

static def credentialsBinding = { String userNameVar, String passwordVar, String credId, wrapperContext -> 
    def nodeBuilder = new NodeBuilder() 
    wrapperContext.wrapperNodes << nodeBuilder.'org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper'(plugin: "[email protected]") { 
     bindings { 
      'org.jenkinsci.plugins.credentialsbinding.impl.UsernamePasswordMultiBinding' { 
       usernameVariable userNameVar 
       passwordVariable passwordVar 
       credentialsId credId 
      } 
     } 
    } 
} 
4

運行種子作業後,所有手動更改爲生成的作業都將丟失。這是Job DSL插件的預期行爲。

以作業DSL生成的作業使用的密碼,使用Credentials plugin存儲在詹金斯的密碼(或任何祕密)。然後使用Credentials Binding plugin將密碼映射到作業中的環境變量。瀏覽一下example的Job DSL wiki。

+0

感謝您的回覆daspilker。我知道我們已經安裝了憑證插件。上述過程涉及在代碼中保留pwd?我唯一的嘗試不是保持密碼在代碼中打開。 – Venkat

+0

憑證綁定插件與憑證插件不同,不需要將密碼保留在代碼中,只需要憑證ID。 –

+0

@JesseGlick,我們使用作業DSL 1.27,所以我不能使用內置的憑證綁定調用。所以我試圖通過'configure'塊來編寫它。我得到'沒有這樣的財產'例外。 groovy.lang.MissingPropertyException:沒有這樣的屬性:usernameVariable類:javaposse.jobdsl.dsl.helpers.wrapper.WrapperContext \t at com.tgt.esv.jenkins.job.apis.test.GrailsFunctionalTestJob.create_closure1_closure8(GrailsFunctionalTestJob.groovy: 115) – Venkat