* 写在前面的一段话:
根据目前的工做须要,以及为了接下来新产品先后端间更高效的协同,我决定爬一下Jenkins的坑。本文经过git钩子+Jenkins实现了,本地git push代码,Jenkins会自动响应并拉取码云上最新的代码值服务器上,使得本地提交代码时,线上可以同步的更新代码,省去了手动更新服务器上代码的重复工做。前端
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工做,功能包括:
一、持续的软件版本发布/测试项目。
二、监控外部调用执行的工做。
一、在安装Jenkins以前,须要先安装JDK及配置系统环境变量,由于Jenkins是基于JAVA的。java
下载JDK8安装包并上传至服务器,在安装以前建议先检查下是否安装过JDK,由于Jenkins最新的2.x版本是基于JDK8的,经过下面命令能够查询node
# rpm -qa | grep java
若是有,会出现已安装的JDK列表。执行下面命令依次卸载便可git
# rpm -e --nodeps <列表里各项>
二、安装JDK8github
# rpm -ivh <下载的安装包名称>
三、检查JAVA版本web
# java -version
四、配置环境变量vim
打开配置文件后端
# vim /etc/profile
按i键能够进入编辑模式,按pagedown翻到最后,添加上以下配置api
export JAVA_HOME=<JDK安装的路径> export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
按Esc退出编辑模式,并输入下面命令保存并强制退出浏览器
:wq!
从新应用修改后的配置文件
# source /etc/profile
PS:能够打印出$PATH变量,查看是否配置成功
# echo $PATH
若是输出了相对应的路径则说明配置成功,能够进行下一步了!
一、如同安装JDK,先下载Jenkins的.war安装包并上传至服务器(也能够将Jenkins存储库添加到yum repos,并从这里安装Jenkins.详情可见 Jenkins文档 ),进入Jenkins包所在文件夹执行下面命令启动Jenkins
# java -jar jenkins.war --httpPort=8090
启动后用浏览器打开http://<ip>:8090,密码复制粘贴便可,而后按照提示登陆,并安装推荐的插件...
OK,至此,基础准备工做已经完成,咱们在服务器上安装了Jenkins并启动,而后进行了初始化配置。接下来咱们就须要创建了一个新任务,开始配置咱们须要的功能了。
思考下个人需求:本地push代码到码云,Jenkins自动拉取最新的代码。因此须要将本地、服务器与码云三者间关联起来
一、在Jenkins插件管理里找到已安装插件,如图
检查一下三个插件是否安装,若是没有,请安装
二、安装好后重启Jenkins,接下来即是新建一个任务:
PS: 若是你的项目在拉取代码后须要其它操做,诸如:安装依赖、打包等,可在构建、构建后操做里配置,本文再也不演示
三、配置码云的webhooks
添加 url格式为 http://<User ID>:<API Token>@<Jenkins IP地址>:端口/generic-webhook-trigger/invoke
其中 userid 和 api token 在jenkins的系统管理-管理用户-admin-设置里
密码就是jenkins登录的密码,填写完成保存,点击测试如图
出现图示结果,而且Jenkins里显示构建成功
那么说明git钩子已经生效。你也能够本地push代码来测试一下!
来看看jenkins拉取的代码吧,在jenkins workspace里能够找到
那么问题来了,我觉得这样就Everything has been done,打开后竟然是这个样子
想一想我最初的目的,自动化的流程是实现了,可是实时同步线上预览挂掉了,这可真的是不行不可以不能够的,我决定出去看看外面的世界找找灵感(答案),果真被我找到了
方法一:在jenkins命令行脚本输入
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
方法二:在启动时指定参数
# java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war --httpPorrt=8090
运行,若是仍是报错 记得清下浏览器缓存!
至此,done!
Jenkins 功能十分强大,在如今前端项目工程化的背景下,能够替开发和测试人员作不少重复性的工做,本次基于Jenkins作的只是一个销应用场景下的demo,在公司新产品开发时也能够基于此进行更多功能的完善!