Ant属性值作为参数变量在JENKINS中

时间:2016-11-04 10:17:30

标签: jenkins ant jenkins-workflow

我正在研究詹金斯。 我已经使用秘密文本构建了一个job1:username和Password变量为

  APP1_Dev_password

通过在预定义参数中将此变量发送到我的其他job2,从我的ANT脚本中使用此变量。我正在使用

访问此变量
<property name="DBPassword" value="${APP1_Dev_password}"/>

这很有效。 但我的ant脚本是我所有应用程序的单个通用脚本。 所以我使用

从我的ant脚本自动构造了这个APP1_Dev_password字符串
<property name="constructPasswordVariable" value="${APPLICATIONNAME}_${ENVIRON}_password"/>
<echo message= "constructPasswordVariable: ${constructPasswordVariable}" />

这清楚地将构造密码打印为APP1_Dev_password。 现在我必须使用constructPasswordVariable属性的这个值作为从job1获取的变量。

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

此声明失败。你能指导我如何解决这个问题。

<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

1 个答案:

答案 0 :(得分:0)

Ant表示不直接支持嵌套属性。参考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>