Jenkins的分布式构建及部署——节点

来源:互联网 发布:nginx怎么做负载均衡 编辑:程序博客网 时间:2024/05/17 05:54

一 什么是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)即可;

0 0