Jenkins任务批量修改的技巧分享

2025-05-29 0 81

通过脚本命令行批量修改 jenkins 任务

最近,笔者所在团队的 jenkins 所在的服务器经常报硬盘空间不足。经查发现很多任务没有设置“丢弃旧的构建”。通知所有的团队检查自己的 jenkins 任务有没有设置丢弃旧的构建,有些不现实。

一开始想到的是使用 jenkins的 api 来实现批量修改所有的 jenkins 任务。笔者对这个解决方案不满意,经 google 发现有同学和我遇到了同样的问题。他使用的更“技巧”的方式:在 jenkins 脚本命令行中,通过执行 groovy 代码操作 jenkins 任务

总的来说,就两步:

进入菜单:系统管理 –> 脚本命令行

在输入框中,粘贴如下代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24
import jenkins.model.jenkins

import hudson.model.job

import jenkins.model.builddiscarderproperty

import hudson.tasks.logrotator

// 遍历所有的任务

jenkins.instance.allitems(job).each { job ->

if ( job.isbuildable() && job.supportslogrotator() && job.getproperty(builddiscarderproperty) == null) {

println " \\"${job.fulldisplayname}\\" 处理中"

job.addproperty(new builddiscarderproperty(new logrotator (2, 10, 2, 10)))

println "$job.name 已更新"

}

}

return;

/**

logrotator构造参数分别为:

daystokeep: if not -1, history is only kept up to this days.

numtokeep: if not -1, only this number of build logs are kept.

artifactdaystokeep: if not -1 nor null, artifacts are only kept up to this days.

artifactnumtokeep: if not -1 nor null, only this number of builds have their artifacts kept.

**/

脚本

脚本命令行介绍

脚本命令行(jenkins script console),它是 jenkins 的一个特性,允许你在 jenkins master 和 jenkins agent 的运行时环境执行任意的 groovy 脚本。这意味着,我们可以在脚本命令行中做任何的事情,包括关闭 jenkins,执行操作系统命令 rm -rf /(所以不能使用 root 用户运行 jenkins agent)等危险操作。

除了上文中的,使用界面来执行 groovy 脚本,还可以通过 jenkins http api:/script执行。具体操作,请参考 官方文档。

问题:代码执行完成后,对任务的修改有没有被持久化?

当我们代码job.addproperty(new builddiscarderproperty(new logrotator (2, 10, 2, 10)))执行后,这个修改到底有没有持久化到文件系统中呢(jenkins 的所有配置默认都持久化在文件系统中)?我们看下 hudson.model.job 的源码,在addproperty方法背后是有进行持久化的:

?

1

2

3

4

5
public void addproperty(jobproperty<? super jobt> jobprop) throws ioexception {

((jobproperty)jobprop).setowner(this);

properties.add(jobprop);

save();

}

小结

本文章只介绍了批量修改“丢弃旧的构建”的配置,如果还希望修改其它配置,可以参考 hudson.model.job 源码。
不得不提醒读者朋友,jenkins 脚本命令行是一把双刃剑,大家操作前,请考虑清楚影响范围。如果有必要,请提前做好备份。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对快网idc的支持。

原文链接:http://dockone.io/article/8633

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Jenkins任务批量修改的技巧分享 https://www.kuaiidc.com/109812.html

相关文章

发表评论
暂无评论