2016-11-04 4 views
0

Я работаю над Дженкинсом. Я построил job1 с секретным текстом: имя пользователя и пароль, как переменнойЗначение свойства Ant как параметр переменной В JENKINS

APP1_Dev_password 

И используя эту переменную из моего ANT сценария, посылая эту переменную в предопределенной параметра к моему другому job2. Я обращаюсь к этой переменной с помощью

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

Это хорошо работает. Но мой скрипт ant - это единый обобщенный скрипт для всех моих приложений. Так что я получаю эту APP1_Dev_password строку, построенную автоматически из моего муравья сценария с помощью

<property name="constructPasswordVariable" value="${APPLICATIONNAME}_${ENVIRON}_password"/> 
<echo message= "constructPasswordVariable: ${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 
+0

'$ {ApplicationName} _ $ {ЭНВАЙРОН} _password' может быть использован непосредственно? Я что-то пропустил? – Rao

+0

@Rao - $ {APPLICATIONNAME} _ $ {ENVIRON} _password дает значение как APP1_Dev_Password. Но я должен использовать это значение как переменную $ {APP1_Dev_Password} для получения секретного текста, сохраненного в моих строковых привязках. У моей работы jenkins есть секретный текст с переменной пароля в имени APP1_Dev_Password. Поэтому, чтобы получить это значение, мне нужно использовать значение, полученное от $ {APPLICATIONNAME} _ $ {ENVIRON} _password. Не знаете, как это сделать ??? – useranon

ответ

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> 

+0

Я получаю java.io.FileNotFoundException: /jenkins/JOB1/deref.properties (Permission denied), когда я выполняю второй образец без библиотеки. – useranon

+0

@ Жасмин, я не мог попробовать первый образец с библиотекой. Однако, попробовал 2-й образец, так как он без каких-либо изменений, и он действительно сработал. Надеюсь, что вы, возможно, попробовали образец, как это было до внедрения в ваш проект, верно? – Rao

+0

propertycopy помогает мне в этом. Итак, теперь я могу динамически использовать конструкциюPasswordVariable из ANT для всех паролей приложений, хранящихся в работе Jenkins – useranon

 Смежные вопросы

  • Нет связанных вопросов^_^