7

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

项目识别器:管道 Jenkinsfile

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

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

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

例如,在 repo 中有文件:

/pipelines/workflow1.Jenkinsfile
          /workflow2.Jenkinsfile
          /workflow3.Jenkinsfile

我希望詹金斯创建文件夹结构:

 /team/repo/workflow1/master
                     /dev
                     /PR1
           /workflow2/master
                     /dev
                     /feature-xyz

关于我可以从哪里开始创建项目识别器来做到这一点的任何想法(如果这可能的话)?

4

2 回答 2

0

到目前为止,至少应该可以选择为Jenkinsfile. 这是在JENKINS-34561 -允许检测不同的 Jenkinsfile 文件名中添加的。您可以在jenkinsci/workflow-multibranch-plugin/pull/59上查看拉取请求,这可能有助于提供有关识别器如何工作的一些背景信息。

在从单一来源识别多个方面,JENKINS-35415 - 每个存储库具有不同识别器的多个分支项目JENKINS-43749 - 支持来自同一存储库的多个 Jenkinsfile 是与此非常相似的请求。

JENKINS-43749的 Stephen Connolly的评论是这样说的:

相反,这要求的是为分支中的每个 jenkinsfile 创建一个带有管道作业的计算文件夹。

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

听起来您需要实现一个BranchProjectFactory(示例:) ,它是(示例WorkflowBranchProjectFactory:)的工厂。ComputedFolderWorkflowMultiBranchProject

祝你好运!

于 2017-12-27T22:37:56.353 回答
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中找到。

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

于 2017-11-05T21:37:13.300 回答