介绍
设置Jenkins是一必威国际有限公司个复杂的过程,因为Jenkins和它的插件都需要一些调整和配置,需要在web UI中设置几十个参数管理
部分。
有经验的Jenkins用必威国际有限公司户依赖于groovy初始化脚本来定制Jenkins并执行所需的状态。这些脚本直接调用Jenkins API,因此可以做任何事情(必威国际有限公司风险由您自己承担)。但它们也要求您了解Jenkins内部,并有信心在Jenkins AP必威国际有限公司I之上编写groovy脚本。
配置代码插件是一个固执己见的基于人类可读的声明式配置文件来配置必威国际有限公司Jenkins。编写这样的文件应该是可行的,而不是詹金斯专家,只是翻译成必威国际有限公司代码用于在web UI中执行的配置过程。
下面的配置文件包括主Jenkins安装的各种组件的根条目。必威国际有限公司的必威国际有限公司
一个用于根Jenkins对象,另一个用于必威国际有限公司不同的全局配置元素。
必威国际有限公司:systemMessage:"必威国际有限公司詹金斯配置自动由詹金斯配置代码插件\ n \ n"globalNodeProperties: -envVars:env: -关键:VARIABLE1价值:喷火-关键:VARIABLE2价值:酒吧securityRealm:ldap:配置: -groupMembershipStrategy:fromUserRecord:attributeName:"memberOf"inhibitInferRootDN:假rootDN:"dc = acme, dc = org"服务器:"ldap: / / ldap.acme.org: 1636"节点: -永久:的名字:"static-agent"remoteFS:"/home/必威国际有限公司jenkins"发射器:jnlp:workDirSettings:禁用:真正的failIfWorkDirIsMissing:假internalDir:"远程"workDirPath:"/ tmp"slaveAgentPort:50000agentProtocols: -"jnlp2"工具:git:安装: -的名字:git首页:/usr/local/bin/git凭证:系统:domainCredentials: -凭证: -basicSSHUserPrivateKey:范围:系统id:ssh_with_passphrase_provided用户名:ssh_root密码:$ {SSH_KEY_PASSWORD}描述:"SSH密码与私钥文件。提供私钥"privateKeySource:directEntry:privateKey:$ {SSH_PRIVATE_KEY}
此外,我们希望有一个文档化良好的语法文件和工具来帮助编写和测试,这样最终用户就可以在使用这个工具集时得到完整的指导,而不必在Internet上搜索示例。
看到演示文稿的幻灯片来自DevOps World - Jen必威国际有限公司kins World 2018的概述。
开始
首先,使用必威国际有限公司配置代码插件安装。
其次,插件查找CASC_必威国际有限公司JENKINS_CONFIG
环境变量。该变量指向一个以逗号分隔的列表,其中包含以下任意一个:
- 到包含一组配置文件的文件夹的路径。例如,
/var/必威国际有限公司jenkins_home / casc_configs
. - 一个文件的完整路径。例如,
/var/必威国际有限公司jenkins_home / casc_configs / jenkins.yaml
. - 指向web上服务的文件的URL。例如,
https://acme.org/必威国际有限公司jenkins.yaml
.
如果一个元素CASC_必威国际有限公司JENKINS_CONFIG
指向一个文件夹,插件将递归遍历该文件夹,以找到包含.yml、.yaml、.yaml、。YML后缀。它将排除隐藏文件或包含隐藏文件夹的文件任何部分完整路径的。它遵循文件和目录的符号链接。
排斥的例子
CASC_必威国际有限公司JENKINS_CONFIG = / jenkins / casc_configs
/必威国际有限公司 jenkins casc_configs / jenkins.yaml
/必威国际有限公司 jenkins casc_configs / dir1 / config.yaml
/必威国际有限公司 jenkins casc_configs / .dir1 / config.yaml
/必威国际有限公司 jenkins casc_configs / . . dir2 / config.yaml
CASC_必威国际有限公司JENKINS_CONFIG = / jenkins / config / casc_configs
包含隐藏文件夹config
詹必威国际有限公司金斯/ config / casc_configs / jenkins.yaml
/必威国际有限公司 jenkins / config / casc_configs / dir1 / config.yaml
/必威国际有限公司 jenkins / config / casc_configs / .dir1 / config.yaml
/必威国际有限公司 jenkins / config / casc_configs / . . dir2 / config.yaml
发现的所有配置文件必须是补充的。它们不能覆盖彼此的配置值。这就产生了冲突,引发了ConfiguratorException
.因此,遍历的顺序与最终结果无关。
而不是设置CASC_必威国际有限公司JENKINS_CONFIG
环境变量,也可以使用casc.必威国际有限公司jenkins.config
Java属性。当通过包管理工具安装Jenkins并且不能在包管理文件之外设置必威国际有限公司环境变量时,这很有用,因为更新可能会覆盖环境变量。对于RHEL/CentOS系统,可以在必威国际有限公司JENKINS_JAVA_OPTIONS
进入/etc/sysconfig/必威国际有限公司jenkins
-Dcasc.必威国际有限公司jenkins.config = / jenkins / casc_configs
如果不设置CASC_必威国际有限公司JENKINS_CONFIG
环境变量或casc.必威国际有限公司jenkins.config
属性,插件将默认查找单个配置文件$必威国际有限公司 JENKINS_HOME / jenkins.yaml
.
如果设置正确,您应该能够浏览“配置为代码”页面管理詹金斯必威国际有限公司
->配置代码
.
初始配置
在配置第一个Jenkins实例时,请浏览必威国际有限公司演示该存储库的目录。如果你有一个没有例子的插件,请参考帮助文档。单击文档
链接位于“配置为代码”页面底部。
如果你想配置一个特定的插件,搜索这个插件的名字。该页面将显示哪个根元素属于该配置。大多数已安装的插件属于不保密的
根元素。
例子
看到演示文件夹与各种样品。
LDAP
将LDAP的基于用户界面的配置替换为基于文本的配置。
必威国际有限公司:securityRealm:ldap:配置: -groupMembershipStrategy:fromUserRecord:attributeName:"memberOf"inhibitInferRootDN:假rootDN:"dc = acme, dc = org"服务器:"ldap: / / ldap.acme.org: 1636"
Yaml别名和锚
用yaml锚替换重复的元素。锚键必须以x -
因为JCasC处理未知的根元素。
x-必威国际有限公司jenkins-linux-node:&必威国际有限公司jenkins_linux_node_anchorremoteFS:"/home/必威国际有限公司jenkins"发射器:jnlp:workDirSettings:禁用:真正的failIfWorkDirIsMissing:假internalDir:"远程"workDirPath:"/ tmp"必威国际有限公司:节点: -永久:的名字:"static-agent1"<<:*必威国际有限公司 jenkins_linux_node_anchor-永久:的名字:"static-agent2"<<:*必威国际有限公司 jenkins_linux_node_anchor
生成两个永久代理节点,也可以这样写。
必威国际有限公司:节点: -永久:的名字:"static-agent1"remoteFS:"/home/必威国际有限公司jenkins"发射器:jnlp:workDirSettings:禁用:真正的failIfWorkDirIsMissing:假internalDir:"远程"workDirPath:"/ tmp"-永久:的名字:"static-agent2"remoteFS:"/home/必威国际有限公司jenkins"发射器:jnlp:workDirSettings:禁用:真正的failIfWorkDirIsMissing:假internalDir:"远程"workDirPath:"/ tmp"
安装插件
我们不支持使用JCasC安装插件,所以你需要使用其他工具,
Dockers用户可以使用:
https://github.com/必威国际有限公司jenkinsci/docker/#preinstalling-plugins
Kubernetes用户:
https://github.com/必威国际有限公司jenkinsci/helm-charts
支持插件
大多数插件应该支持开箱即用,或者可能需要一些最小的更改。看到这个指示板已知的兼容性问题。
向插件添加JCasC支持
希望在插件中支持JCasC的插件开发人员应该这样做请查看我们的操作指南.
Configuration-as-Code扩展插件
- configuration-as-code-groovy-plugin
允许指定在配置期间运行的groovy代码。
必威国际有限公司詹金斯增强方案
由于配置代码在Jenkins社区中被证明是一个非常受欢迎的主题,我们已经发布了必威国际有限公司中201作为Jenkins项目的一个标准组成部分。必威国际有限公司这个建议被接受了。