Groovy 获取 Jenkins 管道脚本路径的脚本
Groovy script to get Jenkins pipeline's script path
我想在 Jenkins 脚本控制台中 运行 一个脚本来检索在 Jenkins 中配置的所有 jobs/pipelines 的 scriptPath 参数。我找到了获取管道名称的方法,但我想要每个管道的 scriptPath 参数。
有线索吗?
所有管道作业都是 org.jenkinsci.plugins.workflow.job.WorkflowJob
的实例,可以使用 Jenkins.instance.getAllItems
函数找到。
一旦找到,每个作业都包含 FlowDefinition
class 的属性,可以通过 getDefinition()
方法访问该属性。管道有两种定义:
CpsFlowDefinition
- 对于定义内联脚本(非 SCM)的管道,可通过 getScript()
方法访问该脚本。
CpsScmFlowDefinition
- 对于定义 SCM 脚本的管道,可通过 getScriptPath()
方法访问该脚本。
因此,为了实现您想要的效果,您可以查看相关工作并提取相关属性:
def pipelineJobs =Jenkins.instance.getAllItems(org.jenkinsci.plugins.workflow.job.WorkflowJob)
def scmJobs = pipelineJobs.findAll { it.definition =~ 'CpsScmFlowDefinition'}
scmJobs.each {
println "Pipeline Name: ${it.name}"
println "SCM Script Path: ${it.definition.scriptPath}"
}
如果您的所有作业 都是 SCM 管道,您可以使用以下单衬里:
Jenkins.instance.getAllItems(org.jenkinsci.plugins.workflow.job.WorkflowJob)*.definition.scriptPath
对于单个特定作业,您可以使用:
Jenkins.instance.getItemByFullName("<PIPELINE_NAME>").definition.scriptPath // or just script for inline definition
我想在 Jenkins 脚本控制台中 运行 一个脚本来检索在 Jenkins 中配置的所有 jobs/pipelines 的 scriptPath 参数。我找到了获取管道名称的方法,但我想要每个管道的 scriptPath 参数。
有线索吗?
所有管道作业都是 org.jenkinsci.plugins.workflow.job.WorkflowJob
的实例,可以使用 Jenkins.instance.getAllItems
函数找到。
一旦找到,每个作业都包含 FlowDefinition
class 的属性,可以通过 getDefinition()
方法访问该属性。管道有两种定义:
CpsFlowDefinition
- 对于定义内联脚本(非 SCM)的管道,可通过getScript()
方法访问该脚本。CpsScmFlowDefinition
- 对于定义 SCM 脚本的管道,可通过getScriptPath()
方法访问该脚本。
因此,为了实现您想要的效果,您可以查看相关工作并提取相关属性:
def pipelineJobs =Jenkins.instance.getAllItems(org.jenkinsci.plugins.workflow.job.WorkflowJob)
def scmJobs = pipelineJobs.findAll { it.definition =~ 'CpsScmFlowDefinition'}
scmJobs.each {
println "Pipeline Name: ${it.name}"
println "SCM Script Path: ${it.definition.scriptPath}"
}
如果您的所有作业 都是 SCM 管道,您可以使用以下单衬里:
Jenkins.instance.getAllItems(org.jenkinsci.plugins.workflow.job.WorkflowJob)*.definition.scriptPath
对于单个特定作业,您可以使用:
Jenkins.instance.getItemByFullName("<PIPELINE_NAME>").definition.scriptPath // or just script for inline definition