2017-02-27 51 views
1

我们打算关注Semantic Versioning我们的网络应用程序,它看起来非常好。现在,詹金斯用作CI/CD工具。我们希望使用Octopus Deploy作为工件存储和CD工具,也用于快速重新部署/回滚和其他配置功能。如何根据语义版本自动增加Web应用程序版本?

八达通需要具有混凝土版本的软件包(例如:1.2.4)。因此,我们还需要对我们的Web应用程序进行强大的版本控制否则,如何检测部署的版本是否有错误。

解描述here不是透明的和不完全匹配于语义版本:

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

因为,补丁版本应递增一个接一个的从0开始,不从“随机”数,并在次要增量后重置。

对于我的意见 - 最好将版本存储在存储库中与包中相同的视图(1.2.4)中。但我发现如何实现它只有这种方式:

  • 手动增加前提交 - 不舒服,有风险。
  • 提交前自动增加SVN/Git挂钩 - 需要配置每个工作站。
  • 从CI工具和提交自动增加 - 使用CI监视对存储库中的更改进行循环依赖。

是否有任何其他方式来实现与存储库中的平等版本控制,就像在Web应用程序的包中一样?或者,也许这是不必要的?

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

+0

您的CD/CI管道的哪一部分产生八达通将消耗的软件包? – gvee

+0

经过连续构建,Jenkins将软件包打包并推送到八达通,并自动部署到开发环境。 –

+0

什么运行构建?我问,因为在我们的商店中,构建定义是版本设置的地方。也;你见过Jenkins的[这个插件](https://wiki.jenkins-ci.org/display/JENKINS/semantic-versioning-plugin)吗? – gvee

回答

2

大多数开发人员未能在代码中提交正确的汇编版本。比方说,如果你有40个项目和15个开发人员,然后维护[assembly: AssemblyVersion("1.0.*")]版本将永远是一个问题。

我建议你可以结帐代码,并做搜索&替换总是注入像[Major.Minor.Build]这样的正确的程序集版本号。 [Major.Minor]作为输入并且对团队全局感知,从而减少不良dll编号/内部编号可以正向递增并与CI匹配以进行跟踪。 SVN的commit号也可以和它混合使用。

+0

非常感谢,我得到了确认 - 将SemVer存储在存储库中是个好主意。 :)我们发现Jenkins可以跳过特定用户的提交(在高级设置中),它解决了CI监视和存储库中的更改之间的循环依赖关系问题。 –