从另一个Jenkinsfile调用远程jenkins文件

时间:2017-06-26 18:29:29

标签: jenkins jenkins-pipeline jenkins-2

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

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

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

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

2 个答案:

答案 0 :(得分:7)

我是如何做到的:

My Base repo简单地称这样的远程回购:

#!/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()

答案 1 :(得分:1)

回答你的问题是可能的。要实现它必须改变方法(即)根据我的理解,没有直接的配置可用。

  1. 配置管道作业,并将“Pipeline from SCM”配置为DevOps维护仓库。
  2. 当我们配置的github repo与用户/项目github repo不同时,不要启用“将更改推送到SCM时构建”
  3. 创建一个小的webhook脚本并在“GitHub Webhooks”中对其进行配置,因此当有推送(或)任何其他cond时,它会调用相应的jenkins作业。
  4. 您的管道脚本应该足以设计“SCM网址”。例如:checkout scm:http://github.org.net/ $ {JOB_NAME} .git,此处url是使用jenkins作业名称构建的。
  5. 如果必须单独维护任何项目相关细节(即)maven / ant / gradle编译(或)任何其他信息,请使用Shared Library资源来维护每个项目的硬编码输入。