1. 为啥要使用多Node打包环境
1.1 整体运行的流畅性
一般的实际生产中都不会使用Master节点进行打包,因为使用Master节点打包的时候,如果Shell写的不好会导致服务器卡顿,线程耗尽,UI线程没资源等问题,所以一般都会将打包任务分发到其他的Node节点上去执行,就算Shell写的不好,打包时间长,也不影响现有Jenkins的使用
1.2 打包环境的特殊性
Mac的应用或者IOS的应用只能在Mac的环境下才能打包出来,而MATLAB的包Linux只能打包Linux的Win只能打包Win的,而有的应用程序会出现一部分在Win上打包,一部分在Linux上打包的情况,这时候就需要指定Node去进行打包。
1.3 单台机器性能瓶颈
当整个公司有成百上千个应用的时候,单台Jenkins根本无法满足需求,这时候就需要将打包任务分发给不同的机器去进行打包,防止出现各个业务组打包还需要排队的问题。
1.4 安全性和便捷性
生产环境的发布一般只能在晚上才能发布,这时候单独的生产打包Node可以指定上线时间,任务先构建队列等待,等待生产打包机器上线后自动打包发布到生产,防止出错。
2. 配置多Node打包
2.1 配置裸机Agent
2.1.1 安装JAVA
PS:(这是Agent必须安装的,如果没得这玩意就没办法运行Jenkins_Agent)
yum install java -y
java -version
# openjdk version "1.8.0_242"
# OpenJDK Runtime Environment (build 1.8.0_242-b08)
# OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
2.1.2 新建节点
打开jenkins 的节点管理
点击左上的新建节点
搞一个你喜欢的名字,然后点击确定
2.1.3 配置节点
1.名称搞一个你喜欢的(建议就直接是IP地址,不然你以后难找)
2.描述你爱写不写
3.执行器数量按照CPU核心数去填写,一般牛逼的Agent就多干点活,不牛逼的少干点。
4.远程工作目录,这里要写死绝对路径,而且要对jenkins
用户有权限,建议/home/jenkins/workspace
5.执行器数量代表同一时间可以执行的最大任务数(也就是可以同时打几个包,建议按照Cpu核心数去设置)
6.标签,这玩意你爱打不打(如果你agent不多就别打了,要是多就一定要打不然没办法分组)
7.用法这里按需选择,一个是自动分配,一个是手动选择,就这个区别
8.启动方式选择Launch agents via SSH
主机填写远程打包机器的IP例如
192.168.1.218
然后点击选择或者添加一个凭证
在这里输入账户名和密码,建议别和一个憨批一样使用root账户,当然你也可以不采纳
Host Key Verification Strategy 这个可以按需选择,如果不知道怎么选择就翻译一下,翻译一下还没理解就选择
Non verifying Verification Strategy
9.可用性这里一般是Test打包机全天在线,Release机器为你们允许发布的时间段,比如 2.00AM - 4.00AM,这样配置就可以保证除了在这个时间段,其他的时候提交的Release打包任务,都会等待这台机器上线才能打包,不会出现误发布的情况。
然后点击保存,这时候会出现这台机器不在线的问题,这时候就需要点击重启代理
(注意:这里第一次打包需要等一段时间,因为要安装一些东西,第二次就好了)
2.2 配置Docker_Agent
2.2.1 新建节点
配置Docker_Agent首先还是新建一个从节点,在这里大部分参考裸机的新建节点
需要注意的就是启动方式这里需要选择通过JAVA Web启动代理或者 Launch agent by connecting it to the master
还有一个需要注意的就是Docker_Agent的名称不能带中文,而且尽量规范,也别重复,这玩意等下要用的
点击保存后就OK了
2.2.2 疑难解答
出现这玩意的话就是没有开放TCP端口只能用WebScoket进行连接,你要开就是在全局安全配置中有一个配置
把这禁用改为添加一个端口就行了,访问
http://<jenkins-server>:<port>/tcpSlaveAgentListener/
出现Jenkins就代表开了.注意:这里要在服务器上开放对应的端口,不然就会失败
2.2.3 启动一个Docker_Agent
点开刚刚配置的那个节点,如果看到 如下图片就新建对了。
开始启动一个Docker代理,只要执行如下命令就完事了
docker run --init --name=jenkins_agent -it -d jenkins/inbound-agent -url http://jenkins-server:port -workDir=/home/jenkins/agent <secret> <agent name>
这个 jenkins-server:port
就修改为你的Jenkins的地址
这个secret
替换为 刚刚界面上 -secret后面的那一段
这个agent name
要和你定义的Agent的名称一模一样
那么完整的命令就应该是这样的
docker run --init --name=jenkins_agent_1 -it -d jenkins/inbound-agent -url http://192.168.1.67:8080 -workDir=/home/jenkins/agent 812df611b1991f910e727a1d3f6930afa47554dfe9a42f902fab093ac122d5a2 agent_docker_218
当出现这样的安装完毕了
界面上也显示已经同步
3. 使用从节点
在项目中选择限制项目的运行节点
这里直接填写你刚刚定的Node的名称就完事了
高级用法点开后面的小图标 也就是后面的(?)。写的很详细的,看看就明白了。
到这里你的从节点就指定成功了。