Jenkins做持续集成非常好用,应用越来越多,单机资源不够使用,是时候研究下分布式使用了。
目的
提交代码到git,让jenkins自动拉取代码,打包成jar,然后分发到另一台机器,并允许jar。
假设主节点为A 从节点为B,A上部署了jenkins
前提
- 机器都安装jdk
centos安装open-jdk8yum install -y java-1.8.0-openjdk-devel
- 机器安装Jenkins
不懂持续集成和jenkins的,看我以前的文章详解https://www.jianshu.com/p/0a2d08e0f6da
slave节点为linux平台
1. 节点配置
- 系统管理—》管理节点—》新建节点
- 启动方法: Linux 选择 Launch slave agents via SSH
- Host Key Verification Strategy: Non verifying Verification Strategy(对应Credentials为用户名/密码方式)

- master节点的配置可以在节点管理中或者在系统管理—》系统设置
- 用法:
- 尽可能的使用这个节点,默认的,表示job会随机的使用可以使用的节点
- 只允许运行绑定到这台机器的Job,表示job会到指定机器运行
配置验证方式A机器执行 ssh-keygen 然后一直回车执行 ssh-copy-id 用户名@ip地址如ssh-copy-id root@123.4.4.22使得A机器可以访问B机器然后把A机器的私钥添加到 验证管理
高级配置
比如修改java path路径


2. 节点运行结果
- 大致步骤: 通过节点配置的credentials连接到slave服务器—-》输出当前用户的环境变量—-》检查节点服务器java版本—-》开启sftp传输slave.jar到节点服务器的工作目录—》java -jar启动节点服务器上的slave进程

- 当标签和服务器名称一样时这里不会显示标签

3. job配置
- General中勾选:
Restrict where this project can be run - 输入节点的名称或标签(jenkins所在机子默认节点名称master),从而关联job到节点服务器。注意:下拉框选中节点名称或标签时末尾会有空格需要手动去掉该空格。

4. job运行结果
- 节点服务器的job工作目录:节点配置的远程工作目录/workspace/

slave节点为windows平台
1. 节点配置
- Launch method: windows 选择 Launch slave agent via java Web Start
2. 运行节点
- 方式一 Launch agent from browser: 点击Launch图标下载slave-agent.jnlp—-》拷贝slave-agent.jnlp到配置的远程工作目录—-》双击运行文件(会检测你本地的java版本是否合适);或者直接输入:
javaws D:\jenkins-workspace\slave-agent.jnlp。 - 方式二 Run from agent command line

JNLP(Java Network Launching Protocol,java网络加载协议 )是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应用程序。javaws命令运行.jnlp文件,javaws -viewer在java控制面板中显示高速缓存查看器,可看到客户端已经安装的webstart应用程序
我的配置

启动shell
BUILD_ID=DONTKILLMEecho "当前路径:"pwd# 定义变量appName="zhiyuan-1.0.0.jar"jenkinsDir="/home/jenkins/workspace/zhiyuan/target/$appName"runDir="/home/zhiyuan"appDir="/home/zhiyuan/$appName"mkdri runDirecho "停止应用"PID=$(ps -ef | grep $appName | grep -v grep | awk '{ print $2 }')if [ -z "$PID" ]thenecho "应用已经是停止状态"elseecho kill $PIDkill $PIDfiecho "移动应用目录"rm -rf $appDircp $jenkinsDir $runDirecho "启动应用"cd $runDirnohup java -jar $appDir > log.log &echo "启动成功"
