百度百科里给Jenkins的定义是,“持续集成软件平台+工具“,没用Jenkins之前看不懂,用了之后还是看不到看不懂这个说法。
找到了Jenkins官网的解释“The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.“——提供上百款插件实现服务器的自动化工作(这里的自动化指运维),包括构造应用(项目、服务、软件工程),部署应用,和任何服务器相关功能实现的自动化,Jenkins是开源软件,而且在这方面是走在领先地位的哦。
目前我用到Jenkins的功能是,集成maven、git,经过一些github、tomcat的配置,一键操作一键完成项目从github发布到阿里云服务器。Jenkins调用git的命令,拉github的项目,项目经过maven打包war文件,用tomcat的manager发布到服务器。
Jenkins的优点
1. 省时间,每次发布系统基本都是差不多的操作,对于急着看上线效果的你来说,简直就是心急吃热豆腐;
2. 发布系统是个细致活,容易出问题,就算你牛逼你仔细可以不出问题,这些精力用在别的地方岂不是更好;
3. Jenkins把构造、部署系统的流程抽象化,做每件事只需要关注当前的工作不必考虑上下游的东西,比如你的项目是从github拉下来的,只要考虑配置github的东西,不用考虑项目构建发布;
4. Jenkins提供的插件有为我们做了很多事,比如对接github,使用svn的命令完成项目拉取。我们没办法精通所有的构造、部署方法,更没办法知道所有冷知识,只需要我们提供一些参数,Jenkins就能为我们做好应对那些应用(git、maven…)的工作,Jenkins简直就是服务器界的瑞士军刀啊。
安装Jenkins
从Jenkins官网下载Jenkins的war包。
https://jenkins.io/download/
用终端登录,可以用wget http://mirrors.jenkins.io/war/latest/jenkins.war
下载war包。
把jenkins.war放到tomcat根目录下的/webapps。启动tomcat,jenkins项目就算部署成功了,浏览器访问 http://{ip}:{port}/jenkins 就能进入jenkins的初始化界面(初始的时候有个密码,密码写在日志,很容易找到的),初始化界面可以创建第一个用户,安装插件,。
文章的重点不是jenkins的部署,而且这个也挺简单,就不贴图了。
Github+Maven+Tomcat的发布流程配置
Jenkins可以做很多事,下面说的是配置从Github拉去代码,发布到服务器的自动化过程。
首先,我们要把“硬件”层面的东西配好,Git、Maven和Tomcat的Manger,然后要准备好Github和Manger的账户信息,最后就可以配置整个流程了。
Git & Maven
安装Jenkins的电脑或服务器上面要装上Git和Maven,借助他们可以用来拉Github、Gitlab的代码,和构建war项目(不仅限于war)。如果是在Centos服务器上,安装这两个的工作就很简单了
- 1
- 2
yum是用来下载rpm文件的,rpm才是真正Centos的安装工具,rpm安装的默认路径如下
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
Tomcat Manager
tomcat也是有管理界面和接口的哟!!
通过管理界面和API,可以查看系统状态信息和项目部署情况,还能发布项目、删除项目。
开启这项功能很简单,做两个事就行。首先,开放manager的外网访问权限,然后解锁具有这些权限的role和user。
manager默认是开启的,也有基本的账号能登录进去,但是部署在服务器上的tomcat就不能访问了,在tomcat根目录conf/Catalina/localhost
文件下创建文件manager.xml
,allow是允许访问的IP。
- 1
- 2
- 3
- 4
- 5
manager默认的roler和user都被关闭了,修改tomcat根目录下conf/tomcat-user.xml
文件,如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
deploy用户拥有管理部署项目的界面操作、api操作权限。
Github的Personal Access Token
通过Personal Access Token授权就可以访问Github的接口。创建一个拥有repo和admin:repo_hook权限的token,Jenkins通过该token,调用Github的接口创建Webhooks。
上面的Token是属于账户级的东西,Webhooks是项目级别的,当项目发生了某个事件,Github会给一个指定的url发Post请求。有了Webhoks,就不需要定时去拉Github的代码,而让Github主动通知。GitLab也有类似的机制。
万事俱备,开始要配置Jenkins了!!!
Git和Maven,要在Global Tool Configuration全局工具配置好。
这里贴出Git,Maven,JDK的配置,涉及到的name都只是名称可以随便填。
一般Home是安装路径的根目录,而执行文件路径只要该路径下能访问执行文件就行
系统管理->系统设置,可以配置一些Jenkins的基础设置
下面的这个配置就是设置Github接口调用地址和认证方式的地方,
Credentials用secret test,虽然也可以用账号密码验证,secrest test可以只授权部分功能开发,而且更不容易被盗取。secrest test创建如下,只需要把Github的Personal Access Token填入Secret就可以了。
Override Hook URL
是Github回调Jenkins的接口配置。
Shared secret
上面的Credentials是Github给Jenkins的验证Token,shared secret是Jenkins给Github提供的验证Token,在Github的Personal Access Token创建那的secret就是填这个。原理差不多,整一个长一点的字符串就行。
上面做的是全局配置,接下来可以开始创建Jenkins工程了!!!
这里我们创建的是Maven项目,关于其他项目还没探索过,后续可能会有文章哟。
如果你没看到下面的界面,那应该是搞错项目类型了。
maven项目的配置如下:
1. 设置git从哪拉代码,和拉去的分支(工作区可以查看代码)
2. “GitHub hook trigger for GITScm polling”以前叫做“Build when a change is pushed to GitHub”,Github Plugin插件改了这个设置的名称。这Webhooks的设置虽然是在这开启,但是账号却是全局维护的,虽然有点摸不着头脑,大概设计者考虑到不同项目用的是同一个Github账号,这样可以避免Webhooks重复设置。
3. Maven的构建语句
这里需要额外提下pom.xml文件,即使Maven可以正常跑起来,pom.xml没配好,还是会出问题的。下面是笔者可以正常发布的pom.xml。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 配置tomcat发布信息
这里的账号信息来自Tomcat manager。这里说两个要注意的点:WAR/EAR files的路径是相对路径,相对的是Jenkins的工作区,maven默认会打在target文件下,如果pom.xml没配<finalName></finalName>
,要小心哦!;Context path是项目发布的名称,也就是url访问的名称。