从另一个 Jenkinsfile 调用远程 jenkins 文件
Invoke a remote jenkins file from another Jenkinsfile
我正在我的组织中设计 Jenkins CICD 管道,我有以下问题。
我来自 devops 团队,负责为多个开发团队控制 Jenkins 管道。我基本上想编写一个具有多个阶段的 Jenkins 文件,可以由多个团队运行。我知道这个 Jenkins 文件可以签入每个团队的 Gitrepo,一旦对代码库进行更改,它就可以调用完整的管道。
为了确保这个 JenkinsFile 是可维护的,并且对于这个 Jenkins 文件的任何未来更改,我不必要求所有不同的团队在他们的 Gitrepo 中更新这个文件,我想把这个文件放在一个中央 Gitrepo 中由我的团队控制。
是否可以从不同的 Gitrepos 调用这个 Jenkins 文件?有例子吗?
回答你的问题是的,这是可能的。为了实现它,必须改变方法(即)根据我的理解,没有可用的直接配置。
- 使用 “来自 SCM 的管道” 配置管道作业,配置为 DevOps 维护的存储库。
- 不启用 “当更改推送到 SCM 时构建” 因为我们配置 github 存储库不同于 user/project github 存储库
- 创建一个小的 webhook 脚本并在“GitHub Webhooks”中配置它,因此当有推送(或)任何其他条件时它会调用相应的 jenkins 作业。
- 您的管道脚本应该足以设计“SCM url”。例如:
checkout scm:http://github.org.net/${JOB_NAME}.git
,此处 url 是使用 jenkins 作业名称构建的。
- 如果必须单独维护任何与项目相关的详细信息(即)maven/ant/gradle 编译(或)任何其他信息,请使用 Shared Library 资源来维护每个项目的硬编码输入。
以下是我的做法:
我的 Base 仓库只是像这样调用了一个远程仓库:
#!/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()
我正在我的组织中设计 Jenkins CICD 管道,我有以下问题。
我来自 devops 团队,负责为多个开发团队控制 Jenkins 管道。我基本上想编写一个具有多个阶段的 Jenkins 文件,可以由多个团队运行。我知道这个 Jenkins 文件可以签入每个团队的 Gitrepo,一旦对代码库进行更改,它就可以调用完整的管道。
为了确保这个 JenkinsFile 是可维护的,并且对于这个 Jenkins 文件的任何未来更改,我不必要求所有不同的团队在他们的 Gitrepo 中更新这个文件,我想把这个文件放在一个中央 Gitrepo 中由我的团队控制。
是否可以从不同的 Gitrepos 调用这个 Jenkins 文件?有例子吗?
回答你的问题是的,这是可能的。为了实现它,必须改变方法(即)根据我的理解,没有可用的直接配置。
- 使用 “来自 SCM 的管道” 配置管道作业,配置为 DevOps 维护的存储库。
- 不启用 “当更改推送到 SCM 时构建” 因为我们配置 github 存储库不同于 user/project github 存储库
- 创建一个小的 webhook 脚本并在“GitHub Webhooks”中配置它,因此当有推送(或)任何其他条件时它会调用相应的 jenkins 作业。
- 您的管道脚本应该足以设计“SCM url”。例如:
checkout scm:http://github.org.net/${JOB_NAME}.git
,此处 url 是使用 jenkins 作业名称构建的。 - 如果必须单独维护任何与项目相关的详细信息(即)maven/ant/gradle 编译(或)任何其他信息,请使用 Shared Library 资源来维护每个项目的硬编码输入。
以下是我的做法:
我的 Base 仓库只是像这样调用了一个远程仓库:
#!/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()