Jenkins多分支管道的自定义项目识别器

Rob*_*ard 6 github bitbucket jenkins jenkins-pipeline multibranch-pipeline

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

项目识别器:管道Jenkinsfile

除了"Pipeline Jenkinsfile"之外没有其他选项,但是该选项甚至存在这一事实表明开发人员设想人们为顶级目录中没有单个'Jenkinsfile'的项目编写自己的自定义'识别器'回购.

任何人都可以指出我可以安装和使用的任何其他项目识别器的方向,甚至是一些关于从哪里开始实现我自己的识别器的细节?

我的特定用例是在单个存储库中,我们定义了几个工作流,这些工作流在一个仓库中协调代码/配置上的操作,我希望能够使用Bitbucket Team选项动态扫描仓库,找到所有*.Jenkinsfile跨所有分支/拉取请求的文件并填充必要的管道.

例如,在repo中是文件:

/pipelines/workflow1.Jenkinsfile
          /workflow2.Jenkinsfile
          /workflow3.Jenkinsfile
Run Code Online (Sandbox Code Playgroud)

我想jenkins创建文件夹结构:

 /team/repo/workflow1/master
                     /dev
                     /PR1
           /workflow2/master
                     /dev
                     /feature-xyz
Run Code Online (Sandbox Code Playgroud)

有关我可以从创建项目识别器开始的地方开始的任何想法(如果这是可能的话)?

ssh*_*pel 0

我认为您可以通过提供多个具有不同名称的项目识别器来做到这一点,例如:

Project Recognizers ========================================= **Pipeline Jenkinsfile** Script Path: pipeline/workflow1.Jenkinsfile (or path to the file that contains valide Pipeline steps. ========================================= **Pipeline Jenkinsfile** Script Path: pipeline/workflow2.Jenkinsfile (or path to the file that contains valide Pipeline steps. ========================================= **Pipeline Jenkinsfile** Script Path: pipeline/workflow3.Jenkinsfile (or path to the file that contains valide Pipeline steps.

这里的另一个选择可能是Pipeline Shared Groovy Libraries Plugin ,有关此插件的更多详细信息可以在Extending with Shared Libraries中找到。

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