如何获取Jenkins作业可用的非全局托管文件?
解决Jenkins获取工作区/命名空间特定托管文件的问题
你提到的getConfigsInContext()并非可直接调用的静态方法,要获取作业所在工作区/命名空间的非全局托管文件,需要结合Jenkins的上下文对象实现,具体方案如下:
实现步骤
- 获取当前作业所属的上下文容器(比如文件夹、命名空间)
- 调用对应方法筛选该容器下的托管文件,排除全局文件
代码示例
// 获取当前作业对象 def currentJob = Jenkins.get().getItemByFullName(env.JOB_NAME) // 获取作业所在的父容器(即对应的文件夹/命名空间) def context = currentJob.getParent() // 获取该上下文范围内的所有托管文件 def allContextFiles = org.jenkinsci.plugins.configfiles.ConfigFiles.get().getConfigsInContext(context) // 过滤出非全局文件(全局文件的context为null) def nonGlobalFiles = allContextFiles.findAll { it.getConfig().getContext() != null }
补充优化
如果需要仅获取当前作业专属的托管文件(不包含继承自上级容器的文件),可以进一步过滤:
def jobSpecificFiles = allContextFiles.findAll { it.getConfig().getContext() == context }
注意:确保执行代码的Jenkins用户拥有对应文件夹/命名空间的托管文件访问权限,否则会返回空列表。
内容的提问来源于stack exchange,提问作者Comodo3003
相关产品推荐
相关产品推荐

