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

从另一个jenkins文件调用远程jenkins文件,jenkins,jenkins-pipeline,jenkins-2,Jenkins,Jenkins Pipeline,Jenkins 2,我正在我的公司设计Jenkins CICD管道,我有一个问题 我来自devops团队,该团队控制多个开发团队的Jenkins管道。我基本上想编写一个Jenkins文件,其中包含多个阶段,可以由多个团队运行。我知道这个Jenkins文件可以签入每个团队的Gitrepo中,一旦代码repo发生更改,它就可以调用完整的管道 为了确保这个Jenkins文件是可维护的,并且对于这个Jenkins文件将来的任何更改,我不必要求所有的团队在他们的Gitrepo中更新这个文件,我想把这个文件放在一个由我的团队控

我正在我的公司设计Jenkins CICD管道,我有一个问题

我来自devops团队,该团队控制多个开发团队的Jenkins管道。我基本上想编写一个Jenkins文件,其中包含多个阶段,可以由多个团队运行。我知道这个Jenkins文件可以签入每个团队的Gitrepo中,一旦代码repo发生更改,它就可以调用完整的管道

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


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

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

  • 配置管道作业,将“来自SCM的管道”配置为DevOps维护的repo
  • 不要启用“将更改推送到SCM时生成”,因为我们配置的github repo与用户/项目github repo不同
  • 创建一个小的webhook脚本,并在“GitHub Webhooks”中配置它,因此当存在推送(或)任何其他条件时,它会调用相应的jenkins作业
  • 您的管道脚本应该能够设计“SCM url”。对于ex:checkout scm:${JOB_NAME}.git,这里的url是使用jenkins作业名构建的
  • 如果必须单独维护任何项目相关细节(即maven/ant/gradle编译(或)任何其他信息),请利用资源维护每个项目的硬编码输入

  • 我可以这样做:

    我的基本回购协议简称为远程回购协议,如下所示:

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

    如果我需要将参数传递给Jenkinsfile脚本。我该怎么做?有相关文档吗?@Ishu Gupta-如果你有时间的话,你能给我提一个类似的问题吗?我觉得有一点很重要,那就是远程加载管道只有在你安装这个Jenkins插件时才有效: