Jenkins.instance.getItem 无法处理文件夹中的作业

Por*_*Man 4 jenkins-groovy jenkins-pipeline

我可以Jenkins.instance.getItem('job_name')在脚本控制台或 Jenkinsfile 中按名称访问作业。

但是我无法为多分支管道或文件夹中的任何其他工作执行此操作。如果我尝试使用项目的全名(包括文件夹),例如 Jenkins.instance.getItem('folder_name/job_name'),我只会得到null结果。

如何访问文件夹中的作业?

Unf*_*631 11

您可以使用getItemByFullName按名称访问作业: Jenkins.instance.getItemByFullName('folder_name/job_name')。在 Jenkinsfile 中使用它可能需要获得批准。这也通过检索构建状态开辟了更多可能性:

def buildName = Jenkins.instance.getItemByFullName('folder_name/job_name')
echo "Last success: ${buildName.getLastSuccessfulBuild()}"
echo "All builds: ${buildName.getBuilds().collect{ it.getNumber()}}"
echo "Last build: ${buildName.getLastBuild()}"
echo "Is building: ${job.isBuilding()}"
Run Code Online (Sandbox Code Playgroud)

但是,所有这些在通过 Jenkinsfile 使用时都可能需要批准。输出例如:

[Pipeline] echo
Last success: folder/job_name #761
[Pipeline] echo
All builds: [767, 766, 765, 764, 763, 762, 761, 760]
[Pipeline] echo
Last build: folder/job_name #767
[Pipeline] echo
Is building: true
Run Code Online (Sandbox Code Playgroud)