在另一个jenkinsfile中运行外部jenkinsfile

时间:2019-11-15 07:09:20

标签: jenkins jenkins-pipeline

假设我在单独的git repo中存储了“全局” Jenkinsfile,在其中定义了所有管道可能要使用的所有可能阶段。其中一些步骤位于if语句中,以便有可能在需要时跳过它们。 有没有机会在我的项目中创建包含此全局jenkinsfile的专用Jenkinsfile并传递一些参数?

感谢前进。

2 个答案:

答案 0 :(得分:2)

JenkinsSharedLibrary提供了在管道中调用某些方法的可能性。因此,执行这些条件管道步骤的最佳方法是在Closures中定义您的阶段,然后根据您的Jenkinsfile中的要求调用这些Closures。

在共享库中定义的示例关闭:

//Closure which defines Groovy or Jenkins Pipeline DSL to be executed
Closure javaBuildStage = {
  stage('Build Java') {
    echo "This is the build stage for Java apps"
    sh("./mvn clean package")
  }
}

示例Jenkinsfile:

@Library('YourSharedLibrary@master')
if(project == "java"){
  javaBuildStage()
}

您可以使用Jenkins共享库分散所有功能。詹金斯共享图书馆将位于Git存储库中。

答案 1 :(得分:0)

要为所有存储库触发相同的Jenkins文件,可以使用远程文件插件。 有关详细信息,您可以检查此答案 https://stackoverflow.com/a/58877133/6110485