一键发布项目_v1.0.1
作者:若布与宫合
前言
简介
用途
介绍web层一键发布
流程简图
主角Jenkins的构建界面
阅读技巧
- 请查看左侧导航
说明
目录
使用插件i5ting_ztree_toc
可以生成带样式的左侧目录,但遗憾地是它不支持稍微复杂的语法,如表格、页内链接等,若有余力,请更新i5ting_ztree_toc
源码以适应需求
快速开始
job-全自动发布配置
job-jar发布配置
触发job
SVN目录
指定节点发布
start
发布完成后的目录
序号 | job | 说明 | |
---|---|---|---|
job1 | web层增量全自动发布(含静态文件、配置文件增量更新,及执行下游job:job2) | /home/prj/abcPlatform | 上游job |
job2 | 纯jar发布 | /home/prj/abcPlatform_jar_deploy(${JOB_NAME}) | 下游job |
准备
说明
该配置相对复杂,请务必仔细阅读,若配置不成功,请根据日志判断错误,甚至地毯式检查配置有无纰漏。由于水平有限,难免有瑕疵,请斧正。
工具
- Jenkins 2.89.4 +
- Maven 3.5 +
- Subversion
知识
- Jenkins基础操作
- Maven基础知识
- Subversion更新原理
简介
全自动发布思路
需求
- 增量发布,尽量不改变文件的时间戳
- 效率
分析
Subversion等源码库
源码库工具基本都有增量更新的策略,因此可用于增量发布
文件结构
已经部署的项目结构与源码库的文件结构差异巨大
部署好的项目 ↑
源码库的项目↑
因此,很难实现直接从源码库down代码来发布
方案
考虑到发布工具-Jenkins现有的功能,经过分析,我认为如下发布比较合适
步骤
- 静态文件与svn同步
- 配置文件`resources${profiles.active}`与svn同步
- 配置文件`resourcesPublic`与svn同步
- 合并配置文件,——缘于svn机制,详见下文
- 发布jar包
- 重启服务器等
配置
配置Jenkins
文档
jenkins自带了文档,在每一个配置项的最右边,有一个问号,点击问号,可以查看文档
概念
为了便于理解后文,请先理解几个概念
job
任务
- job串行
前一个任务完成后,继续下一个任务
项目关系
项目关系
- job并行
任务并驾齐驱
构建
开始任务
任务有哪些内容?比如,检出或更新代码到服务器、对源码打包、重启servlet容器以及执行shell、python脚本等
- 构建后操作之
Trigger builds of the other projects
构建后,继续构建其它项目
工作空间
存放代码的文件夹
maven命令
- clean 清空
- install 生命周期,执行绑定于该生命周期的操作,如执行插件
访问Jenkins
参数 | 值 | 备注 |
---|---|---|
地址 | 192.168.4.84:8082 |
双击选中,复制 |
用户名 | test |
|
密码 | 123456 |
新建job
new job
如何进入配置界面
找到job,点击job,点倒三角,点击配置,即可进入配置界面,如图:
管理配置
配置job
job-全自动发布配置
说明
该job执行静态文件发布,成功后,触发java代码发布
新建job
新建一个自由风格的job,名称是
abcPlatform_全自动发布
,一定要是自由风格的,因为不需要执行maven命令
开启并发构建
General->在必要的时候并发构建 勾选
关联节点
见关联结点
配置工作空间workspace
进入配置界面,点击顶部的
General
选项卡按钮,点击高级,显示高级配置,勾选使用自定义的工作空间
,填入工作空间,如/home/prj/
。这样配置可以准确生成目录:/home/prj/${JOB_NAME}
源码库配置
点击配置界面的源码管理
说明
src/main/resourcesPro 与 src/main/resourcesPublic 配置文件属于相同目录,更新时,后者会覆盖前者,因此先将 src/main/resourcesPublic 存放于临时目录abcPlatform/WEB-INF/classesTempStorePleaseIgnore
,之后再合并。如果删除abcPlatform/WEB-INF/classesTempStorePleaseIgnore
目录,目录下的文件会重新创建,时间戳会改变,因此不建议删除
配置静态文件 - src/main/webapp
参数 | 值 | 备注 |
---|---|---|
Repository URL | svn://192.168.4.56/abcEcommercePlatform/develop/abc-platform/src/main/webapp |
|
Credentials | svn账号密码 | |
Local module directory | abcPlatform/ |
相对workspace的一个目录 |
Repository depth | infinity |
配置文件 - src/main/resourcesPro
点击Add module
按钮,继续配置源码
参数 | 值 |
---|---|
Repository URL | svn://192.168.4.56/abcEcommercePlatform/develop/abc-platform/src/main/resourcesPro |
Credentials | svn账号密码 |
Local module directory | abcPlatform/WEB-INF/classes/ |
Repository depth | infinity |
配置文件 - src/main/resourcesPublic
点击Add module
按钮,继续配置源码
参数 | 值 |
---|---|
Repository URL | svn://192.168.4.56/abcEcommercePlatform/develop/abc-platform/src/main/resourcesPublic |
Credentials | svn账号密码 |
Local module directory | abcPlatform/WEB-INF/classesTempStorePleaseIgnore/ |
Repository depth | infinity |
注意:上述配置的项目根目录必须等于下述pom.xml
文件里的deployName
配置的值
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<deployName>abcPlatform</deployName>
</properties>
源码配置完毕
shell
合并配置文件
增加执行脚本
点击顶部的构建
选项卡按钮,新增构建步骤,选择Execute shell
,复制下述代码进去,正常情况下,粘贴后,修改脚本里的PROJECT就可以了,可实现配置文件合并。因为cp命令的参数包含u
,所以拷贝只在有更新时执行
#!/bin/sh
#title=合并配置文件
#${TITLE}
#@Author ChengChong
#var
TITLE=合并配置文件
PROJECT=abcPlatform
TEMP=classesTempStorePleaseIgnore
ROOT_PATH=/home/prj/
WEB_PATH=/WEB-INF/
AT=ACTION
OP=操作完成
AC=进入目录
WILL=即将执行
CL=:
INFO=[INFO]
ERROR=