一.简介

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配置代码化的更多相关文章

  1. 使用jenkins配置.net mvc网站进行持续集成二

    上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. 1.IIS远程发布配置 1.在服务器管 ...

  2. 使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置

    安装Eclipse插件——Buildship 什么是Buildship? Buildship能方便我们通过Eclipse IDE创建和导入Gradle工程,同时还能执行Gradle任务. Eclips ...

  3. jenkins配置.net mvc网站

    jenkins配置.net mvc网站 上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. ...

  4. Jenkins配置和使用

    之前整理了Jenkins的下载和安装过程,有需要的可以参考我的博客,地址:   http://www.cnblogs.com/luchangyou/p/5981884.html 接下来整理一下Jenk ...

  5. jenkins配置自动发送邮件,抄送

    1.安装插件.系统管理-安装插件:可选插件:搜索Email Extension 2.设置全局变量.系统管理-系统设置:a.Jenkins Location 设置发送方邮件--- b.Extended ...

  6. Jenkins 配置邮件通知步骤

    Jenkins 配置邮件通知前言 可以在Jenkins 中配置邮件通知,比如在构建失败时发送邮件通知项目组来及时修复问题. Jenkins 邮件通知功能的插件主要包括: Mailer Plugin ( ...

  7. 【jenkins】jenkins+maven+gitlab+testng,jenkins配置

    电脑版本:windows10企业版 jenkins配置: 1.general配置,这里的配置比较简单,基本默认就可以了 2.源码管理 2.1填写git地址,从你的gitlib项目里去找.不会的自行百度 ...

  8. 环境部署(八):jenkins配置邮件通知

    完成基于jenkins的持续集成部署后,任务构建执行完成,测试结果需要通知到相关人员.这篇博客,介绍如何在jenkins中配置邮件通知的方法... 一.安装邮件插件 由于Jenkins自带的邮件功能比 ...

  9. 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 ...

随机推荐

  1. [源码解析] PyTorch分布式(5) ------ DistributedDataParallel 总述&如何使用

    [源码解析] PyTorch 分布式(5) ------ DistributedDataParallel 总述&如何使用 目录 [源码解析] PyTorch 分布式(5) ------ Dis ...

  2. python 函数的定义及调用语法,map 方法,函数嵌套递归

    1.什么是函数    开发程序时候,需要代码执行多次,为了提高编写效率及代码重用性,所以把具有独立功能的代码块组织为一个小模块,给这个功能一个名称,这就是函数.    函数可以使用系统自带的函数也可以 ...

  3. [atARC084D]Small Multiple

    构造一张图:$\forall x$,向$10x$连一条边权为0的边,向$x+1$连1条边权为1的边,那么0到$i$的代价即为$i$各位数字之和 考虑到我们只关心于当前点的两个特征:1.模$n$的余数( ...

  4. rocketmq 精华

    (ps:)通过本人语雀文档阅读体验更好哦--有目录 介绍 rocket mq 翻译成中文就是火箭消息队列,从名字就可以看出来,它是一个很快的消息队列... rocket mq 是 阿里巴巴研制的后面贡 ...

  5. 面试官又整新活,居然问我for循环用i++和++i哪个效率高?

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 前几天,一个小伙伴告诉我,他在面试的时候被面试官问了这么一个问题: 在for循环中,到底应该用 i++ 还是 ++i ? 听到这,我感觉这面试官 ...

  6. Glib 对 C 函数进行单元测试

    1. Glib 单元测试框架 Glib 为单元测试提供了一套完整的测试框架,每个测试运行包括以下几个部分 测试数据结构 测试 setup 与 teardown 函数 测试函数 2. 单元测试数据结构 ...

  7. 46.Valid Parentheses

    Valid Parentheses My Submissions QuestionEditorial Solution Total Accepted: 106346 Total Submissions ...

  8. Excel-计算年龄、工龄 datedif()

    函数名称:DATEDIF 主要功能:计算返回两个日期参数的差值. 使用格式:=DATEDIF(date1,date2,"y").=DATEDIF(date1,date2," ...

  9. 什么是DDL,DML,DCL

    转载自  https://www.2cto.com/database/201610/555167.html DML.DDL.DCL区别 . 总体解释: DML(data manipulation la ...

  10. (转载)SQL Server 2008 连接JDBC详细图文教程

    点评:SQL Server 2008是目前windows上使用最多的sql数据库,2008的安装机制是基于framework重写的,特点是非常耗时间SQL Server 2008是目前windows上 ...