在我们的环境中,我们正在构建 xamarin.android 项目,并希望将 $(build_number) 变量传递给 Jenkins 构建。不幸的是,Jenkins 正在构建项目,就好像没有任何东西传递给构建工作流程。
我尝试使用 XmlPoke,它适用于 windows,但在 mac 上根本不起作用。
操作系统:mac os x jenkins & xamarin 是最新的稳定版本
请建议。
在我们的环境中,我们正在构建 xamarin.android 项目,并希望将 $(build_number) 变量传递给 Jenkins 构建。不幸的是,Jenkins 正在构建项目,就好像没有任何东西传递给构建工作流程。
我尝试使用 XmlPoke,它适用于 windows,但在 mac 上根本不起作用。
操作系统:mac os x jenkins & xamarin 是最新的稳定版本
请建议。
我从http://jonathanpeppers.com/Blog/xamarin-android-builds-in-jenkins找到了一个很好的解决方案
<Target Name="BeforeBuild" Condition=" '$(JENKINS)' == '1' ">
<XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="<Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' />" Query="manifest/@android:versionCode" Value="$(SVN_REVISION)" />
<XmlPoke XmlInputPath="Properties\AndroidManifest.xml" Namespaces="<Namespace Prefix='android' Uri='http://schemas.android.com/apk/res/android' />" Query="manifest/@android:versionName" Value="2.0.$(SVN_REVISION)" />
</Target>
在你的 .csproj 文件中使用它,不要忘记将 'JENKINS' 设置为值为 1 的全局环境。
根据此链接,您可以使用$(VAR)
符号访问 csproj 文件中的环境构建变量。
因此,预定义的 Jenkins 变量,例如BUILD_NUMBER
应该可以直接在你的项目 use$(BUILD_NUMBER)
中使用,在调用期间不需要额外的东西。
如果您在 Mac OS Host 下构建,则没有默认的解决方案/插件。您必须使用输入参数创建自己的脚本/工具,才能将 xml 属性更新为给定值。然后将它与 shell exec 任务一起使用。