一尘不染

多个项目共享一个jenkinsfile

jenkins

我有多个具有相似构建步骤的项目,并且我正在研究在这些项目中重用Jenkinsfile管道。我很难找到有关如何实现这样的标准(我认为)设置的文档。

这是我的要求:

1)Jenkinsfile存储在回购中,在多个项目之间共享

2)每个项目都有其自己的参数:项目在仓库中的位置。

3)至少从用户角度来看,每个项目在Jenkins中都应独立,这意味着,例如,执行和日志可在Jenkins中的每个项目条目中找到

我该如何实现?基于管道参数和jenkinsGUI参数如何协同工作?我知道我可以使用自由式作业,但是使用此选项不能直接使用日志。还建议我在每个独立的作业中使用Jenkinsfile,但我认为这听起来像是不必要的配置。

我最初考虑过复制管道作业(意思是复制作业,包括参数定义,存储库和凭证以及jenkinfile位置定义),我的想法是每次运行作业时,管道都会擦除参数默认值

例如projectSvnPath,在Jenkinsfile中定义默认值为NO
的属性将删除我projectSvnPath在Jenkins中的工作参数值。因此,我无法使用此选项。

properties([
  parameters([
    string(name: 'projectSvnPath',      description: '*', )
   ])
])

阅读 775

收藏
2020-07-25

共1个答案

一尘不染

Jenkins具有共享库的概念,以允许多个构建在不复制代码的情况下共享通用管道指令。有关详细信息,参见https://jenkins.io/doc/book/pipeline/shared-
libraries/。

在这一点上,尚不清楚的是如何在每次重新加载Jenkinsfile时保留参数覆盖。似乎是一个奇怪的设计选择。

更新07/13/17我的所有参数都在管道中定义,以避免出现参数问题。我更喜欢在代码存储库中定义参数,但是可以预见这种情况不切实际的情况。

更新04/18我放弃使用共享库-
原因是无法测试。它不会在开发环境(例如您的PC)上运行,因此基本上任何开发都需要推送到您的存储库中才能执行任何测试。对于任何类型的软件开发,这都不是可持续的方法。目前,我的jenkinsfiles已复制,因为我没有找到使用jenkins的解决方法。

2020-07-25