Jenkins管道的全局生成号

Jenkins管道的全局生成号,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我们正在为构建管理环境从VSoft Continua CI切换到Jenkins。由于我们使用了稍微修改过的Gitflow流程,我们希望Jenkins能够从任何功能、发行版或热修复分支和拉取请求进行构建,因此我们决定使用Jenkins管道 版本和修补程序分支的版本号基于分支名称(如release/2.1.0),而任何其他分支或请求的版本则基于日期(如2018年9月6日解析为18.9.6)。Continua CI在所有构建配置中提供了一个自动递增的构建编号,这就是为什么我们使用此构建编号作为构建编号

我们正在为构建管理环境从VSoft Continua CI切换到Jenkins。由于我们使用了稍微修改过的Gitflow流程,我们希望Jenkins能够从任何功能、发行版或热修复分支和拉取请求进行构建,因此我们决定使用Jenkins管道

版本和修补程序分支的版本号基于分支名称(如release/2.1.0),而任何其他分支或请求的版本则基于日期(如2018年9月6日解析为18.9.6)。Continua CI在所有构建配置中提供了一个自动递增的构建编号,这就是为什么我们使用此构建编号作为构建编号的最终部分(例如2.1.0.10、18.9.6.11、2.1.0.12等)。使用此版本号作为.NET二进制文件的文件版本和程序集版本,将生成的版本号作为参数传递给MSBuild

我正在詹金斯寻找类似的解决方案。Jenkins管道为每个分支和pull请求分配一个单独的自动增量版本号,这可能导致来自不同分支的两个版本具有相同的版本。我已经尝试使用全局环境变量来存储版本,并在每次构建时增加值,但似乎无法从管道任务中设置全局环境变量

Jenkins管道项目是否有办法在所有分支/拉取请求之间共享构建编号?

以下是一些想法:

  • 基于文件:让您的stage在
    master
    节点上执行;选择一个文件并决定其格式(属性文件可能是一个好的开始),更新,写入

  • 将此委托给外部服务(例如,具有 您使用的REST端点(包含一个ID)

  • 为它写一个插件


我认为没有“内置”机制来实现这一点。在不了解作业设置(如multibranch、GitHub组织文件夹等)的情况下,很难尝试推荐特定的解决方案。我脑海中立即浮现的一种方法是,从管道中调用一个单独的作业
build
,从中获取号码,并在构建中使用它。那工作只不过是个计数器。不是说这是一个好的解决方案,而是说这是一个解决方案。感谢您的想法,我们尝试了@mkobit提出的方法,使用一个专门的分支作为参考,但这感觉很奇怪。我想我们现在将使用外部服务,并考虑编写一个插件。基于Python的web服务器的示例实现如下所示: