工具的出现,目的就是为了提高我们的工作效率,让我们把时间花在做重要的事情上。学习本文你需要具备基本的Linux知识,学习自动部署的前提是你能够手动在服务器完成部署。
服务端环境
CentOS 7.0,Java1.8,Maven 3.5.2 ,git1.8(环境变量需配置完成,并非必须是相同的环境)
Jenkins的下载与安装
下载
官网:https://jenkins.io/
我这里是普通的部署只需要下载 Generic Java package (.war) 版本即可,关于其他的版本例如Docker版,可能会在后期推文中讲解。下载完毕后上传至您的Linux服务器中.
安装
在上一步中,你也可以在服务器端通过wget命令下载,命令:
wget http://mirrors.jenkins.io/war/latest/jenkins.war
运行Jenkins,命令:
nohup java -jar jenkins.war --httpPort=10010 > /usr/local/vcens/serv/log/jenkins/jenkins.log 2>&1 &
该命令意为: nohup .... & 是将指令挂在后台运行,java -jar jenkins.war 是启动Jenkins运行, --httpPort = 10010 为指定Jenkins的服务端口,> path >2>& 1 是将日志输出在指定目录下
建议将该脚本编写成shell文件放在服务端,执行该文件即可,为了方便下次操作方便。
操作完成后进入日志目录查看,如果无误即可在浏览器输入 "ip+端口/域名"即可进入安装界面
根据上边红色的路径查看初始密码;
vim /path
填写完毕后,要求安装插件,你可以选择安装全部,或者跳过安装,稍后手动安装
安装全部插件如图,静待安装完成,然后设置登陆密码等。
至此,Jenkins安装完成。下图有一个任务是我自己的,默认是没有的。
创建自动部署任务
添加git账户认证信息
:在面板首页>Credentials>System>Global credentials (unrestricted)>Add Credentials>填写您的认证信息并保存
配置Git
:在面板首页>系统设置>全局工具设置>找到git选项>删除默认配置>添加自己服务器端的git路径>取消勾选自动安装>保存>完成
:查看git 路径::添加git
新建ITEM>输入名称和选择构建一个自由风格的软件项目>确定
在接下来的页面中你会看到如下Tab
在源码管理中选择Git并Copy你的码云或Github地址到 Repository URL ,选择您的认证信息,在Branch Specifier (blank for 'any') 中填写您的开发分支
如你所见,在Credentials 右边的ADD按钮我不建议使用,因为在我这里尝试了很多次都是无法添加的,所以我把第一步改为了添加git配置)
你当然可以选择Generic Webhook Trigger作为您的构建触发器
构建
:点击增加构建步骤选择 Execute Shell,当然您可以选择你需要的方式。
如下图,写入您的操作指令即可
这里我的脚本执行流程为
maven 清理编译代码> 查找服务相关的进程并停止服务 >将原工作服务文件备份> 将新构建完成的文件部署到工作目录>执行启动命令
至此,配置完成,点击保存按钮,你可以在面板首页看到你添加的构建任务,点击进入该任务,点击左侧的立即构建,即可开始处理任务。
选择Console Output即可查看运行日志。
如果配置操作等没问题且看到了Finished :SUCCESS ,恭喜你,完成了自动部署的90%,当然,还有例外情况,如果您编写的shell有问题,虽然可以Finished :SUCCESS,但是,很遗憾,去检查一下吧。
配置WebHook
进入码云>选择你要配置的项目>管理>WebHook,你就可以看到如下界面
我们需要做的就是配置WebHook里的URL信息,再打开Jenkins
:面板首页>系统管理>管理用户>选择你要操作的用户>点击左侧的设置>右侧的>API tokens >点击Show API Token >你可以看到如下界面:
然后根据以下格式配置码云的URL信息
http:User ID:API Token@你的Jenkins服务地址/generic-webhook-trigger/invoke
保存完成后,点击测试,去你的Jenkins面板首页查看任务是否已经开始构建。配置完成后只要你提交代码,Kenkins都会自动帮你拉取最新代码并进行自动构建,部署。
个人建议不要配置WebHook进行自动部署,因为如果频繁提交,都会触发Jenkins执行自动编译构建部署,导致的后果可想而知了。你可以在提交代码后手动进入Jenkins服务器进行触发构建,更加安全。因为我是个人的小项目,所以并没有进行其他的比如测试等操作,Jenkins服务,生产环境都是在同一服务器进行,如果是更复杂的环境或项目,该教程仅作为基本参照,不一定能完全解决您的问题。