小记一下最近研究的自动化部署
整理下需要用到的环境
- Jenkins 2.107.2
- Docker 17.11.0-ce
- Gogs 0.11.46.0418
- Linux Ubuntu 16.04
Linux Ubuntu 用的是阿里云服务器
可能需要用的环境
- Nenux3 (这里我是用到了,因为项目中有第三方对接的开发JAR包。而我Jenkins构建的也是一个Maven项目,第三方jar包不做maven配置会导致jeknins中构建失败,解决这个问题也花费了一些时间,我选择的是搭建私有Maven的模式,也就是选择Nenux3进行Maven私服搭建,使用Docker集成搭建很方便,以供参考)
整个流程基于Docker这个封箱环境进行操作
1.Docker安装
Docker 安装Docker文档地
这里以Ubuntu安装命令作简单演示,不同需求及不同操作系统请安装官方文档给出的教程进行命令操作
当Docker安装完毕后,启动Docker服务。
2.Jenkins 安装
Jenkins登录界面演示
Jeknins主界面演示
Jenkins 具体安装步骤请自行根据官方文档配置
这里我安装Jenkins镜像不是采用命令形式而是使用的仪表盘来自一款开源产品。
简单介绍一下Portainer:
界面非常好看并且友善的Docker Web界面化产品,功能也满足中小型公司对于服务器镜像管理的需求。
附上Github 链接 Portainer Github
登录界面是这样的
然后主界面是这样的
选择需要安装的网络镜像
对镜像进行配置,可设置外网映射内网端口
好啦,Docker以及WEB UI 就介绍到这了。另外还有一些也不错的UI工具可以参考下面这个博客 Docker UI 比较
3.Gogs安装 同理直接在Docker内容器拉取
这里贴下官方文档链接 Gogs安装
注意:Gogs需要配合数据库环境(官方给出的说明并非一定要另外安装,但是建议还是单独安装不用自带SQLlite数据库),建议提前在Docker容器中安装好数据库。我这里是提前在Docker中安装了MySql数据库。
Gogs登录界面演示
Gogs主界面演示
4.Nenux3 安装
下载后镜像完成后,再使用Portainer工具进行管理。对端口映射进行配置以及镜像启动。
好啦,到这里应该基本的环境都搭建完毕了。
下面我们开始进行完成一个测试环境的持续集成和自动部署项目吧。
1.新建一个Jenkins任务(这里我选择的是Maven任务,公司主流项目都是基于Maven进行开发了)
选中第二个新建一个Maven项目任务
首先进行生成配置。
- 第一个勾选项是对于服务器内存的控制,保持一定量的构建项目以及时间设置。
- 第二个勾选项是github关联
2.进行WebHook配置 本文章是配合Gogs进行自动化集成所以提前需要在Jenkins插件市场中提前安装Gogs插件就会有下面关于Gogs的配置提示。
- 第一个红框是关于Gogs秘钥验证的配置,如果不需要加密验证可不用勾选。
- 第二个红框是关于Jenkins任务进行回滚构建时需要用到的,如果没有回滚需求可不用勾选。
- 需要进行构建回滚的配置这里我贴一下
回到Gogs配置中,Gogs的具体项目配置过程我就不说了。参考给出的官方链接以及其他专门搭建Gogs环境的博客。这里我们需要配置一个Web钩子,以达到push后出发Jeknins构建的目的。
- 首先选择增加一个Gogs Web钩子并选中为Gogs钩子类型
- 然后配置(这里就可以配置秘钥,如果配置了需要和刚刚上门我们提到的Jenkins Gogs配置中的秘钥保持一致才可推送成功)
- 最后配置完成进行测试
3.源码管理
- 第一个红框你Gogs中项目的地址
- 第二个红框你对应的验证登录用户名和密码
- 第三个红框查看源码时会用到,可以很方便的跳转到你的Gogs源码中去查看变化比较。这里选择Gogs即可
- 第四个红框则为你的Gogs项目地址
4.构建触发器与构建环境
这里我基本没有用到就不做太多讲解了。除了构建环境中我勾选了第一个选择,也就是删除工作区在构建开始前。
5.Pre Steps
这里的话构建步骤,可以选择自写一些脚本达到不通的构建目的。此处我有使用到,是为了配合构建回滚使用。
构建回滚这个问题也让我困扰许久看了很多博客都没有成功,其中一篇博客算对我帮助比较大的下面贴一下。
其中的构建脚本还是有点问题的,后来我问了朋友之后对脚本修改了一下才可用。
我的构建回滚的shell脚本,此处脚本是配合签名Webhook中对参数进行构建的关键:
6.构建设置
E-mail Notification 勾选可用在构建成功后给你的E-mail发邮件进行通知。这个需要提前在Jenkins系统配置中配置好你的Jenkins邮箱SMTP以及管理员邮箱,注意SMTP配置的邮箱需与管理员邮箱一致。这里也是我踩过的坑,略提一句。
7.构建完成后的操作
这里是我们的最后一步了
- 第一个红框是对构建完成后的项目存档操作以便于后期用于构建回滚操作,非必须。
- 第二红框为远程部署到Tomcat容器的打包文件类型
- 第三红框为远程部署到Tomcat容器的打包文件名
- 第四红框为远程部署到Tomcat容器的账号配置以及远程Tomcat容器的URl管理地址
8.构建或回滚