一键就能发布项目-DevOps_v1.0.1

本文详细介绍了使用Jenkins实现项目一键发布的流程,包括job配置、源码库管理、SVN目录设置、节点发布等内容,旨在简化web层的发布操作,提高发布效率。
摘要由CSDN通过智能技术生成


一键发布项目_v1.0.1

作者:若布与宫合

前言

简介

用途

介绍web层一键发布

流程简图

Created with Raphaël 2.2.0 点击发布按钮 更新静态文件及web配置 更新配置文件 更新jar 自动重启web服务器 测试 发布完成 yes no yes no
流程简图

主角Jenkins的构建界面

在这里插入图片描述

阅读技巧

  • 请查看左侧导航

说明

目录

使用插件i5ting_ztree_toc可以生成带样式的左侧目录,但遗憾地是它不支持稍微复杂的语法,如表格、页内链接等,若有余力,请更新i5ting_ztree_toc源码以适应需求

i5ting_ztree_toc_effective

快速开始

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现有的功能,经过分析,我认为如下发布比较合适
步骤

  1. 静态文件与svn同步
  2. 配置文件`resources${profiles.active}`与svn同步
  3. 配置文件`resourcesPublic`与svn同步
  4. 合并配置文件,——缘于svn机制,详见下文
  5. 发布jar包
  6. 重启服务器等

配置

配置Jenkins

文档

jenkins自带了文档,在每一个配置项的最右边,有一个docNavigate问号,点击问号,可以查看文档

概念

为了便于理解后文,请先理解几个概念

job

任务

  • job串行

前一个任务完成后,继续下一个任务

在这里插入图片描述
项目关系

在这里插入图片描述
项目关系

  • job并行

任务并驾齐驱

构建

开始任务

任务有哪些内容?比如,检出或更新代码到服务器、对源码打包、重启servlet容器以及执行shell、python脚本等

  • 构建后操作之Trigger builds of the other projects
    构建后,继续构建其它项目
工作空间

存放代码的文件夹

maven命令
  • clean 清空
  • install 生命周期,执行绑定于该生命周期的操作,如执行插件

访问Jenkins

参数 备注
地址 192.168.4.84:8082 双击选中,复制
用户名 test
密码 123456

新建job

newJobnew 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
合并配置文件

addShell增加执行脚本

点击顶部的构建选项卡按钮,新增构建步骤,选择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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值