3

在我们的环境中,我们正在构建 xamarin.android 项目,并希望将 $(build_number) 变量传递给 Jenkins 构建。不幸的是,Jenkins 正在构建项目,就好像没有任何东西传递给构建工作流程。

我尝试使用 XmlPoke,它适用于 windows,但在 mac 上根本不起作用。

操作系统:mac os x jenkins & xamarin 是最新的稳定版本

请建议。

4

3 回答 3

2

我从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 的全局环境。

于 2017-10-12T18:34:32.780 回答
0

根据此链接,您可以使用$(VAR)符号访问 csproj 文件中的环境构建变量。

因此,预定义的 Jenkins 变量,例如BUILD_NUMBER应该可以直接在你的项目 use$(BUILD_NUMBER)中使用,在调用期间不需要额外的东西。

于 2014-12-08T14:28:43.750 回答
0

如果您在 Mac OS Host 下构建,则没有默认的解决方案/插件。您必须使用输入参数创建自己的脚本/工具,才能将 xml 属性更新为给定值。然后将它与 shell exec 任务一起使用。

于 2014-12-16T02:23:23.003 回答