【问题标题】:What is the right way to update android manifest with xbuild and Jenkins使用 xbuild 和 Jenkins 更新 android manifest 的正确方法是什么
【发布时间】:2014-11-08 14:21:05
【问题描述】:

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

我尝试使用 XmlPoke,它适用于 windows,但在 mac 上完全不适用。

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

请提出建议。

【问题讨论】:

  • 您是在问如何配置 Jenkins 参数化构建,还是在问如何使用带参数的 android 构建命令行?事实上:你的 android build 命令行是什么?
  • 这个“或者你在问如何使用你的android构建命令行参数”。我正在使用 XBUILD (mac os x)
  • 那么,除了 Jenkins,您通常如何将变量传递给 Xamarin?

标签: jenkins xamarin xamarin.android android-manifest xmlpoke


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    根据this link,您可以使用$(VAR) 表示法访问csproj 文件中的环境构建变量。

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

    【讨论】:

    • “在项目内部使用”是什么意思。是的,我有那个变量,但我需要用内部版本号更新清单/plist。基本上在构建过程中修改一个xml文件
    • 您的问题表明:“我们正在构建 xamarin.android 项目并希望将 $(build_number) 变量传递给 Jenkins 构建”。我在 cmets 中进一步询问了您想要什么,您确认“如何使用带有参数的 android 构建命令行”。我已经回答了如何将变量传递/使用到您的 android 版本。你没有问过关于更新 xml 的问题
    • 我没看懂评论。问题在于“使用 xbuild 和 Jenkins 更新 android manifest 的正确方法是什么”
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多