真小白-部署Jenkins教程

5,218

背景

公司的前端、后端构建及部署工作都是人工去做,随着业务扩大,项目迭代速度变快,人员增多,各种问题都暴露出来,将通过一个简单案例分享一下基于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. 找到初始化密码
  5. 选择默认插件
  6. 等待下载完成后
  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
  10. Dingding[钉钉] Plugin 钉钉Jenkins通知器
  11. Multiple SCMs(配置多个git)
  12. Git Parameter Plug-In (参数化配置)

全局配置

Manage Jenkins->Global Tool Configuration

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

新建maven 项目

点击新建Item

备注:如果有父子关系的程序,父工程先install到仓库里面。 或者下载插件:Multiple SCMs(配置多个git) 参考地址:Jenkins配置教程 强制指定自定义maven 仓库 job-->configure-->Build-->Goals and options: clean package -Dmaven.repo.local=D:\dev\maven3.1.1\m2repository

如果要提交代码后自动化构建 需要配置:(需要权限) 配置成功后 点击test可以测试自动部署

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

1、下载插件Git Parameter

2、配置参数属性

3、最终效果

Jenkins配置钉钉通知

1、配置钉钉机器人   2、安装钉钉通知插件 

  3、配置项目构建后通知 

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

5、最终结果

Jenkins权限管理

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

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

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

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

所以需要Jenkins服务器免密登陆到目标服务器的配置。

参考 【小白】linux 免密码登陆

附录

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}')

参考

Jenkins中文文档

Jenkins部署Nodejs教程

持续集成 之 Jenkins插件 Multijob plugin