我最近接触了 Jenkins 配置即代码 (JCasC),这是一个有趣的项目,它使用 YAML 格式来编写 Jenkins 配置。YAML 已被用于 Kubernetes、Ansible 和许多其他技术中作为模板语言。在本文中,我将解释如何在容器中开始使用 JCasC。许多人使用 Docker 在本地运行容器,但在我的示例中,我将使用 Podman。如果您需要先进行设置,可以在 Podman 入门指南 中阅读更多内容。
下载容器镜像并启动 Jenkins 实例
要在本地机器上启动 JCasC 的概念验证,请运行以下基本命令(我从 这个仓库 中改编而来)
kkulkarn@localhost ~ podman run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
容器启动后,导航到 http://localhost:8080 以在浏览器中打开 Jenkins 用户界面 (UI)。它会要求您输入密码——查看 podman run 命令的日志,您应该在终端中看到类似这样的内容
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
63b9bde2015f4aedb75b93ec088e86ca
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
这就是解锁您的 Jenkins 实例的密码。您可以按照说明安装推荐的插件并创建用户(如果您愿意),或以管理员身份继续。这将打开熟悉的 Jenkins UI。

点击 Manage Jenkins -> Manage Plugins 并安装以下插件
- Configuration as Code AWS SSM secrets
- Configuration as Code Plugin - Groovy Scripting Extension
- Configuration as Code Support Plugin

探索 JCasC 插件
返回 Manage Jenkins 并在列表底部附近查找一个新项——Configuration as Code

使用 JCasC 和脚本创建多分支管道
创建一个小型配置并更新 Jenkins
jenkins:
systemMessage: "Controlled by Configuration as Code"
jobs:
- script: >
multibranchPipelineJob('configuration-as-code') {
branchSources {
git {
id = 'configuration-as-code'
remote('https://github.com/jenkinsci/configuration-as-code-plugin.git')
}
}
}
您可以将文件另存为 casc.yml 并将其推送到 Jenkins 可以访问的 URL,例如 此示例
仔细查看此代码,您可以看到有一个 jenkins 元素,其中包含一个项目 systemMessage。这会将指定的消息放在 Jenkins 的顶部。
jobs 指令采用一个 script 元素,该元素由一个 Groovy 脚本组成,该脚本要求 Jenkins 从指定的 URL 创建一个多分支管道。此 URL 指向 jenkinsci 的 configuration-as-code-plugin GitHub 仓库。此仓库有几个分支,每个分支都有一个 Jenkinsfile。要将此新配置上传到 Jenkins,请导航至 Manage Jenkins->Configuration-as-Code,然后在 Replace configuration source with 下粘贴 URL
https://raw.githubusercontent.com/kedark3/jcasc-example/master/casc.yml

点击 Apply new configuration。如果成功,您应该看到 Configuration loaded from:,后跟您输入的 URL。
现在查看您的 Jenkins 仪表板

已加载多分支管道。您还可以输入包含其代码的种子作业(Groovy 文件)的 URL
jenkins:
systemMessage: "Controlled by Configuration as Code"
jobs:
- script: >
multibranchPipelineJob('configuration-as-code') {
branchSources {
git {
id = 'configuration-as-code'
remote('https://github.com/jenkinsci/configuration-as-code-plugin.git')
}
}
}
- url: https://raw.githubusercontent.com/kedark3/jcasc-example/master/seed.groovy
点击 Reload existing configuration 按钮

这将从 GitHub URL 重新加载配置,并将创建一个新的种子作业

添加另一个配置
现在将另一个配置添加到您的 casc.yml 文件中。例如,我想添加一个 Ansible Tower 配置。在执行此操作之前,首先从 Manage Plugins 安装 Ansible Tower 插件。然后将以下内容添加到您的 casc.yml 文件末尾
unclassified:
ansibleTowerGlobalConfig:
towerInstallation:
- enableDebugging: true
towerCredentialsId: ansible-tower-jenkins-user # create these by hand in jenkins
towerDisplayName: Infra-Ansible-Tower-01
towerTrustCert: true
towerURL: https://infra-ansible-tower-01.example.com
这将添加到新的根元素 unclassified 下,因为它不属于 jenkins。重新加载配置,Ansible Tower 将添加到您的配置中。导航到 Manage Jenkins -> Configure System

现在您可以使用配置即代码管理 Jenkins,并将您的代码托管在版本控制站点或仓库中。
आगे बढ़ें (Moving forward)
JCasC 是一种使您的 Jenkins 配置更接近基础设施即代码 (IaC) 的方法,并且它仍在不断发展。
有许多 其他演示 可用,您可以使用它们来更新您的 casc.yml 文件。此外,所有这些代码都可以在我的 GitHub 仓库 中找到。请尝试 JCasC,并在评论中分享您的想法!
10 条评论