JENKINS分布式构建(三)

分布式构建(Master/Slave)

 jenkins 实例是安装在独立分隔的另一台设备上,一般称之为 Jenkins Controller 。
Jenkins Agent 本身只是一个编译、打包、运行代码的环境,并不包含 Jenkins 实例。

Jenkins Controller 启动 Jenkins Agent 来执行任务的方式一共有三种:

1. 通过 Java Web 启动代理
2. Launch agent via execution command on the controller
3. Launch agent via SSH

找不到launch agents via ssh选项需要安装ssh Build Agents插件

原理本身很简单,也就是需要让 Jenkins Controller 可以通过 SSH 登陆上 Jenkins Agent 。
Jenkins 在登陆 Agent 时使用的账号是 Jenkins 安装时被创建的用户 Jenkins 。
所以实质上只要 Jenkins 用户可以登陆上 Agent ,那么 Jenkins 中进行同样的设置的话,就可以通过 SSH 启动 Agent 了。

开始配置

1. 切换用户(Jenkins Controller )

因为一切都是要以 Jenkins 用户可以登陆 Agent 为前提,所以必须切换到 Jenkins 用户。
但是 Jenkins 用户没有密码,也没有用户目录,其本身是为了用于服务启动而被创建的。
在这里需要执行如下命令来切换到 Jenkins 用户,然后执行命令切换到工作目录。

[root@linux-node1 ~]# sudo su -s /bin/bash jenkins
bash-4.2$ cd ~
bash-4.2$ 

2. 生成 SSH 密钥(Jenkins Controller )

使用 SSH 的密令创建密钥。

bash-4.2$ ssh-keygen -f ~/.ssh/jenkins_agent_key

在 Enter passphrase 的提示处输入用于创建密钥的口令(记下口令供后续使用)
在 Enter same passphrase again 的提示处再一次输入口令。

可以看到,ssh-keygen 会在当前工作目录下自动创建一个 .ssh 文件夹,其中放置了两个文件。

其中不带 .pub 后缀的是私有密钥文件。
带 .pub 后缀的是公有密钥文件。

bash-4.2$ ls -la .ssh
total 12
drwx------.  2 jenkins jenkins   58 Jun  6 17:54 .
drwxr-xr-x. 17 jenkins jenkins 4096 Jun  6 17:54 ..
-rw-------.  1 jenkins jenkins 1675 Jun  6 17:54 jenkins_agent_key
-rw-r--r--.  1 jenkins jenkins  413 Jun  6 17:54 jenkins_agent_key.pub

3. 传送公有密钥给 Jenkins Agent(Jenkins Controller )

执行下面的命令行将公有密钥文件传送给 Jenkins Agent 并注册 Jenkins Agent 的服务器信息。
这里的参数 user@host 是 Jenkins Agent 操作系统中的用户账户名和 Jenkins Agent 的服务器名或 IP 。
注意:这里使用的是公有密钥文件

bash-4.2$ ssh-copy-id -i .ssh/jenkins_agent_key.pub root@192.168.230.131

在 Are you sure you wang to continue connecting 的提示处输入 yes。然后passwd输入密码

以上完成后可以通过如下命令来测试 SSH 注册结果。
注意:这里使用的是私有密钥文件

bash-4.2$ ssh -i .ssh/jenkins_agent_key root@192.168.230.131
Last login: Fri May 27 15:05:41 2022 from 192.168.230.1

4. 查看复制私有密钥(Jenkins Controller )

使用下面的命令行打印私有密钥的内容,并记录下来。

bash-4.2$ cat .ssh/jenkins_agent_key

5. 添加 Jenkins 凭据(Jenkins )

访问 Jenkins 的 Manage Jenkins 菜单,找到 Manage Credentials。

点击全局域的下拉框箭头,选择“添加凭据”。

在添加凭据页面上,输入所需要的信息。
类型:选择 SSH Username with private key
范围:全局
ID:(任意)
描述:(任意)
Username:user(输入在之前 ssh-copy-id 时使用的 Jenkins Agent 的用户名)
Treat username as secret:建议打勾以加强保护
Private Key:选择 Enter directly 后,在下面的文本框内输入之前打印的私有密钥的内容
Passphrase:输入在创建密钥时使用的口令
输入完成后点击“确定”按钮保存。

 

 6. 创建工作目录 (Jenkins Agent )

为 Jenkins 创建一个工作目录。

[root@linux-node2 ~]# mkdir /var/jenkins
[root@linux-node2 ~]# yum install fontconfig java-11-openjdk #安装jdk

7. 配置 Jenkins Agent (Jenkins )

访问 Jenkins 的 Manage Jenkins 菜单,找到节点管理。

选择新建节点,输入所需信息。
节点名称:(任意)
固定节点:选择
输入完成后,点击“确定”。

 

 

输入节点的其他信息。
描述:(任意)
Number of executors:执行器总数,根据性能可以指定多个执行器。
远程工作目录:之前创建的工作目录的绝对路径。
标签:可以给 Agent 打上标签。
用法:根据实际情况,可以选择 Use this node as much as possible 来最大化使用这个 Agent 。
启动方式:选择 Launch agents via SSH 。
主机:填写 Jenkins Agent 的 IP 。
Credentials:选择之前创建的凭据。
Host Key Verification Strategy:选择 Known hosts file verification Strategy
可用性:尽量保持代理在线
节点属性:暂时都保持不打勾
输入完成后点击“保存”。

8. 查看 Agent 连接状态。

在 Agent 的日志中可以看到正常连接的日志,最后一行写着“Agent successfully connected and online”。

应用node节点发布

 

 

posted @ 2022-06-08 09:06  w787815  阅读(823)  评论(0编辑  收藏  举报