jenkins 分布式构建
? 什么是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节点来进行对应的系统进行部署就可以达到分布式部署。
一.建立节点
1.系统管理--->节点管理--->新建节点
二.配置节点
1. 需要配置好节点的java环境变量?
[[email protected] ~]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
[[email protected] ~]# vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=/usr/java/jdk1.8.0_144/jre
export CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar:JRE_HOME/lib:CLASSPATH
export PATH=JAVA_HOME/bin:PATH
2. 配置好节点的免密登录,使master可以免密登录到slave。
3. 创建好节点的工作目录
[[email protected] ~]# mkdir node-1
4. 启动节点进行检查
三.创建pipline 工程进行测试
1.语法介绍:
节点
agent { node { label ‘labelName‘ } }行为相同 agent { label ‘labelName‘ },但node允许其他选项(如customWorkspace)
标签
使用提供的标签在Jenkins环境中可用的代理上执行管道或阶段。例如:agent { label ‘my-defined-label‘ }
2.新建pipline-hello工程,使用的是节点模式进行测试
pipeline {
agent { node { label ‘node-1‘ } }
stages {
stage(‘make node-1‘){
steps {
echo "make script : make node-1"
sh ‘mkdir -p /usr/local/node-1‘
}
}
}
}
2.1检查发布结果
[[email protected] ~]# ls /usr/local/
bin etc games include java lib lib64 libexec node-1 sbin share src
3.使用标签模式语法进行测试
pipeline {
agent { label ‘node-4‘ }
stages {
stage(‘make node-4‘){
steps {
echo "make script : make node-4"
sh ‘mkdir -p /usr/local/node-4‘
}
}
}
}
注意:label 这里写的是标签的名称
3.1新建pipline-node-4工程,检查发布的结果
[[email protected] ~]# ls /usr/local/
bin etc games include java lib lib64 libexec node-1 node-2 node-4 sbin share src
原文地址:http://blog.51cto.com/innocence/2317475