Jenkins批量复制旧视图的job到新视图

本文介绍了一种使用Groovy脚本在Jenkins中批量复制构建任务(job)到新视图的方法,通过修改源视图中的job名称并将其添加到目标视图,避免了手动重复操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jenkins新建视图后需要一个个重复复制旧视图中的job比较麻烦,找了一个脚本,尝试后会报异常,因此修改了下代码,如下:

import hudson.model.*
	//源view
	def str_view = "test-sextant-dev"
	//目标view
	def str_new_view = "test"
	//源job名称(模糊匹配)
	def str_search = "sextant-"
	//目标job名称(模糊匹配后替换)
	def str_replace = "zzzzzzzzzz-"
	def view = Hudson.instance.getView(str_view)
	//copy all projects of a view
	for(item in view.getItems())
	{
	  //跳过未模糊匹配到的构建 任务
      if (!item.getName().contains(str_search)) {
      // 说明文字,表示跳过未匹配到的job,可加可不加
	//   println("but $item.name ignore ")
        continue
      }
      //create the new project name
	  newName = item.getName().replace(str_search, str_replace)
	  // copy the job, disable and save it
	  def job
	  try {
	  	//因为第一次导入后报错,所以添加了try-catch 跳过已存在的job
	  	job = Hudson.instance.copy(item, newName)
	  } catch(IllegalArgumentException e) {
//	     println(e.toString())
	     println("$newName job is exists")
	     continue
	  } catch(Exception e) {
	    println(e.toString())
	    continue
	  }
	  job.disabled = true
	  job.save() 
	  
	  // update the workspace to avoid having two projects point to the same location
	  //下面开启后会报错,原因是groovy不用重新创建对象,注释后正常
	  //AbstractProject project = job
	  //def new_workspace = project.getCustomWorkspace().replace(str_search, str_replace)
	  //project.setCustomWorkspace(new_workspace)
	  //project.save()
	  
	  //add job to view
	  Hudson.instance.getView(str_new_view).add(job)
	  println(" $item.name copied as $newName is success")
	}


效果如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,批量复制完成!

另外,如果不打算批量的话,可以参照下面的方法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,单独复制job到新视图已经完成!

参考:Clone all projects in a View
https://blog.csdn.net/weixin_42233723/article/details/89410076?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

### Jenkins 视图配置及管理方式 #### 1. 默认视图 Jenkins 默认仅提供一个名为 **All** 的视图[^3]。然而,在实际生产环境中,这种单一视图的方式显然无法满足复杂的项目需求。因此,通常需要通过插件或其他方式进行自定义视图的创建和管理。 #### 2. 插件支持的视图类型 为了更好地管理和分类 Jenkins 中的任务 (Job),可以利用多种类型的视图来实现更高效的组织结构: - **Dashboard View**: 这是一种增强型视图,能够按照特定条件(如环境、业务模块等)划分任务集合。它适用于复杂的企业级应用场景。 - **List View**: 此类视图是最常用的视图形式之一,主要用于将属于同一业务逻辑下的 Job 集合到一起进行展示和操作[^4]。例如,可为每个独立的应用程序或者服务单独建立 List View 来存储其对应的构建任务。 #### 3. 创建新视图的方法 以下是具体的新建视图流程说明: 进入 Jenkins 主界面后点击左侧菜单栏中的 “New View”,随后会弹出对话框让用户输入新的视图名称并选择合适的视图种类(比如上述提到过的 Dashboard 或者 List 类型)。完成基本信息填写之后即可成功添加一个新的视图实例供后续使用。 #### 4. 使用 `update_view.zip` 增强视图功能 对于希望进一步提升工作效率以及改善用户体验的团队来说,“update_view.zip” 提供了一系列额外的功能特性[^2],其中包括但不限于以下几个方面: - 批量触发关联作业的能力; - 更加灵活便捷的参数化设置选项; - 加强与其他 Jenkins 组件之间的互操作性和稳定性保障; 这些改进措施使得整个 CI/CD 流程变得更加顺畅高效的同时也降低了维护成本和技术门槛。 #### 5. 配置 Jenkinsfile 实现自动化管道定义 除了传统的 GUI 方式外,还可以借助于声明式的 Pipeline Script 文件即所谓的 Jenkinsfile 来描述完整的持续交付过程[^1]。这种方式不仅有助于版本控制而且还能促进协作开发模式的发展壮大——因为所有的变更记录都会被纳入 SCM 系统之中从而方便追踪溯源。 ```groovy pipeline { agent any stages { stage('Build') { steps { echo 'Building..' } } stage('Test') { steps { echo 'Testing...' } } stage('Deploy') { steps { echo 'Deploying....' } } } } ``` 以上脚本片段展示了如何用 Groovy 编写基本的三阶段 pipeline 结构:build -> test -> deploy。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值