You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Jenkins Job DSL向已有嵌套视图添加新视图?

Jenkins Job DSL 向已有嵌套视图添加新视图的解决方案

默认情况下,Job DSL的nestedView块会直接替换整个嵌套视图的内容,这就是你第二次执行脚本时原有视图被覆盖的原因。要实现追加新视图而非替换,需要先获取已存在的嵌套视图实例,再向其中添加子视图。

具体实现代码

// 目标嵌套视图名称
def targetNestedViewName = 'my-nested-view'
// 要添加的新SectionedView名称
def newViewName = 'automated-view2'

// 获取已存在的嵌套视图
def nestedView = Jenkins.instance.getView(targetNestedViewName)

if (nestedView) {
    // 检查新视图是否已存在,避免重复创建
    if (!nestedView.getView(newViewName)) {
        // 创建新的SectionedView实例
        def newSectionedView = new SectionedView(newViewName)
        // 配置新视图的规则(示例:包含所有任务)
        newSectionedView.includeRegex('.*')
        // 可根据需求添加更多配置,比如分组、布局等
        
        // 将新视图添加到嵌套视图
        nestedView.addView(newSectionedView)
        // 保存视图配置
        nestedView.save()
    }
} else {
    // 如果嵌套视图不存在,先创建并添加初始视图
    nestedView(targetNestedViewName) {
        views {
            sectionedView('automated-view1') {
                includeRegex('.*')
            }
        }
    }
}

关键注意事项

  • 确保执行脚本的Jenkins账号拥有视图配置修改权限
  • 不同类型的子视图(如ListView、BuildPipelineView)需替换对应的类(比如new ListView('new-list-view'))
  • 可通过循环批量添加多个子视图,只需遍历视图名称列表重复执行创建和添加步骤

内容的提问来源于stack exchange,提问作者Vivek Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:32:08