4

我正在我的组织中设计一个 Jenkins CICD 管道,我有一个以下问题。

我来自一个为多个开发团队控制 Jenkins 管道的 devops 团队。我基本上想编写一个可以由多个团队运行的具有多个阶段的 Jenkins 文件。我知道这个 Jenkins 文件可以签入每个团队的 Gitrepo,并且只要对代码仓库进行更改,它就可以调用完整的管道。

为了确保这个 JenkinsFile 是可维护的,并且对于这个 Jenkins 文件的任何未来更改,我不必要求所有不同的团队在他们的 Gitrepo 中更新这个文件,我想把这个文件放在由我的团队控制的中央 Gitrepo .

是否可以从不同的 Gitrepos 调用这个 Jenkins 文件?有什么例子吗?

4

2 回答 2

10

这是我可以做到的:

我的基本仓库简单地称为远程仓库,如下所示:

#!/usr/bin/env groovy
def jenkinsFile
stage('Loading Jenkins file') {
  jenkinsFile = fileLoader.fromGit('testjenkinsstuff/cicd/testMyPipeline', 'https://github.myorg.com/user/testjenkinsstuff.git', 'master', null, '')
}

jenkinsFile.start()
于 2017-07-11T15:45:45.297 回答
1

回答你的问题是的,这是可能的。为了实现它,必须改变方法(即)据我所知,没有直接的配置可用。

  1. 使用配置为 DevOps 维护的存储库的“来自 SCM 的管道”配置管道作业。
  2. 不要启用“将更改推送到 SCM 时构建”,因为我们配置的 github 存储库与用户/项目 github 存储库不同
  3. 创建一个小的 webhook 脚本并在“GitHub Webhooks”中配置它,因此当有推送(或)任何其他条件时,它会调用相应的 jenkins 作业。
  4. 您的管道脚本应该足以设计“SCM url”。例如:checkout scm:http://github.org.net/${JOB_NAME}.git,这里的 url 是使用 jenkins 作业名称构建的。
  5. 如果必须单独维护任何与项目相关的细节(即)maven/ant/gradle 编译(或)任何其他信息,请使用共享库资源来维护每个项目的硬编码输入。
于 2017-06-27T13:24:12.087 回答