gpt4 book ai didi

jenkins - 如何以编程方式列出 jenkins 作业脚本路径

转载 作者:行者123 更新时间:2023-12-04 11:45:38 28 4
gpt4 key购买 nike

我想创建一个在 jenkins 控制台上运行的 groovy 脚本,以列出作业定义以及使用的存储库和脚本路径(jenkinsfile),输出如下:

作业名称 -> git 仓库 -> 脚本路径

到目前为止,我能够列出作业名称和 git 存储库,但找不到获取脚本路径的方法。它似乎没有包含在 GitSCM 插件中,但我找不到通过 WorkflowJob 获取它的方法。这是我当前的代码:

Jenkins.instance.getAllItems(Job.class).each{
jobName = it.getName()
if(it instanceof FreeStyleProject){
return
}
scm = it.getTypicalSCM();
if (scm instanceof hudson.plugins.git.GitSCM) {
scm.getRepositories().each{
it.getURIs().each{
println(jobName +"-> "+ it.toString());
}
}
}
}

如何检索脚本路径?

最佳答案

我找到了一种检索脚本路径的方法。我已经测试了 工作流工作 .如果是本地脚本,则以下代码打印脚本本身,如果是远程脚本,则打印路径:

Jenkins.instance.getAllItems(Job) { job ->
if(job instanceof WorkflowJob) {
if(job.getDefinition() instanceof org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition) {
println("Local script: ")
println(job.getDefinition().getScript())
}
else {
println("Remote script path: " + job.getDefinition().getScriptPath())
}
}
}
对于 自由式项目 可以做这样的事情:
   import hudson.tasks.Shell
...
if(job instanceof hudson.model.FreeStyleProject) {
println("Script: ")
job.builders.findAll { it in Shell }.collect { shell -> println(shell.command) }
}
我仍然没有找到多分支管道的方法,但是因为它们是由 组成的工作流工作 s,一些额外的努力可能会得到想要的结果。
注意:而不是使用 getScriptPath() 函数,属性 脚本路径 也可以使用。有时 job.getDefinition() 返回 类型的对象SCMBinder ,它没有 getScriptPath() 方法,但可以在那里使用该属性。

关于jenkins - 如何以编程方式列出 jenkins 作业脚本路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59254916/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com