为Jenkins多分支流水线定制项目识别器

7
当您创建Github组织或Bitbucket团队/项目时,其中一个配置项是:

项目识别器:Pipeline Jenkinsfile

除了“Pipeline Jenkinsfile”之外,没有其他选项,但是该选项的存在表明开发人员预见到人们为那些在存储库顶层目录中没有单个“Jenkinsfile”的项目编写自定义“识别器”。
有人能否指导我安装和使用其他项目识别器,甚至提供一些关于如何开始实现自己的识别器的详细信息?
我的特定用例是,在单个存储库中,我们定义了几个工作流,用于在一个存储库中编排代码/配置上的操作,我希望能够使用Bitbucket团队选项动态扫描存储库,在所有分支/拉取请求中找到所有的*.Jenkinsfile文件并填充必要的流水线。
例如,在存储库中有以下文件:
/pipelines/workflow1.Jenkinsfile
          /workflow2.Jenkinsfile
          /workflow3.Jenkinsfile

我希望Jenkins能够创建文件夹结构:
 /team/repo/workflow1/master
                     /dev
                     /PR1
           /workflow2/master
                     /dev
                     /feature-xyz

如果可能的话,您有什么想法可以从何处开始创建项目识别器?

2个回答

0

目前,至少应该提供替代识别器的选项来处理 Jenkinsfile。这在JENKINS-34561 - Allow to detect different Jenkinsfile filenames中已经添加。您可以查看 jenkinsci/workflow-multibranch-plugin/pull/59 来了解如何使用识别器的背景信息。

关于从单个资源识别多个资源,JENKINS-35415 - Multiple branch projects per repository with different recognizersJENKINS-43749 - Support multiple Jenkinsfiles from the same repository 是与此请求非常相似的需求。

Stephen Connolly的评论JENKINS-43749中提到:

这是在要求为分支内的每个Jenkinsfile创建一个计算文件夹和管道作业。

我认为如果有人想尝试,API应该支持它。我唯一看到的问题是,我们可能需要调整分支API以允许分支作业成为非作业类型(即计算文件夹)

看起来你需要实现一个BranchProjectFactory(例如:WorkflowBranchProjectFactory),它是一个ComputedFolder的工厂(例如:WorkflowMultiBranchProject)。

祝你好运!


0

我认为你可以提供几个不同名称的项目识别器来完成这个操作,例如:

项目识别器 ========================================= **Pipeline Jenkinsfile** Script Path: pipeline/workflow1.Jenkinsfile (或包含有效流程步骤文件的路径) ========================================= **Pipeline Jenkinsfile** Script Path: pipeline/workflow2.Jenkinsfile (或包含有效流程步骤文件的路径) ========================================= **Pipeline Jenkinsfile** Script Path: pipeline/workflow3.Jenkinsfile (或包含有效流程步骤文件的路径)

另一个选择是使用Pipeline Shared Groovy Libraries Plugin,关于该插件的更多详细信息可以在使用共享库进行扩展中找到。

这种方法使您能够使用自定义脚本(类、步骤等),这意味着您可以根据存储库名称、项目名称等定义自己的流程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接