.net - 如何根据语义版本控制自动增加 Web 应用程序版本?

标签 .net jenkins octopus-deploy semantic-versioning

我们将关注 Semantic Versioning对于我们的web 应用程序,它看起来非常好。现在,Jenkins 用作 CI/CD 工具。我们想使用 Octopus Deploy作为工件存储和 CD 工具,也用于快速重新部署/回滚和其他配置功能。<​​/p>

Octopus 需要具体版本的软件包(例如:1.2.4)。因此,我们还需要为我们的 Web 应用程序进行强版本控制。否则,如何检测部署的版本和有错误。

解决方案描述 here不透明且与语义版本控制不完全匹配:

[assembly: AssemblyVersion("1.0.*")]

因为,补丁版本应该从0开始逐一递增,而不是从“随机”数字递增,并在Minor递增后重置。

在我看来 - 最好将版本存储在与包中相同的 View (1.2.4) 中的存储库中。但我发现只有这种方式来实现它:

  • 提交前手动递增 - 令人不安且存在风险。
  • 提交前从 SVN/Git Hook 自动递增 - 需要配置每个工作站。
  • 通过 CI 工具自动递增并提交 - 通过 CI 监控存储库中的更改来实现循环依赖。

是否有任何其他方法可以像在存储库中一样在 Web 应用程序包中实现相同的版本控制?或者也许这是不必要的?

2017-02-28 更新:我们发现 Jenkins 可以跳过来自特定用户或特定消息的提交(在高级设置中)。它解决了 CI 工具的自动增量和提交问题(CI 监控和存储库更改之间的循环依赖)。

最佳答案

大多数开发人员未能在代码中提交正确的程序集版本。假设您有 40 个项目和 15 个开发人员,那么维护 [assembly: AssemblyVersion("1.0.*")] 版本将始终是一个问题。

我建议您可以 checkout 代码并执行搜索和替换 以始终注入(inject)正确的程序集内部版本号,例如 [Major.Minor.Build]。 [Major.Minor] 将作为输入并全局感知团队,从而减少错误的 dll 编号/内部版本号可以正向递增并与 CI 的编号匹配以进行跟踪。 SVN 提交号也可以混用。

关于.net - 如何根据语义版本控制自动增加 Web 应用程序版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42482878/

相关文章:

jenkins - octopus 中的包 ID 是什么?

c# - 如何要求套接字等待更多数据到来

python - Jenkins 构建返回 'None' 状态

java - Jenkins 使用 M2 发布插件发布

ssl - Jenkins 插件管理器 : Updating plugin data fails

octopus-deploy - 如何使Octopack使用自定义.nuspec文件?

jquery - $(document).ready 在 MVC4 项目下不起作用

c# - 使用 System.Reactive 订阅/监听流的 "side events"

.net - 在 xsd 中使用 key 的正确方法

azure - Octopus 部署在 azure 和绿色的环境中