公司的前端、后端构建及部署工作都是人工去做,随着业务扩大,项目迭代速度变快,人员增多,各种问题都暴露出来,将通过一个简单案例分享一下基于Jenkins的前后端自动化工作流搭建的过程,搭建完这套工作流,我们只需要在本地发起一个git提交,剩下的单打包构建,代码部署,邮件提醒等功能全部自动化完成,让持续集成、持续交付、持续部署变得简单易操作,真正解决人工构建部署的诸多问题。

Jenkins是什么?

Jenkins 是一款业界流行的开源持续集成工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。

War包安装

1. 官网下载Jenkins War包

2. 命令启动,java -jar jenkins.war --httpPort=8080
可以用-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m限制Jenkins占用内存

3. 浏览器打开http://127.0.0.1:8080/

4. 找到初始化密码

jenkins 前端打包速度很慢 jenkins打包原理_软件测试

5. 选择默认插件

jenkins 前端打包速度很慢 jenkins打包原理_jenkins 前端打包速度很慢_02

6. 等待下载完成后

jenkins 前端打包速度很慢 jenkins打包原理_压力测试_03

7. 设置登陆密码

下载插件

Manage Jenkins->Manage Plugins->高级(最下面)

增加 下载速度 替换默认Url

http://mirror.esuni.jp/jenkins/updates/update-center.json

Manage Jenkins->Manage Plugins->可选插件

安装以下插件

1、Publish Over SSH 用于连接远程服务器
2、Deploy to container 插件用于把打包的应用发布到远程服务器
3、Maven Integration plugin
4、Pipeline Maven Integration Plugin
5、Gitlab Hook Plugin(git提交的时候自动编译)
6、GitLab Plugin(git提交的时候自动编译)
7、GitLab Authentication Plugin (git提交的时候自动编译)
8、WebHook (git提交的时候自动编译)

9、Locale 下载完成后去全局配置里面 Locale->设置zh-CN

jenkins 前端打包速度很慢 jenkins打包原理_python_04

1、Dingding[钉钉] Plugin 钉钉Jenkins通知器
2、Multiple SCMs(配置多个git)
3、Git Parameter Plug-In (参数化配置)

全局配置

Manage Jenkins->Global Tool Configuration

jenkins 前端打包速度很慢 jenkins打包原理_自动化测试_05

Publish over SSH (配置远程推送的服务器可以多个)

jenkins 前端打包速度很慢 jenkins打包原理_python_06

新建maven 项目

点击新建Item

jenkins 前端打包速度很慢 jenkins打包原理_python_07

jenkins 前端打包速度很慢 jenkins打包原理_软件测试_08

备注:如果有父子关系的程序,父工程先install到仓库里面。
或者下载插件:Multiple SCMs(配置多个git)

jenkins 前端打包速度很慢 jenkins打包原理_压力测试_09

强制指定自定义maven 仓库
job–>configure–>Build–>Goals and options:
clean package -Dmaven.repo.local=D:\dev\maven3.1.1\m2repository

如果要提交代码后自动化构建
需要配置:(需要权限)

jenkins 前端打包速度很慢 jenkins打包原理_软件测试_10

jenkins 前端打包速度很慢 jenkins打包原理_软件测试_11

配置成功后

jenkins 前端打包速度很慢 jenkins打包原理_jenkins 前端打包速度很慢_12

点击test可以测试自动部署

Jenkins参数化配置(选择分支部署)

1、下载插件Git Parameter

2、配置参数属性

jenkins 前端打包速度很慢 jenkins打包原理_自动化测试_13

jenkins 前端打包速度很慢 jenkins打包原理_压力测试_14

3、最终效果

jenkins 前端打包速度很慢 jenkins打包原理_软件测试_15

Jenkins配置钉钉通知

1、配置钉钉机器人

jenkins 前端打包速度很慢 jenkins打包原理_压力测试_16

2、安装钉钉通知插件

jenkins 前端打包速度很慢 jenkins打包原理_压力测试_17

jenkins 前端打包速度很慢 jenkins打包原理_压力测试_18

3、配置项目构建后通知

jenkins 前端打包速度很慢 jenkins打包原理_自动化测试_19

jenkins 前端打包速度很慢 jenkins打包原理_python_20

4、配置Jenkins发送消息给钉钉

jenkins 前端打包速度很慢 jenkins打包原理_python_21

5、最终结果

jenkins 前端打包速度很慢 jenkins打包原理_python_22

Jenkins权限管理

安装插件Role-based Authorization Strategy
可以访问:Jenkins权限管理参考

Jenkins服务器跨服务免密执行shell脚本

场景:很多情况下Jenkins都是单独服务器部署,发送已经打包好的服务包给目标服务器启动。不可避免有在定制化操作:

例如:发送目标服务器前,先备份当前服务器运行的服务包,就需要定制化的shell脚本去执行这个操作。每次输入密码肯定是不靠谱的。
所以需要Jenkins服务器免密登陆到目标服务器的配置。

附录

docker部署不建议使用,推荐使用war启动Jenkins下载镜像

docker pull jenkins/jenkins:lts

安装镜像 

docker run --name jenkins --user=root -p 8080:8080 -p 50000:50000 -v /Users/wei/Documents/jenkins_home:/var/jenkins_home -d jenkins/jenkins:lts

卸载容器

docker rm -f $(docker ps -a |  grep "jenkins"  | awk '{print $1}')