Как правильно обновить манифест Android с помощью xbuild и Jenkins?

В нашей среде мы создаем проект xamarin.android и хотим передать переменную $(build_number) в сборку Jenkins. К сожалению, Jenkins строит проект так, как будто ничего не было передано в рабочий процесс сборки.

Я попытался использовать XmlPoke, который отлично работает для Windows и не работает на Mac вообще.

ОС: Mac OS X Дженкинс и Xamarin являются последней стабильной версией

Пожалуйста, предложите.

3 ответа

Решение

Нет никакого решения по умолчанию / плагина для него, если вы работаете под Mac OS Host. Вы должны создать свой собственный скрипт / инструмент с входными параметрами для обновления атрибутов xml до заданного значения. Затем используйте его с задачей оболочки exec.

Я нашел хорошее решение от http://jonathanpeppers.com/Blog/xamarin-android-builds-in-jenkins

<Target Name="BeforeBuild" Condition=" '$(JENKINS)' == '1' ">
<XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="&lt;Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' /&gt;" Query="manifest/@android:versionCode" Value="$(SVN_REVISION)" />
<XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="&lt;Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' /&gt;" Query="manifest/@android:versionName" Value="2.0.$(SVN_REVISION)" />
</Target>

Используйте его в своем файле.csproj и не забудьте установить JENKINS в качестве глобальной среды со значением 1.

По этой ссылке вы можете получить доступ к переменным сборки среды в файле csproj, используя $(VAR) нотации.

Итак, предопределенные переменные Дженкинса, такие как BUILD_NUMBER должны быть доступны непосредственно внутри вашего проекта $(BUILD_NUMBER)во время вызова ничего лишнего не требуется.

Другие вопросы по тегам