2016-11-04 45 views
0

我對詹金斯的工作。 我已經建立了祕密文本JOB1:用戶名和密碼變量Ant屬性值作爲參數變量在JENKINS

APP1_Dev_password 

,並使用來自我的Ant腳本這個變量通過發送預定參數這個變量來我的其他作業2。我訪問這個變量使用

<property name="DBPassword" value="${APP1_Dev_password}"/> 

這很好。 但我的螞蟻腳本是我的所有應用程序的單一通用腳本。 所以我必須得使用

<property name="constructPasswordVariable" value="${APPLICATIONNAME}_${ENVIRON}_password"/> 
<echo message= "constructPasswordVariable: ${constructPasswordVariable}" /> 

從我的ant腳本自動構建這個APP1_Dev_password字符串這清楚地打印我constructPasswordVariable爲APP1_Dev_password。 現在我必須使用constructPasswordVariable屬性的這個值作爲從job1中獲取的變量。

<echo message= "PasswordValue: ${${constructPasswordVariable}}" /> 

該聲明失敗。你能指導我如何處理這個問題嗎?

SOLUTION

<property name="constructPasswordVariable" value="${env.Module}_${env.Environment}_password"/> 
<echo message= "constructPasswordVariable: ${constructPasswordVariable}" /> 
<propertycopy name="prop" from="${constructPasswordVariable}"/> 
<echo message= "ENV VALUE: ${prop}" /> 

輸出

constructPasswordVariable: APP1_Dev_password 
ENV VALUE: asdhasd 
+0

'$ {} APPLICATIONNAME _ $ {} ENVIRON _password'可以直接使用?我錯過了什麼? – Rao

+0

@Rao - $ {} APPLICATIONNAME _ $ {} ENVIRON給_password值作爲APP1_Dev_Password。但是我必須使用這個值作爲變量$ {APP1_Dev_Password}來獲取保存在我的Build綁定中的祕密文本。我的詹金斯工作有一個祕密文本,其密碼變量名稱爲APP1_Dev_Password。因此,要獲取此值,我必須使用從$ {APPLICATIONNAME} _ $ {ENVIRON} _password收到的值。不知道如何做到這一點? – useranon

回答

0

螞蟻說,不直接支持嵌套屬性。從here

然而參照文檔,它可以使用庫Flaka

樣品來實現:從上面參考

<project xmlns:fl="antlib:it.haefelinger.flaka"> 
    <fl:install-property-handler/> 
    <property name="foo" value="foo.value"/> 
    <property name="var" value="foo" /> 
    <property name="buildtype" value="test"/> 
    <property name="appserv_test" value="//testserver"/> 
    <echo> 
    #{${var}} = foo.value 
    <!-- nested property --> 
    #{appserv_${buildtype}} 
    </echo> 
</project> 

還有另一種參考here,其使得可以在不附加的庫以及。

樣品:

<project default="test"> 

<property name="foo" value="ABC"/> 
<property name="pfoo" value="foo"/> 

<target name="test"> 
    <echo file="deref.properties"> 
deref: $${${pfoo}} 
    </echo> 

    <property file="deref.properties"/> 
</target> 

+0

我接收java.io.FileNotFoundException:/jenkins/JOB1/deref.properties(拒絕授權)當我不庫執行第二樣品。 – useranon

+0

@Jasmine,我無法嘗試與庫的第一個示例。然而,儘管第二個樣品沒有任何變化,但它確實奏效。希望你可能已經嘗試過在實施項目之前的樣本,對吧? – Rao

+0

propertycopy在這方面幫助我。所以現在我可以動態地使用ANT的constructPasswordVariable來存儲Jenkins作業中存儲的所有應用程序密碼 – useranon