【发布时间】:2018-09-06 10:04:45
【问题描述】:
我们正在为构建管理环境从 VSoft Continua CI 切换到 Jenkins。由于我们使用稍微修改的 Gitflow 流程,我们希望 Jenkins 能够从任何功能、发布或修补程序分支和拉取请求构建,我们决定使用 Jenkins 流水线。
release 和 hotfix 分支构建的版本号基于分支名称(例如 release/2.1.0),而任何其他分支或 pull request 的构建基于日期(例如 2018 年 9 月 6 日解析为 18.9 .6)。 Continua CI 为所有构建配置提供自动递增构建号,这就是为什么我们使用此构建号作为构建号的最后部分(例如 2.1.0.10、18.9.6.11、2.1.0.12 ......)。此生成的版本号作为参数传递给 MSBuild,使用此版本号作为 .NET 二进制文件的文件版本和程序集版本。
我正在 Jenkins 中寻找类似的解决方案。 Jenkins Pipeline 为每个分支和拉取请求分配一个单独的自动增量构建号,这可能导致来自不同分支的两个构建具有相同的版本。我已经尝试使用全局环境变量来存储版本并在每次构建时增加值,但似乎无法从管道任务中设置全局环境变量。
Jenkins Pipeline 项目有没有办法在所有分支/拉取请求之间共享内部版本号?
【问题讨论】:
-
我认为没有“内置”机制可以做到这一点。在不了解您的工作设置(如多分支、GitHub 组织文件夹等)的情况下,很难尝试并推荐特定的解决方案。立即出现在我脑海中的一种方法是从管道中调用
build的单独工作,从中获取编号,然后在构建中使用它。那份工作只是一个柜台。不是说这是一个很好的解决方案,但它是一个解决方案。