如何用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
相关产品推荐
相关产品推荐

