2016-11-04 19 views
0

私はJenkinsに取り組んでいます。 私は秘密のテキストをJOB1構築しています:私の他のJOB2に事前に定義されたパラメータで、この変数を送信することにより、パラメータ変数としてのAntのプロパティ値JENKINS

APP1_Dev_password 

そして、私のANTスクリプトからこの変数を使用して、ユーザー名とパスワードの変数を。この変数にアクセスしています

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

これはうまくいきます。 しかし、私のantスクリプトは、私のすべてのアプリケーションのための単一の一般化されたスクリプトです。 は、だから私はこの明確APP1_Dev_passwordとして、私はconstructPasswordVariable印刷し

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

を使用して、私のAntスクリプトから自動的に構成された本APP1_Dev_password文字列を取得しています。 これで、job1からフェッチするために、この値のconstructPasswordVariableプロパティを変数として使用する必要があります。

<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}として使用して、ビルドバインディングに保存された秘密のテキストを取得する必要があります。私のjenkinsジョブには、APP1_Dev_Passwordという名前のパスワード変数を持つ秘密のテキストがあります。この値を取得するには、$ {APPLICATIONNAME} _ $ {ENVIRON} _passwordから受け取った値を使用する必要があります。これを行う方法を知らないのですか? – useranon

答えて

0

Antは、ネストされたプロパティが直接サポートされていないという。同様に、追加のライブラリをせずに、それを可能にする別の参照がhereあり、参照上記

<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

からドキュメントを参照するしかし、それはライブラリーFlaka

サンプルを用いて達成することができます。

サンプル:

<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

ライブラリなしで2番目のサンプルを実行すると、java.io.FileNotFoundException:/jenkins/JOB1/deref.properties(Permission denied)が表示されます。 – useranon

+0

@ジャスミン、私はライブラリで最初のサンプルを試すことができませんでした。しかし、2番目のサンプルを変更せずそのまま試してみたところ、実際にはうまくいきました。プロジェクトに実装する前のサンプルを試してみたほうがいいでしょうか? – Rao

+0

propertycopyはこれに役立ちます。だから、私は動的にJenkinsの仕事に格納されているすべてのアプリのパスワードのANTからのconstructPasswordVariableを使用することができます – useranon

関連する問題