Jenkins 配置即代码入门

JCasC 使用 YAML 格式来设置 Jenkins 配置。
207 位读者喜欢这篇文章。
Puzzle pieces coming together to form a computer screen

Opensource.com

我最近接触了 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。

Jenkins UI

点击 Manage Jenkins -> Manage Plugins 并安装以下插件

  • Configuration as Code AWS SSM secrets
  • Configuration as Code Plugin - Groovy Scripting Extension
  • Configuration as Code Support Plugin

Jenkins manage plugins screen

探索 JCasC 插件

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

Configuration as Code plugin

使用 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

Replace configuration source

点击 Apply new configuration。如果成功,您应该看到 Configuration loaded from:,后跟您输入的 URL。

现在查看您的 Jenkins 仪表板

Updated Jenkins dashboard

已加载多分支管道。您还可以输入包含其代码的种子作业(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 按钮

Reload existing configuration button

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

New seed job

添加另一个配置

现在将另一个配置添加到您的 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

Ansible Tower

现在您可以使用配置即代码管理 Jenkins,并将您的代码托管在版本控制站点或仓库中。

आगे बढ़ें (Moving forward)

JCasC 是一种使您的 Jenkins 配置更接近基础设施即代码 (IaC) 的方法,并且它仍在不断发展。

有许多 其他演示 可用,您可以使用它们来更新您的 casc.yml 文件。此外,所有这些代码都可以在我的 GitHub 仓库 中找到。请尝试 JCasC,并在评论中分享您的想法!

接下来阅读什么
标签
User profile image.
Kedar 是 Red Hat 的软件质量工程师,从事 CloudForms(上游 ManageIQ)项目,主要负责内部基础设施的部署/管理。对用于自动化部署的 Jenkins Pipeline 和 Ansible 感兴趣。也在编写用于监控和警报的 Shinken 模块。

10 条评论

Configuration as Code AWS SSM secrets 仅在您需要在配置中使用 AWS secrets 时才需要。

有趣。在 casc.yaml 文件中指定插件(以及当前需要手动任务的其他配置方面)的能力非常重要。任何需要手动步骤的操作都会“破坏”IaC。感谢这篇有趣的帖子!

有趣的文章

谢谢

不错

我认为这是对我最有利的博客。 :)

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.