Jenkins配置代码化
一.简介
Jenkins用久了,会有一种莫名的紧张感。因为没人清楚Jenkins都配置了什么,以至于没人敢动它。
但凡使用界面进行配置的都会有这样的后果。解决办法就是代码配置
2018年年初发布了一款Configuration-as-Code插件,实现了Jenkins Configuration as Code(JCasC)。目前最新版本为1.3.通过JCasC插件,我们使用YAML文件来配置Jenkins。如此,我们就可以对配置进行版本化控制了。
YMAL文件内容如下:
jenkins:
agentProtocols:
- "JNLP4-connect"
disableRememberMe: false
labelString: "master"
mode: NORMAL
numExecutors: 2
primaryView:
list:
includeRegex: "b-.*"
name: "b-project"
quietPeriod: 5
scmCheckoutRetryCount: 2
slaveAgentPort: 0
systemMessage: "system descripte"
views:
- list:
includeRegex: "a-.*"
name: "a-project"
unclassified:
globalvaultconfiguration:
configuration:
vaultCredentialId: "vault-token"
vaultUrl: "http://1.1.1.1:11"
tool:
dockertool:
installations:
- home: "/home/vagrant"
name: "abc"
git:
installations
- home: "git"
name: "Default"
虽然JCasC的设计非常棒,但是它还有很多插件需要适配,生产谨慎用。
二.init.groovy
Jenkins在启动时,会执行$JENKINS_HOME目录下的init.groovy脚本,以及init.groovy.d下的所有Groovy文件。在这些Groovy脚本中,我们可以访问Jenkins实例,并对插件进行配置,从而实现版本化Jenkins的目标。
以下代码示例展示了如何在init.groovy中向Jenkins增加了一个Maven配置
import hudson.model.*;
import jenkins.model.*;
import hudson.tools.*;
import hudson.tasks.Maven.MavenInstaller;
import hudson.tasks.Maven.MavenInstallation;
//取得Jenkins实例
def instance = Jenkins.getInstance()
def mavenVersion = '3.5.2'
//拿到Maven插件在Jenkins中的实例
def mavenTool = instance.getDescriptor("hudson.tasks.Maven")
def mavenInstallations = mavenTool.getInstallations()
def mavenInstaller = new MavenInstaller(mavenVersion)
def installSourceProperty = new installSourceProperty([mavenInstaller])
//配置Maven插件
def name = "jenkins-book-mvn-" + mavenVersion
def maven_list = new MavenInstallation(
name, //name
"", //Home
[installSourceProperty]
)
mavenInstallations += maven_inst
mavenTool.SetInstallations((MavenInstallation[]) mavenInstallations)
mavenTool.save() //保存配置
效果图:

理论上,Jenkins的所有配置都可以通过此方式进行设置
脚本命令行调试
init.groovy脚本是在Jenkins启动时加载执行的,那是不是私说,如果反复调试init.groovy脚本,就需要反复重启Jenkins?当然不用
Jenkins本身提供了一个特性:脚本命令行。通过它,我们可以直接在界面上修改并执行Groovy脚本,而不是重启Jenkins。
1.单机Manage Jenkins-》Script Console

2.在Script Console页面中,填入Groovy脚本,然后单机Run执行按钮。

