jenkins实践

  |   1 评论   |   2,838 浏览

jenkins作为一个持续集成(CI)工具,为程序员简化各种繁琐构建,关注编码本身做出极大贡献,本帖在前人大神的基础上狗尾续貂,博大家一笑!

准备工作:4核2G云主机一台,部署有tomcat7.0+maven3.2.2+JDK1.7+git2.6.4;

任务目标:码农只需要老老实实拉代码,写代码,提交代码就好了!!! 程序员只需要在下班前commit and push一次自己今天的劳动成果到git仓库的指定分支,接下来就可以坐等jenkins为您build and deploy;接下来看我是如何给大家躺雷的!整个过程请结合之前大神发的图示自行脑补!
第一步:前往http://jenkins-ci.org/下载jenkins工具,我下载的是war形式的,需要有tomcat等容器支撑运行;
war包下载完成后丢进tomcat/webapps目录下,启动容器;
辣么第一个坑来了,之前 我用的是tomcat7是基于JDK1.6的 在tomcat启动过程中 直接报错,看日志输出 提示 jenkins版本太高,要么升级jdk,要么降级jenkins,一开始对于升级jdk,我是拒绝的,你不能让我升我就升级,我还有辣么多小玩意是基于jdk1.6开发的,玩意升级1.7后跑不了了怎么办?所以我只能将jenkins逐步往下降低版本,经过一番尝试后发现 1.580可以在jdk1.6下运行,搞起!这次tomcat是启动了,然而,访问 http://localhost:8080/jenkins进入主页就有各种黄色感叹号,提示你这个插件不能用,那个也不能用,提示你jenkins有新的版本啦!!!最关键的是 github插件用不了了,这还怎么玩??只能忍痛升级jdk咯,一番折腾略过不提,知道使用jdk1.7成功访问1.643的jenkins主页!http://localhost:8080/jenkins

第二步:进入http://localhost:8080/jenkins后选择系统管理界面,在选择管理插件,版本控制插件中,默认是没有github的,选择下载github插件,就会自动给你吧依赖的git gitserver等有依赖关系的插件一股脑下载好,如果下载失败的话,就自己去网站上下载然后上传本地插件文件安装!Deploy to container Plugin插件用于发布war包到指定tomcat容器,实际上也是使用的tomcat7-maven-plugin插件执行了tomcat7:redploy命令,如果你需要发布到tomcat集群的话,才需要此插件,因为可以添加多个发布容器.

第三步:进入http://localhost:8080/jenkins后选择系统管理界面,再选择全局系统设置,JDK,MAVEN,GIT一路设置下去,有不懂的地方就点旁边的小问号,挺管用的!
配置到Jenkins Location节点的时候,又一个坑来了,Jenkins URL请配置当前的访问路径,如果你有多个域名指向一个Ip,那么除了你在此处配置的URL外,用其他的域名访问jenkins的时候,就会有很醒目的提示:跨域风险!直接点掉忽略就行,当时在这个地方纠结了好久,最后在万能的http://stackoverflow.com/上得到了解答.Jenkins Location节点还有另一个需要填写的地方也是个个坑,说多了都是泪,那就是 系统管理员邮件地址,如果你需要用到build成功/失败给指定邮箱发送邮件的话!此处就一定要认真填写,要不然后面发送邮件就会报502,503等错误,说发送用户邮箱地址和用于接收的地址不符什么的!
继续配置GitHub Plugin Configuration节点,此处需要用到github的push钩子,不懂的话请自行百度,大概意思就是当你向指定的仓库执行特定操作比如push pull merge等操作的时候,向指定的URL发送一段此操作的相关
数据包,Credentials即为凭证,请自行添加一个能正常使用hook的票据(一般是secret text类型的)并应用,Manage hooks不必勾选,勾选也没关系,意思就是如果你在jenkins的github身份信息有仓库的admin全县的话,就会自动
给你的github网站上维护一个钩子上去,如果没有勾选的话 ,就自行在github上添加webhook,URL是http://localhost:8080/jenkins/github-webhook/ 注意替换成自己的域名
然后是邮件通知节点,按照你所知道的去配置就好了,毕竟你是用过foxmail的人!注意发件邮箱用上面说的那个管理员邮件地址就好了!

