当企业级的CICD时,单台Jenkins 做Job时候负担过重,而且多类型(java c# nodejs python,etc.)的软件都编译打包容易导致环境错乱,那么是否可以做到一种类型的项目一直用一台单独的机器去做编译打包镜像。实际上jenkins已经支持这一想法。
Master->Slave 模式。把job 分派给Save 去做。今天就配置下Slave.
环境准备
主机名 | IP地址 | 软件 |
jenkins-master | 192.168.199.220 | jenkins, java |
jenkins-slave | 192.168.199.240 | java.不需要jenkins |
从节点配置
从节点机器上创建jenkins用户,用于执行构建任务,以及一些环境配置
创建从节点机器jenkins用户的ssh密钥,公钥和私钥后面拉取代码时候会用到
在从节点主机执行如下命令:
创建Jenkins用户
使用root登录远程子节点机器,执行以下命令创建Jenkins用户:
# adduser jenkins
# passwd jenkins
生成jenkins用户的ssh密钥
我们目前是root用户登录,为了方便操作,切换到我们刚刚创建的jenkins用户:
# su - jenkins
然后生成密钥:
$ ssh-keygen -t rsa
一路回车默认空密码即可,最终会在/home/jenkins/.ssh目录中生成公钥id_rsa.pub和私钥id_rsa这两个文件。
添加ssh认证文件,方便远程机器无密码登录jenkins用户。
$ cd ~/.ssh
$ touch authorized_keys
将主(master)机器上做免密码登录到slave主机上
ssh-copy-id -i id_rsa.pub jenkins@192.168.199.240 //在master 执行,根据提示来
注意:
.ssh 文件夹权限需要设置成700
.authorized_keys文件权限需要设置600
主节点配置
添加凭据,添加节点,都很简单
注意下面不要用默认的选择。
代码拉取
将jenkins用户的公钥部署到Gitlab远程仓库,用于免密码下载源码,我这里把jenkins的公钥配给了gitlab网站的 admin 账号下了
(这里大胆猜测下,其实那个它本质上是拉去代码,也是git@192.168.199.225:dev_backend/ 的方式,跟gitlab上是否要建一个jenkins账号没多大关系。如果你不想配置gitlab,
是不是让 240 去登录 gitlab 的时候也做成免密也行呢,待测试)。
先配置一个全局的凭据,用Slave 机器上jenkins 账户下的私钥和账号,UserName用 jenkins.
保存后是
拉代码配置选择,选其它会及时报错。
构建测试,拉取代码成功。