脚本执行完成后,在命令框的下方输出日志。因为它是直接操作Jenkins实例的,脚本会立即生效,所以在生产环境谨慎用。
Jenkins配置代码化的更多相关文章
- 使用jenkins配置.net mvc网站进行持续集成二
上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. 1.IIS远程发布配置 1.在服务器管 ...
- 使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置
安装Eclipse插件——Buildship 什么是Buildship? Buildship能方便我们通过Eclipse IDE创建和导入Gradle工程,同时还能执行Gradle任务. Eclips ...
- jenkins配置.net mvc网站
jenkins配置.net mvc网站 上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. ...
- Jenkins配置和使用
之前整理了Jenkins的下载和安装过程,有需要的可以参考我的博客,地址: http://www.cnblogs.com/luchangyou/p/5981884.html 接下来整理一下Jenk ...
- jenkins配置自动发送邮件,抄送
1.安装插件.系统管理-安装插件:可选插件:搜索Email Extension 2.设置全局变量.系统管理-系统设置:a.Jenkins Location 设置发送方邮件--- b.Extended ...
- Jenkins 配置邮件通知步骤
Jenkins 配置邮件通知前言 可以在Jenkins 中配置邮件通知,比如在构建失败时发送邮件通知项目组来及时修复问题. Jenkins 邮件通知功能的插件主要包括: Mailer Plugin ( ...
- 【jenkins】jenkins+maven+gitlab+testng,jenkins配置
电脑版本:windows10企业版 jenkins配置: 1.general配置,这里的配置比较简单,基本默认就可以了 2.源码管理 2.1填写git地址,从你的gitlib项目里去找.不会的自行百度 ...
- 环境部署(八):jenkins配置邮件通知
完成基于jenkins的持续集成部署后,任务构建执行完成,测试结果需要通知到相关人员.这篇博客,介绍如何在jenkins中配置邮件通知的方法... 一.安装邮件插件 由于Jenkins自带的邮件功能比 ...
- jenkins配置邮件 -- com.sun.mail.smtp.SMTPSenderFailedException: 550 5.7.1 Client does not have permissions to send as this sender
jenkins配置邮件设置 发送邮件测试时,报错: com.sun.mail.smtp.SMTPSenderFailedException: Client does not have permissi ...
随机推荐
- Android SeekBar 自定义thumb,thumb旋转动画效果
简介 某些音乐播放或者视频播放的界面上,资源还在加载时,进度条的原点(thumb)会显示一个转圈的效果. 资源加载完成后,又切换回静态效果.这个效果增强了用户体验. 一般来说有美术人员负责设计和切图. ...
- Qt Creator 源码学习笔记02,认识框架结构
阅读本文大概需要 6 分钟 在上一篇大概了解了关于Qt Creator 基础知识后[1],本篇先学习下框架基本结构,这样能够清晰的知道这个框架当中包含哪些文件.文件夹.工程文件,这些文件分别代表什么意 ...
- MySQL配置参数innodb_flush_log_at_trx_commit
innodb_flush_log_at_trx_commit 此参数有3个值可设置:0.1.2 0表示每秒刷写一次日志到硬盘,极端情况下MySQL或操作系统挂了最多丢1秒的数据更新 1表示每次事务提交 ...
- UNCTF2020 web writeup
1.Easy_ssrf 给了file_get_contents,直接读取flag即可 2.Easyunserialize 利用点在 构造uname反序列化逃逸即可 3.Babyeval 两个过滤,绕过 ...
- try catch引发的性能优化深度思考
关键代码拆解成如下图所示(无关部分已省略): 起初我认为可能是这个 getRowDataItemNumberFormat 函数里面某些方法执行太慢,从 formatData.replace 到 une ...
- js 鼠标放到图片上放大某一部分效果
动图效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- Codeforces 626G - Raffles(贪心+堆)
题面传送门 考虑对于固定的彩票池 \(i\),我们假设现在押了 \(x\) 张彩票.利用差分的思想,从 \(x\) 张彩票变为 \(x+1\) 张时,期望的变化量 \(\Delta E=\dfrac{ ...
- 监听浏览器tab切换
监听浏览器切屏 为了完成验证用户在切换浏览器tab时进行登录再次认证需求需要监听浏览器切换窗口 if (document.hidden !== undefined) { document.addEve ...
- R语言实战-Part 2笔记
R 语言实战(第二版) part 2 基本方法 -------------第6章 基本图形------------------ #1.条形图 #一般是类别型(离散)变量 library(vcd) he ...
- Redis—怎么查看Linux有没有安装Redis,如何启动Redis
1.检测是否有安装redis-cli和redis-server [root@localhost bin]# whereis redis-cli redis-cli: /usr/bin/redis-cl ...