0

我正在寻找一种解决方案,以便在CI服务器(特别是Atlassian Bamboo)上每次构建后自动递增包版本(不要与程序集版本混淆)。每个appx包都有一个在其清单文件(appxmanifest)中定义的版本。因此,为了增加版本,必须在提交之前编辑清单。我正在考虑采用不同的方法来执行此操作第一个在清单中进行更改并将其推回回购。每次构建后自动递增appx包版本

  1. 开始构建计划(以便锁定一版本号),使得修改被设置为当前的版本号
  2. 将更改应用于SCM(尤其Atlassian的藏匿)
  3. :修改清单。这一步不应该触发下一个构建。
  4. 继续构建软件包(调用的MSBuild,UT等任务)

缺点

  1. 信息不正确的工作流程上竹:结算 - >按 - >打造
  2. 每个构建作出新的承诺

另一种方法是设置邮政接收Stash挂钩这将改变fy appxmanifest。

缺点很难保持与Bamboo同步的内部版本号。

是否有任何其他(更清洁和正确)的方式来实现这一目标?

回答

1

前藏匿开发商在这里(这不是问题),

我会高度建议不要在导出/版本信息或文件的检查。这会导致你无法解决问题(你在问题中已经指出了其中的一些问题)。

我的建议 - 生成你需要的构建信息。我对于appx包装一无所知,但是你可以使用占位符/属性(如this),它可以在Bamboo构建中解析吗?对于我们的构建,我们使用git hash和timestamp作为版本,而且在过去,我也使用了作业/内部版本号(尽管时间戳更好)。

随着更多的思考 - 如果该appx版本对于开发人员在本地查看很重要,并且很难与Git版本匹配,那么您还可以将一个Git标记/注释附加到Bamboo中的提交中。关于这一点的好处是,从Git获取的任何人都可以轻松地看到额外的元数据,但不会导致每个构建的额外提交。如果appx版本需要基于以前的版本,那么这使得构建脚本可以检查先前的提交并适当地修改版本。

我希望有帮助。

+0

谢谢你的帮助。我设法通过使用带占位符的清单模板来解决问题。 [MSBuild Community Tasks](https://github.com/loresoft/msbuildtasks)项目中的TemplateFile任务然后在构建过程中从环境变量中获取值并生成appxmanifest。 – IUnknown 2014-10-21 06:44:57

相关问题