如何在 Ubuntu 上设置 Jenkins Master 和 Slave
Jenkins 是一个从 Hudson 项目派生的自动化服务器。它支持许多 SCM(源代码控制管理)软件系统,包括 Git、SVN 和 Mercurial。 Jenkins 提供了数百个插件来自动化您的项目。 Jenkins 提供对主/从架构的支持,使其能够托管大量项目构建。
詹金斯“主/从”如何工作?
Jenkins主/从架构用于分布式构建环境,其中构建项目的工作负载被分布到多个代理节点,并且我们可以为每个构建使用不同的环境。
在 Jenkins 的“主/从”架构中,主服务器将自己表示为基本的 Jenkins 安装,并处理构建系统的所有任务。 Jenkins主节点将用于调度作业、监控从节点、向从节点调度构建、记录和表示构建结果以及直接执行构建作业。
Jenkins 从节点设置用于从主节点卸载构建项目,并且需要在主节点和从节点之间建立连接。 Jenkins从节点可以在Windows和Linux等各种操作系统上运行,并且无需在其上安装完整的Jenkins软件包。
本教程将教我们如何使用最新的 Ubuntu 版本设置 Jenkins 主从架构。我们将学习设置 Jenkins 主服务器并将其他 Ubuntu 节点添加为 Jenkins 从服务器。
先决条件
Ubuntu 服务器(Ubuntu 22.04 - Ubuntu 16.04)
- 主控 - 10.0.15.10
- 从属01 - 10.0.15.21
- 从属02 - 10.0.15.22
我们将要做什么?
- 安装詹金斯大师
- 配置 Jenkins 主凭证
- 配置从代理节点
- 添加新的从节点
- 准备从代理节点来执行构建
- 测试
第 1 步 - 安装 Jenkins Master
在本教程中,我们不会介绍基本的 Jenkins 安装。 HowtoForge 上的几篇文章介绍了 Jenkins 安装。
- 在 Ubuntu 16.04 上安装 Jenkins
- 在 Ubuntu 18.04 上安装 Jenkins
- 在 Ubuntu 20.04 上安装 Jenkins
- 在 Ubuntu 22.04 上安装 Jenkins
- 在 CentOS 7 上安装 Jenkins
以下是我们安装了 Jenkins 的 Ubuntu 主服务器。
第 2 步 - 配置 Jenkins 主凭证
当你安装了主服务器 Jenkins 后,我们需要配置主服务器本身。默认情况下,启动 Jenkins 代理节点有多种方式,我们可以通过 SSH、Windows 管理帐户以及 Java Web Start (JNLP) 启动代理节点,根据您的环境设置和操作系统选择最佳方式。
对于本指南,我们将通过 ssh 启动代理节点,并且需要在主服务器上设置 Jenkins 凭据。
生成 SSH 密钥
我们将使用 ssh 密钥身份验证来设置代理节点,因此我们需要为 Jenkins 用户生成 ssh 密钥,然后使用“ssh-copy-id”手动将密钥上传到每个服务器节点。
在 Jenkins 主服务器上,登录 Jenkins 用户并生成 ssh 密钥。
su - jenkins
ssh-keygen
您将在“.ssh”目录中获得“id_rsa”私有密钥和“id_rsa.pub”公共密钥。
在 Jenkins 上设置凭据
打开 Jenkins 仪表板并单击左侧的“凭据”菜单。
然后单击“全局”域链接。
现在单击“添加凭据”。
现在选择身份验证方法。
- 类型:带私钥的 SSH 用户名
- 范围:全球
- 用户名: 詹金斯
- 私钥:直接输入并粘贴主服务器上Jenkins用户的“id_rsa”私钥。
单击“确定”。
并且使用 ssh auth key 方法的 Jenkins 凭证已创建。
第 3 步 - 设置从节点
现在我们将通过在这些服务器上安装 java 并创建一个新的 Jenkins 用户来设置从属节点服务器。
安装Java
安装“software-properties-common”软件包并添加 java PPA 存储库。
sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:openjdk-r/ppa -y
现在使用下面的 apt 命令安装 java OpenJDK。
sudo apt install openjdk-8-jdk -y
安装完成后,查看安装的java版本。
java -version
您将在系统上安装 Java OpenJDK 1.8。
添加新的 Jenkins 用户
现在将“Jenkins”用户添加到所有代理节点。
运行以下命令。
useradd -m -s /bin/bash jenkins
passwd Jenkins
代理节点的“Jenkins”用户已创建。
将 SSH 密钥从 Master 复制到 Slave
接下来,我们必须将密钥“id_rsa.pub”从主服务器上传到从服务器节点。我们需要使用“ssh-copy-id”命令上传到每个服务器节点,如下所示。
ssh-copy-id [email
ssh-copy-id [email
输入 Jenkins 用户密码。
ssh 密钥“id_rsa.pub”已上传到所有代理节点。
第 4 步 - 添加新的从节点
在 Jenkins 仪表板上,单击“管理 Jenkins”菜单,然后单击“管理节点”。
单击“新节点”。
输入节点名称“slave01”,选择“永久代理”,然后单击“确定”。
现在输入节点信息详细信息。
- 说明:slave01节点代理服务器
- 远程根目录:/home/jenkins
- 标签: 奴隶01
- 启动方法:通过SSH启动从属代理,输入主机IP地址“10.0.15.21”,选择使用“Jenkins”凭证进行身份验证。
现在单击“保存”按钮并等待主服务器连接到所有代理节点并启动代理服务。
下面是主服务器连接到所有代理节点时的结果。
Jenkins从节点已添加到主服务器。
第 5 步 - 准备从属代理节点以执行构建
在此步骤中,我们将配置 Jenkins master 在从属代理节点上执行构建。
单击“管理 Jenkins”菜单,然后单击“配置系统”。
现在转到“从站设置”部分并定义您需要的所有内容,如下所示。
有关链接上“从站设置”的更多信息。
单击“保存”按钮,现在我们准备在从属代理节点上执行构建。
第 6 步 - 测试
现在我们要为 Jenkins 创建一个新的简单构建,并在机器人“slave01”和“slave02”代理节点上执行该构建。
在 Jenkins 仪表板上,单击“新建项目”菜单。
输入项目名称,选择自由式项目,然后单击“确定”。
在常规部分,输入职位描述并选中“限制此项目可以运行的位置”选项。
在“标签表达式”上,指定节点,例如“slave01”。
移至构建部分,选择“执行 shell”选项,键入如下命令。
top -b -n 1 | head -n 10 && hostname
单击“保存”按钮,您将被重定向到职位页面。
单击“立即构建”来构建项目,然后单击“构建历史记录”部分上的项目。
以下是我的结果。
在“slave01”代理节点上构建。
在“slave02”代理节点上构建。
Jenkins主/从架构以及分布式构建Jenkins的安装和配置已经成功完成。
参考
- https://wiki.jenkins.io/