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配置代码化

理论上,Jenkins的所有配置都可以通过此方式进行设置

脚本命令行调试

init.groovy脚本是在Jenkins启动时加载执行的,那是不是私说,如果反复调试init.groovy脚本,就需要反复重启Jenkins?当然不用

Jenkins本身提供了一个特性:脚本命令行。通过它,我们可以直接在界面上修改并执行Groovy脚本,而不是重启Jenkins。
1.单机Manage Jenkins-》Script Console
Jenkins配置代码化

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

脚本执行完成后,在命令框的下方输出日志。因为它是直接操作Jenkins实例的,脚本会立即生效,所以在生产环境谨慎用。

上一篇:条件编译的几种格式


下一篇:django 模板语言中的 extends,block 和 include