背景
JAVA使用maven、Gradle构建打包,所以只要给jenkins安装该软件,然后拉git上的代码构建完成,把包传到项目的服务器
省去了开发手动上传到项目服务器,这样打包效率快很多
jenkins不光可以完成构建,还可以显示构建时间、回滚项目
添加主机机器
系统管理(左侧栏)-系统设置
此时可以填写机器名,建议Remote Directory使用/目录,因为如果你一个机器有多个途径,/data/product用于后端,/data/web用于前端主目录,但是当你填写/data/product此时这台机器只能使用该目录,想要用/data/web只能重新修改该目录,或者新增一台

高级功能,设置 ssh端口密码、超时

安装工具
Jenkins->全局工具配置
可以询问开发,当前他电脑的版本,然后给服务器安装一样的版本即可
可以自己安装,然后填写地址,也可以自动安装(可能网络问题安装失败)

也可以搞成变量的方式,例如这个是gradle名称,可以方便于不同多版本打包

新建job任务
创建一个自由风格的job任务

General通用
1.丢弃旧的构建
- 保持构建的天数:7
 - 保持构建的最大个数:5
 
保持天数可以为空,然后构建个数为5。反之也可以,2个同时存在意义就不知道了。肯定是优先保持最大个数5个
2.参数化构建过程
- branch分支:master、dev等分支,由开发提供
 - ENV环境:可以给机器打标签
 - job:发布的项目名
 - Status状态:发布与回滚
 - Version回滚的版本
 



源码管理
可以密码、也可以公钥方式进行登录验证,这样使用变量branch由构建参数负责,这样就可以打不同分支master、dev

构建触发器

构建环境

Pre Steps

Build
clean install  -pl  app-version/web -am -Dmaven.test.skip=true

构建后
构建后是jenkins构建项目好了之后该做的处理,当然是将构建好的包传到服务器
jenkins构建目录是/var/lib/jenkins/workspace,当前job名为web-dist,那么他实际的目录是/var/lib/jenkins/workspace/web-dist,此时jenkins的主目录就在这样,Source files和Remove prefix是基于此时的job目录的
- Source files:是jenkins的文件,web/dist.tgz
 - Remove prefix:是jenkins当前目录,web/
 - Remote directory:当前机器的工作目录,如果你在添加主机时使用/data/product目录,那么该目录是主目录,你想把包传递到/data/product/jar-back,那么此时目录是写jar-back就可以了。
 - Exec command:当前机器执行脚本
 

此时可以通过label标签来标识环境,如test、uat、prod、prod-3
当我们在uat环境测试完成功之后,确认无误需要将新的更新推送到生产,但是为了更加准确的模拟生产环境,所以有一个灰度环境
生产是通过负载均衡的地址,如果我们有3台生产机器,只要把第三台为0,让其他2台机器工作,由我们自己使用第三台机器来进行灰度测试。
常见的环境
- test测试环境
 - uat准测试环境
 - prod生产环境
 - prod-3生产第三台机器
 
高级


