公司最近正在推进自动化部署经过筛选选定了jenkins 由于前期是公司测试部进行部署安装配置,后期在编译打包部署的时候出现问题后由我来配合进行部署,所以前期的jekins安装等已经有测试弄好 所以前面的安装配置部分我就简单的截图展示一下 重点记录后续的部署操作.
具体点请参考
转载自
https://blog.csdn.net/qq_29914837/article/details/82779697
(自己偷懒就找了这个,如果老铁不同意请私信我撤下链接)
1. 安装
首页>Manage Jenkins >Manage Plugins >Available
搜索插件名字 例如Git plugin
选中之后 点击底部 install without restart 进入安装页面安装完毕后重启jenkins
插件安装此处只按GIT做demo 其余类似 重点关注的是后续的配置
2.插件
这里我列了一些自己用到的插件 仅供参考
Git plugin (git)
Deploy to container Plugin (主要用于后期发布到tomcat)
Maven Integration plugin (maven)
NodeJS Plugin (node配置)
Publish Over SSH (主要用于push war包到指定服务器 由于我用的是 tomcat远程部署的方式 所以此处可以不安装 后续会针对远程发布部署的两种方式做介绍 有兴趣可以了解)
Subbersion Plug-in (svn)
① git安装 (由于项目是前后端分离的前端是vue 使用的是 vue-element-admin 所以在编译的时候 会提示要配置Git)
选中之后 点击底部 install without restart 进入安装页面安装完毕后重启jenkins
②环境变量
配置环境变量
C:\Program Files\Git\bin
C:\Program Files\Git\mingw64\libexec\git-core
把上述两个地址复制(可能版本不同这个两个会不一样,核心是记住bin目录下,一个是git-core)
我使用的是默认的安装地址 根据自己的安装路径配置就行.
③jenkins 全局变量
首页>Manage Jenkins >Global Tool Configuration
如果安装成功这里就会出现Git 如果如果安装成功但是没有正确配置环境变量那么这里会爆红
jenkins中node安装分两种 一种是直接自己安装好的 ,另一种是使用jenkins自带的
直接选择对应的nodejs版本就好了 它会在jenkins tools目录下面给自动下载一个
另一种就是我们自己装好的 选择对应目录就行 如下
记得要配置Maven仓库的配置文件哦
如果选择跨服务器远程部署的话 可以选择装这个 (不推荐 因为配置操作麻烦,但是有实际需求的可以看看先配置 后面讲两种部署方式的区别)
Hostname 是你要部署的目标服务器ip
username 是你服务器登录的帐号 填写完毕后 如果目标服务有密码 则需要
点开 Advanced
选中 Use password authentication,or use differentkey 输入密码
配置完成后还无法使用需要安装SSH服务
我自己找的是FreeSSHD
又开始偷懒了 我参考的是
https://jingyan.baidu.com/article/f7ff0bfc1ebd322e27bb1344.html
跟着这个操作完毕 因为我这是windows 教程里面写的是 Shell 是linux下的 所以还得吧SFTP点一下 变绿就好
只有这个地方不同 另外SFTP选项里面有个设置路径的 不知道是否可以指定目标服务文件路径 时间仓促没来得及仔细研究
如果有老铁 研究了可以交流学习一下.
到此返回到jenkins里面 配置SSH的地方 点击 Test Configuration 按钮 如果配置无误 会显示 Success 配置完毕.
三.自动化部署
新建项目 New Item
点ok
①General
②Source Code Management
配置svn代码仓库地址
credentials 点Add 填写svn帐号密码
此处是来拉取代码的
强力提醒 pom文件里面要配置编译发布的仓储地址 否则会报错
<distributionManagement>
<snapshotRepository>
<id>nexusid>
<name>snapshotsname>
<url>http://xxx.xxx.xxx.xxx:8081/nexus/content/repositories/snapshotsurl>
snapshotRepository>
distributionManagement>
③Build Triggers
④Build Environment
选择Provide Node & npm bin/folder to Path
点击NodeJS Installation 选择对应的node就行 可以选择jenkins 的也可以选择自己安装配置的(推荐,因为使用系统插件的报了错没来得及研究)
⑤Pre Steps
由于我们是前后端分离 前端是VUE所以我们的思路是先打包前端 然后吧前端dist下面的文件复制到后端webapp目录下面
我们分为四步
说明 :因为我们的jenkins安装的是windows版本的所以命令都是windows下的 linux下的没有研究 欢迎交流
步骤一: 前端vue项目需要各种插件支持所以需要下载 推荐如下方式 常规 npm install由于网络原因可能会下载不了
@echo off
d:
cd D:\jenkins\workspace\VuePlat\bz-platform-client
npm install --registry=https://registry.npm.taobao.org
pause
步骤二:先删除dist目录 然后编译文件
@echo off
d:
cd D:\jenkins\workspace\VuePlat\bz-platform-client
del D:\jenkins\workspace\VuePlat\bz-platform-client\dist
npm run build:prod
pause
步骤三:因为我们的项目dist最终生成的文件夹里面第一次生成完老是会出现.svn这个文件导致后续第二次执行的时候报错,尚未来得及深究所以通过命令判断直接删除
@echo off
dir D:\jenkins\workspace\VuePlat\bz-platform-client\dist | find ".svn"
if %errorlevel%==0 goto ok
if %errorlevel%==1 goto end
:ok
rd D:\jenkins\workspace\VuePlat\bz-platform-client\dist\.svn /s /q
:end
pause
步骤四:复制到后台代码webapp目录下面
注意需要 /s 目的是复制dist下面所有的文件 /y是跳过提醒
xcopy D:\jenkins\workspace\VuePlat\**\dist\* /S /Y D:\jenkins\workspace\VuePlat\**\webapp
⑥Build
开始编译打包后台代码
到此拉取代码编译打包代码所有环节已经结束,下面开始就是远程发布到tomcat了
⑦Post-build Actions
上面说到远程发布的时候有两种,我们先说最简单的一种先配置好如下
war/ear file 是打包完毕后的war包所在路径
containers根据自己的需求选择对应tomcat 这个tomcat需要与目标服务器的tomcat版本一致(尚未测试,此处先这么认为吧 如果有老铁试了可以来交流反馈)
credentials 是目标tomcat的管理员账号密码 (稍后讲如何配置tomcat帐号)
tomcat url 是目标tomcat启动后的访问地址 (tomcat的安装就不介绍了)
信息配置完毕
注意 : context path的路径就是 发送到目标tomcat 的webapps下面的war包的名字,也就是项目访问的的时候的名字
例如 context path 配的是 myproject 那么发送到目标服务器就是 myproject.war
访问的时候 http://192.168.1.123:8080/myproject
还有就是 如果配置成 / 那么默认就会打包成 ROOT.war 这样的话 访问项目的时候 就不需要加项目名
接下来我们介绍如何配置tomcat权限 如果不配置是无法吧war发送到目标tomcat的.
首先准备好一个纯净tomcat
conf 下面 tomcat-users.xml
新增这些内容
标红内容里面的帐号密码就是 上面jenkins里面配置tomcat的时候填写的帐号密码
然后 tomcat的 webapps>manager>META-INF 下面 context.xml 把 context 的value 注释掉 保存 启动tomcat
然后 build jenkins 就会自动吧war发送到 目标tomcat的 webapps下面
然后就可以直接访问项目了.
上面已经可以使用了
但是最终发布的时候还有另外一种方式 就是通过SSH方式
前面我们讲了如何 安装SSH 工具用到了freeSSHd jenkins我们也配置了系统环境
与上面直接远程发布到tomcat不同的是在最后 Post -build Actions 我们选择 send build artivacts over SSH
name 里面选择的就是我们在jenkins系统里面配置的ssh
sourcefiles 就是最终打包完毕的 war包目录
其他的就按下图的配置
需要注意的就是 Exec command这个 这个bat所在的目录一定要和 freeSShd工具里面 SFTP上传的目录一样
比如我当时测试默认的就是 C:\Users\Administrator
这个bat的作用就是 把打包好的且已经传到目标服务 C:\Users\Administrator 目录下的war包复制到 tomcat 下面 并且 重新启动tomcat 内容如下 (这种发布的方式我也只是粗略测试能够使用 如果有老铁仔细研究了可以相互交流)
@echo off
cd E:\apache-tomcat-8.5.43\bin
call shutdown.bat
此处是从jenkins传到目标服务器的文件下复制到 tomcat
call startup.bat
:end
pause
至此所有自动部署已完毕 欢迎交流指正!