配置代码

ID:configuration-as-code

构建状态"data-canonical-src=特拉维斯"data-canonical-src=贡献者"data-canonical-src=Codacy徽章"data-canonical-src=必威国际有限公司詹金斯插件"data-canonical-src=GitHub释放"data-canonical-src=必威国际有限公司詹金斯插件安装"data-canonical-src=git"data-canonical-src=

介绍

设置Jenkins是一必威国际有限公司个复杂的过程,因为Jenkins和它的插件都需要一些调整和配置,需要在web UI中设置几十个参数管理部分。

有经验的Jenkins用必威国际有限公司户依赖于groovy初始化脚本来定制Jenkins并执行所需的状态。这些脚本直接调用Jenkins API,因此可以做任何事情(必威国际有限公司风险由您自己承担)。但它们也要求您了解Jenkins内部,并有信心在Jenkins AP必威国际有限公司I之上编写groovy脚本。

配置代码插件是一个固执己见的基于人类可读的声明式配置文件来配置必威国际有限公司Jenkins。编写这样的文件应该是可行的,而不是詹金斯专家,只是翻译成必威国际有限公司代码用于在web UI中执行的配置过程。

下面的配置文件包括主Jenkins安装的各种组件的根条目。必威国际有限公司的必威国际有限公司一个用于根Jenkins对象,另一个用于必威国际有限公司不同的全局配置元素。

必威国际有限公司systemMessage必威国际有限公司詹金斯配置自动由詹金斯配置代码插件\ n \ nglobalNodeProperties: -envVarsenv: -关键VARIABLE1价值喷火-关键VARIABLE2价值酒吧securityRealmldap配置: -groupMembershipStrategyfromUserRecordattributeNamememberOfinhibitInferRootDNrootDNdc = acme, dc = org服务器ldap: / / ldap.acme.org: 1636节点: -永久的名字static-agentremoteFS/home/必威国际有限公司jenkins发射器jnlpworkDirSettings禁用真正的failIfWorkDirIsMissinginternalDir远程workDirPath/ tmpslaveAgentPort50000agentProtocols: -jnlp2工具git安装: -的名字git首页/usr/local/bin/git凭证系统domainCredentials: -凭证: -basicSSHUserPrivateKey范围系统idssh_with_passphrase_provided用户名ssh_root密码$ {SSH_KEY_PASSWORD}描述SSH密码与私钥文件。提供私钥privateKeySourcedirectEntryprivateKey$ {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.configJava属性。当通过包管理工具安装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实例时,请浏览必威国际有限公司演示该存储库的目录。如果你有一个没有例子的插件,请参考帮助文档。单击文档链接位于“配置为代码”页面底部。

参考页面"style=

如果你想配置一个特定的插件,搜索这个插件的名字。该页面将显示哪个根元素属于该配置。大多数已安装的插件属于不保密的根元素。

非机密部分"style=

例子

看到演示文件夹与各种样品。

LDAP

将LDAP的基于用户界面的配置替换为基于文本的配置。

配置形式"style=

必威国际有限公司securityRealmldap配置: -groupMembershipStrategyfromUserRecordattributeNamememberOfinhibitInferRootDNrootDNdc = acme, dc = org服务器ldap: / / ldap.acme.org: 1636

Yaml别名和锚

用yaml锚替换重复的元素。锚键必须以x -因为JCasC处理未知的根元素。

x-必威国际有限公司jenkins-linux-node&必威国际有限公司jenkins_linux_node_anchorremoteFS/home/必威国际有限公司jenkins发射器jnlpworkDirSettings禁用真正的failIfWorkDirIsMissinginternalDir远程workDirPath/ tmp必威国际有限公司节点: -永久的名字static-agent1<<*必威国际有限公司 jenkins_linux_node_anchor-永久的名字static-agent2<<*必威国际有限公司 jenkins_linux_node_anchor

生成两个永久代理节点,也可以这样写。

必威国际有限公司节点: -永久的名字static-agent1remoteFS/home/必威国际有限公司jenkins发射器jnlpworkDirSettings禁用真正的failIfWorkDirIsMissinginternalDir远程workDirPath/ tmp-永久的名字static-agent2remoteFS/home/必威国际有限公司jenkins发射器jnlpworkDirSettings禁用真正的failIfWorkDirIsMissinginternalDir远程workDirPath/ tmp

安装插件

我们不支持使用JCasC安装插件,所以你需要使用其他工具,

Dockers用户可以使用:
https://github.com/必威国际有限公司jenkinsci/docker/#preinstalling-plugins

Kubernetes用户:
https://github.com/必威国际有限公司jenkinsci/helm-charts

支持插件

大多数插件应该支持开箱即用,或者可能需要一些最小的更改。看到这个指示板已知的兼容性问题。

向插件添加JCasC支持

希望在插件中支持JCasC的插件开发人员应该这样做请查看我们的操作指南

Configuration-as-Code扩展插件

必威国际有限公司詹金斯增强方案

由于配置代码在Jenkins社区中被证明是一个非常受欢迎的主题,我们已经发布了必威国际有限公司中201作为Jenkins项目的一个标准组成部分。必威国际有限公司这个建议被接受了。