Jenkins的分布式构建及部署(master~slaver)

一 什么是Jenkins的分布式构建和部署
  Jenkins的分布式构建,在Jenkins的配置中叫做节点,分布式构建能够让同一套代码或项目在不同的环境(如:Windows和Linux系统)中编译、部署等。

二 什么时候使用节点和作用
  当我们使用多台服务器时,并且配置了tomcat或jboss集群服务,可通过jenkins的节点配置,将jenkins项目发布在不同服务器上(分布jenkins工作空间,部署项目到不同服务器的tomcat或jboss),这就形成了jenkins的分布式。节点服务器不需要安装jenkins(只需要运行一个slave节点服务),构建事件的分发由master端(jenkins主服务)来执行。

三 节点服务器的要求
注意:如果节点主机上不存在JDK,Jenkins会去自动下载,但Oracle对程序自动下载做了限制,会导致下载失败,然后一直循环这个问题。
建议:所有Linux或者Windows机器的环境路径统一(如:JDK、Maven),安装位置和jenkins所在服务器的JDK和maven必须一致,也就是说jenkins所在服务器和各个节点服务器中的JDK和Maven目录和文件名都是一样的。以便于管理、不容易出现问题。
四 节点管理
通常的情况下在我们的一个项目当中,项目会有多个分支系统,而我们不可能为每个分支系统都配置一个jenkins服务,这样既浪费资源,也增加构建部署的难度,为了解决这个问题jenkins给使用者提供了非常强大的分布式部署功能,也就是节点的管理,我们只需要在master节点配置好jenkins服务,通过指定slave节点来进行对应的系统进行部署就可以达到分布式部署
系统管理,进入管理节点页面

jenkins服务所在服务器为master节点,master负责分发任务给slave节点
这里展示了节点的部分信息

以windows为例 slave节点配置
1.点击新建节点

2.输入节点的名称,并且选中permanent agent,点击ok

3.节点创建成功后会自动跳转到配置页面
名字:节点的名字
描述:说明这个节点的用途等
of executors:并发构建数量
远程工作目录:用于存放jenkins的工作空间的
标签:分配job会以标签的名称去分配
用法:节点的使用策略
启动方法:windows的话就不要给自己添堵了,选择 Java web start

4.这时节点也配置好了,但是slave节点还是没有连接的状态,这时我们使用slave机器进入Jenkins的管理节点页面


点击该节点,进入节点页面,可能出现这样的状态


点击Go to security configuration screen and change it,然后将 TCP port for JNLP agents选择随机选取


然后进入控制面板,将防火墙关闭(不做描述,自行处理)
回到slave页面,这时页面出现launch 按钮


点击launch ,这时会让我们下载一个文件,下载到我们的slave节点的远程工作目录就可以了

点击图中的launch按钮,他会提示你下载该文件slave-agent.jnlp.按照提示下载该文件,并保存在本地。我们这里需要确认两个问题是否存在:

问题一,确认slave-agent.jnlp 是用javaws来运行的,而不是java.exe 或者是javaw.exe来运行,因为一般的机器默认是采用java.exe启动的。我曾经因为这个问题折腾了好久。

问题二,将slave-agent.jnlp用notepad打开后,确认其中的URL是可用的Jenkins地址。其中的配置可能是这样的:

<jnlp spec="1.0+" codebase="http://16.158.69.53:9999/jenkins/computer/irshost12.tc.tb.com/">
<information>
<title>Slave Agent for irshost12.tc.tb.com</title>
<vendor>Jenkins project</vendor>
<homepage href="https://jenkins-ci.org/"/>
</information>
<security><all-permissions/></security>
<resources><j2se version="1.5+"/><jar href="http://16.158.69.53:9999/jenkins/jnlpJars/remoting.jar"/><property name="hudson.showWindowsServiceInstallLink" value="true"/>
</resources><application-desc main-class="hudson.remoting.jnlp.Main">
<argument>60c101541d377ad629da21b37c24cd6227edef74b97ff663c5b09e261ac2d5d6</argument><argument>irshost12.tc.tb.com</argument><argument>-url</argument>
<argument>http://16.158.69.53:9999/jenkins/</argument>
</application-desc>
</jnlp>
确认其中的url地址是上面的正确的地址,而不是localhost,因为我的jenkins部署在本地测试。

安装slave-agent.jnlp之前必须要在节点服务器安装JDK环境,至于如何安装JDK这里就不在说明了,网上教程很多,下面安装slave-agent.jnlp,双击slave-agent.jnlp文件,出现下图界面:


然后双击slave-agent,出现connected说明连接成功

上面的窗口关闭或者电脑重启后,这个节点也就关闭了,所以最好把这个节点加入window服务。

点击窗口的file菜单,点击Install as a service,完成

  

成功示例:(红框所示)


现在回到jenkins的管理节点页面,刷新一下界面,发现slave节点的红色 的那个X已经没有了,说明连接成功

5.关联job,进入job的配置页面,勾选Restrict where this project can be run,并且在Label Expression输入奴隶节点的标签名(一个标签有可能对应多台slave节点),也可以输入slave节点的名称

6.配置一条构建的命令

7.进行构建,查看控制台信息,可以看到运行的确实是windows的机器

linux与mac的配置大同小异,只需稍加改动就可以了,这样配置好之后就可以实现分布式构建,在做自动化测试的时候我们只需要将测试服务器配置为slave节点,配置好相应的job来监控开发job或者开发的代码是否有变动或者构建的动作,根据自己的情况执行测试项目的构建动作,从而实现持续集成

在安装过程中,可能会出现以下报错,导致安装失败:

在一些文档中,说是主机不信任客户机,但是没有说明该如何去解决(主机和客户机两边的防火墙都已经关闭了)

最终我用以下的方法成功运行了它:将"slave-agent.jnlp“文件用notepad打开,将文本中的“localhost”用主机的IP地址去代替,保存文件后用Java打开(Launch)即可;

猜你喜欢

转载自blog.csdn.net/qq_38695182/article/details/85251241
今日推荐