多个项目共享一个 jenkinsfile

Nic*_*asW 5 parameter-passing jenkins jenkins-plugins jenkins-pipeline

我有多个具有类似构建步骤的项目,并且我正在考虑在这些项目中重用 Jenkinsfile 管道。我很难找到有关如何实现此类标准(据我看来)设置的文档。

这是我的要求:

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

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

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

我怎样才能实现这个目标?基于管道参数和jenkins GUI参数如何协同工作?我知道我可以使用自由式作业,但是使用此选项无法直接使用日志。有人建议我在每个独立作业中使用 Jenkinsfile,但在我看来,这听起来像是太多不必要的配置。

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

projectSvnPath例如,在 Jenkinsfile 中定义没有默认值的属性将删除projectSvnPathJenkins 中的作业参数值。因此我无法使用此选项。

properties([
  parameters([
    string(name: 'projectSvnPath',      description: '*', )
   ])
])
Run Code Online (Sandbox Code Playgroud)

Nic*_*asW 1

Jenkins 具有共享库概念,允许多个构建共享通用管道指令,而无需复制代码。详细信息请参见https://jenkins.io/doc/book/pipeline/shared-libraries/

目前尚不清楚的是如何允许参数覆盖在每次重新加载 Jenkinsfile 时持续存在。似乎是一个奇怪的设计选择。

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

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