前段时间在公司服务器上配置了Jenkins,目前有两个客户项目已经设置为自动化部署。
公司Jenkins部署服务器、客户项目服务器均为Windows Service,所以本文均以Windows环境为背景(Linux其实除了命令区别,部署甚至比Windows更方便。。。)
公司代码目前托管于码云所以这里使用了Jenkins的码云插件,方便在发布分支提交数据时自动进行构建发布
Step0:准备
Jenkins服务器请先安装JDK、Git、Maven等工具,并配置JAVA_HOME
其中JDK、Git默认安装,Maven解压缩即可。
请确认部署项目的服务器可以外网访问或者与Jenkins服务器在同一内网,可以使用SSH访问(Windows安装OpenSSH参考我之前的文章)
Step1:安装
官网下载地址:https://jenkins.io/download/
可以下载Windows安装版本,也可以安装Generic Java package (.war) war包版本直接部署至Tomcat容器中(文件路径会与安装版本不同)
Windows版安装完成后,可以在安装目录下(默认:C:\Program Files (x86)\Jenkins)jenkins.xml中,修改端口号;(默认--httpPort=8080)并重启Jenkins服务
Step2:设置
【1】浏览器打开jenkins的URL(windows默认:http://127.0.0.1:8080;Tomcat默认:http://127.0.0.1:8080/jenkins)
【2】首次启动需要解锁jenkins,进入对应目录打开相应文件,填入其中初始密码,点击【继续】
【3】自定义Jenkins,点击【安装推荐的插件】
【4】创建第一个管理员用户,输入管理员信息后,点击【保存并完成】
【5】实例配置,直接点击【保存并完成】;点击【开始使用Jenkins】
Step3:全局配置
【1】首页点击【系统管理】,点击【全局工具配置】
【2】配置JDK,点击【新增JDK】,输入别名,取消勾选【自动安装】,输入JAVA_HOME
【3】配置Git,输入别名,输入git.exe(windows)的路径
【4】配置Maven,同JDK;设置MAVEN_HOME为Maven解压目录
Step4:安装插件
【1】首页点击【系统管理】,点击【管理插件】,选择【可选插件】
【2】搜索并下载以下插件:(按实际需求下载)
Maven Integration (构建maven项目)
Publish Over SSH(SSH发布插件)
Gitee(码云插件)
【3】首页点击【系统管理】,点击【系统设置】
【4】配置Gitee,详见:https://gitee.com/oschina/Gitee-Jenkins-Plugin
【5】配置Publish over SSH
增加SSH Server:
Name:名称
Hostname :配置应用服务器的地址
Username :配置应用服务器登陆用户名
Remote Directory :可不填
点击【高级】可配置单独的密码或密钥、SSH端口
Step5:新建任务
【1】首页点击【新建任务】,输入名字,点击【构建一个Maven项目】
【2】配置参数
General:填写描述,勾选【丢弃旧的构建】,输入保持构建的最大个数(构建历史信息保存个数)
源码管理:勾选【Git】,Repository URL配置项目Git路径,配置Credentials,输入账号、密码/SSH私钥,Branch Specifier (blank for 'any')输入对应分支
构建触发器:可使用Gitee插件,也可勾选【定时构建】来实现自动化执行,这里简单设置了触发构建的发布分支,详见:https://gitee.com/oschina/Gitee-Jenkins-Plugin
PS:webhook需要进入码云项目管理中设置
构建环境:勾选【Add timestamps to the Console Output】
Build:Goals and options输入命令跳过maven测试:clean package -Dmaven.test.skip=true -Ptest
Step6:SSH部署项目
【1】构建项目设置中(已有任务进入任务配置)
Post Steps:勾选【Run only if build succeeds】,点击【Add post-build step】,选择 【Send files or execute commands over SSH】
【2】配置SSH部署信息
SSH Server:选择系统设置中配置的应用服务器
Source files:war包的相对路径(相对于项目根目录)
Remove prefix:war包的相对目录
Remote directory:应用服务器的目录(Windows服务器默认为C盘用户目录下)
Exec command:应用服务器对应的脚本
至此配置完成,只需要发布分支提交代码,Gitee会通过webhook通知Jenkins服务器,Jenkins自动通过Git拉取代码,Maven打包,SSH将war文件传输至目标服务器,执行脚本
PS:由于是Windows系统,所以这边把Tomcat设置为服务,方便使用bat脚本操作,如果直接调用Tomcat的启动脚本,ssh一旦断开就会关闭。。。linux可以使用 nohup & 命令