第四步:进入http://localhost:8080/jenkins后选择系统管理界面,再选择Configure Global Security界面进行安全性设置,毕竟你也不想谁都能到你这来点点点建立一大堆没用的project和war/jar吧,一般来讲授权策略选择
安全矩阵就好了,新建一个帐号,勾选上所有的权限,然后把匿名帐号的权限全干掉,注意操作的先后顺序,要不然先把匿名用户的权限干掉了然后保存了,再想去新建账户 就又是个坑了
第五步:至此,jenkins的基本就能用了,开始新建一个工程吧!进入新建界面
Item名称即为工程名,由于我们公司使用的都是maven构建工程,so此处选择构件一个maven项目!OK进入下一步,一般没有提到的地方按默认的来就好
源码管理节点选择Git,Repository URL填入仓库地址,Credentials填写github帐号密码添加一个凭证,注意请使用之前配置过webhook的帐号.这样才能触发接下来要配置的Build when a change is pushed to GitHub选项;
Branches to build为分支号,请自己人填入,
构建触发器节点即什么时候该触发jenkins的构建动作,一般勾选Build whenever a SNAPSHOT dependency is built和Build when a change is pushed to GitHub即可,当然,勾选什么看大家的意思自行选择,都是可以的
注意区分Build periodically和Poll SCM的异同,不懂请自行百度.
Build节点中Root POM填写你要构建工程的顶级父目录中的pom.xml文件,Goals and options填写你希望执行的maven命令,我填写的是clean install;为什么没有其他发布需要的的命令 稍后有说;
构建设置节点E-mail Notification填写需要邮件通知到的用户列表,用,分割,三个选项啥意思自行脑补,里面提到的module模块稍后有说;
至此需要执行jenkins自动构建功能的配置就完了,此时,你可以提交代码到jenkins工程配置的仓库对应的分支尝试触发自动构建,或者手动点击立即构建按钮,开始构建!

第六步:假如你一次到位构建成功了,那么恭喜你,github仓库的代码已经被build成对应的jar和war躺在jenkins的目录下了!然而光这样还不够,我还希望jenkins能够帮我将一个maven父工程中多个子模块自动处理,所有jar上传到公司nexus私服中,所有war发布到指定的tomcat中,继续往下看
再次选择刚刚新建的工程进入配置界面这时候开始添加构建后操作节点,因为在第一次成功构建之前,是没办法执行子模块操作的;
首先添加Deploy war/ear to a container操作,如果没有安装Deploy to container Plugin的话是没有这一项的,没关系跳过此步好了!WAR/EAR files填写*/.war通配所有web工程子模块,Containers自己选择容器类型
并填写相应的容器管理信息,如果需要发布到多个容器,继续添加容器即可!
然后添加Build other projects操作,意思是父工程build成功后会继续执行其他的build,此时要构建的项目就可以填写jenkins工程的子模块了一般命名规则是 jenkins工程名/mavengroupId:mavenartifactId 的格式,多个子模块之间用,分割,如果之前有进行Deploy war/ear to a container操作,则此处不要填写web工程模块,只写jar即可,
此时选择模块选项进入模块列表,对于Build other projects操作列表内的模块,依此点进去填写在配置选项里面的Build节点中的Goals,jar填写deploy,war填写tomcat7:redeploy(注意此处是tomcat7-maven-plugin的写法,其他容器maven插件自行百度),完成配置后再次尝试手动点击立即构建按钮,开始构建!

至此完整的一次流程就走完了,只要有用户提交代码到github仓库中,那么nexus中的jar快照就有了,tomcat下的war工程也可以访问了,真是轻松加愉快啊!

如果各位在使用jenkins的过程中,有任何疑问或者自己的见解,欢迎探讨!

评论

  • 你浩锅 回复»

    [em14][em10]本人think这篇Article写得very好,文中出现了many专业术语,让读者cant understand作者到底在说what。相当awesome!

发表评论