【问题标题】:Auto increment appx package version after each build每次构建后自动增加 appx 包版本
【发布时间】:2014-10-18 22:32:25
【问题描述】:

我正在寻找一种解决方案,以在每次构建 CI 服务器(尤其是 Atlassian Bamboo)后自动增加包版本(不要与程序集版本混淆)。每个 appx 包都在其清单文件 (appxmanifest) 中定义了一个版本。因此,为了增加版本,必须在提交之前编辑清单。我正在考虑不同的方法来实现这一点。第一个对清单进行更改并将其推回存储库。

  1. 开始制定计划(以锁定内部版本号)
  2. 修改清单,以便将修订设置为当前内部版本号
  3. 将更改推送到 SCM(尤其是 Atlassian Stash)。此步骤不应触发下一次构建。
  4. 继续构建包(调用 MSBuild、UT 和其他任务)

缺点

  1. 导致 Bamboo 上的工作流程不正确:结帐 -> 推送 -> 构建
  2. 每次构建都会进行一次新的提交

另一种方法是设置 post receive Stash hook 来修改 appxmanifest。

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

有没有其他(更清洁和适当的)方法来实现这一点?

【问题讨论】:

    标签: msbuild windows-store-apps continuous-integration bamboo bitbucket-server


    【解决方案1】:

    这里是前 Stash 开发人员(没关系),

    强烈建议不要签入派生/版本信息或文件。它会给您带来无穷无尽的问题(您在问题中已经指出了其中一些问题)。

    我的建议 - 生成构建所需的信息。我对 appx 打包一无所知,但是您可以使用可以在 Bamboo 构建中解决的占位符/属性(如 this)吗?对于我们的构建,我们使用 git 哈希和时间戳作为版本,过去我也使用过作业/内部版本号(不过时间戳更好)。

    更值得深思 - 如果 appx 版本对于开发人员在本地查看很重要,并且很难与 Git 版本匹配,那么您也可以在 Bamboo 中的提交中附加一个 Git 标签/注释。这样做的好处是,任何从 Git 获取的人都可以轻松地看到额外的元数据,但这不会导致每次构建都额外提交。如果 appx 版本需要基于以前的版本,那么这使得构建脚本可以检查以前的提交并适当地调整版本。

    希望对你有帮助。

    【讨论】:

    • 感谢您的帮助。我已经设法通过使用带有占位符的清单模板解决了这个问题。 MSBuild Community Tasks 项目中的 TemplateFile 任务然后在构建期间从环境变量中获取值并生成 appxmanifest。
    猜你喜欢
    • 2017-10-05
    • 2018-01-07
    • 2014-08-04
    • 1970-01-01
    • 2020-06-29
    • 2015-12-13
    • 2010-12-13
    • 2023-02-15
    • 1970-01-01
    相关资源
    最近更新 更多