1. 概述
jenkins安装在一台主机上,所有的jobs都在这台机器上运行,如果运行太多jobs时,会形成等待,节点存在就是解决这个问题提高效率,安装jenkins的主机称为master机,而其它机器就属于master的分节点,即slave节点;利用其它主机用执行jenkins的jobs,则需要一些配置,形成两台机器互通,当然下面的例子使用用另外一台主机当做slave是。
2. 环境准备
主机名 ip 角色
jenkins-master 192.168.3.16 jenkins的Master节点 tomcat8 jenkins maven jdk8
jenkins-slave 192.168.3.13 jenkins的Slave节点 slave.jar jdk8 maven
gitlab.jackyops.com 192.168.3.15 gitlab
3. 安装Jenkins
只需要在master主机上安装Jenkins就可以了,其他的从节点不用安装。通过slave.jar运行的。
首先从官网下载最新版Jenkins,https://jenkins.io/index.html
由于现在Jenkins更新挺频繁的,问题当然也就不少了,最好选择安装LTS Release版本。
4. 从节点配置及相关的配置
从节点机器上创建jenkins用户,用于执行构建任务,以及一些环境配置
创建从节点机器jenkins用户的ssh密钥,用于指定上面配置界面启动方式为ssh的;
创建Jenkins Credentials认证,在配置启动方式和项目源码管理从远程仓库获取源码需要;
将jenkins用户的公钥部署到Gitlab远程仓库,用于免密码下载源码。
在从节点主机执行如下命令:
创建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 /root/.ssh/id_rsa.pub jenkins@192.168.3.13
注意:
.ssh 文件夹权限需要设置成700
.authorized_keys文件权限需要设置600
5.创建Jenkins Credentials(任据)认证
回到master主服务器Jenkins的首页,点击左边的任据,如下图:
添加凭据
Username 栏填写之前从节点上创建的jenkins用户
Private Key,栏复制从节点jenkins用户生成的私钥的内容即可,一般在/home/jenkins/.ssh/id_rsa
其它的不用填写
最后点击OK,完成Jenkins Credentials认证的创建。
6. 部署jenkins用户公钥到Gitlab
登录自建的Gitlab服务器,点击头像,选择Settings,然后再选择SSH Keys,复制公钥到指定位置即可,如下图所示:
7. 配置Master节点
通过下载jenkins war包,然后直接tomcat中的/opt/tomcat-jenkins/webapps/目录中,通过http://192.168.3.16:8080/jenkins访问,关于Jenkins其他的基本配置这里就不多介绍了,直接配置从节点。
进入Jenkins服务器的首页,系统管理》管理节点》新建节点
输入节点名,选择Permanent Agent,点击【OK】进入下一步
2. 按下图配置好后,点击【save】保存,保存成功后回到节点列表
配置从节点,按照如下所示输入,加粗文字注意一下:
配置项 配置
名称 填节点名称
描述 节点描述
并发构建数 并发数量
远程工作目录 填写从节点上jenkins agent的工作目录,推荐只用绝对路径,如/home//jenkins-agent。注意jenkins要有该目录的读写权限
标签 不改动。jenkins可以通过标签指定一组从服务器运行某个构建任务
用法 不改动。可以指定什么情况下使用该从节点,可以有“尽可能使用该节点”和“只有任务指定了使用该节点时,才用该节点运行”两种选择
启动方法 选择”launch slave agents via SSH”
主机 填写从服务器的ip或域名
Credentials 填写SSH认证信息,(可用户密码认证或SSH密钥认证方式)
Host Key Verification Strategy 选择 Manually Trusted Key Verification Strategy,这会在完成配置后,第一次连接从节点时要求我们手动确认当前连接的从节点的身份。说明一下,Host Key 验证是用来防止中间人攻击的
Require manual verification of initial connection 选中
Availability 不改动。可用性
高级——java路径 填写从主机上的java的路径,可以使用which java 查看。如果这里不填,jenkins会扫描一些特定路径,如果扫描不到java,就会报错,所以建议填写
环境变量 勾选上,并填写运行构建任务所需要的环境变量。建议填上JAVA_HOME,免得jenkins运行构建任务时找不到java。
填完之后,点击【保存】
点击启动代理按钮下载slave-agent.jnlp,放到节点机器上,双击启动(节点机器必须有jdk环境,因为需要javaws.exe来启动)
从节点远程工作目录会生成如下文件
[root@tcpip01 jenkins-salve ]# tree /data/jenkins/
/data/jenkins/
└── slave.jar
创建Jenkins项目
Jenkins的首页,点击左边最上面的新建来创建项目,构建一个自由风格的软件项目,出现下面界面:
项目配置
从节点执行后结果如下
[root@jenkins-slave home]# tree -L 3 /home/jenkins/
/home/jenkins/
├── slave.jar
└── workspace
├── blog-solo2
│ ├── CHANGE_LOGS.html
│ ├── docker-compose.yml
│ ├── Dockerfile
│ ├── gulpfile.js
│ ├── LICENSE
│ ├── package.json
│ ├── pom.xml
│ ├── README.md
│ └── src
└── blog-solo2@tmp