设为首页 收藏本站
查看: 1081|回复: 0

[经验分享] Jenkins+Maven+Git搭建持续集成和自动化部署的配置

[复制链接]

尚未签到

发表于 2018-9-4 09:12:14 | 显示全部楼层 |阅读模式
DSC0000.jpg

  前言
  持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示。自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误。之前一直没有把这个做起来,最近的新项目正好有机会,费了一番功夫总算搞好了,特此记录。
  1. 开发环境
  我这边建立的标准开发环境如下:
  1. Maven做项目管理;
  2. Git做代码管理;
  3. SpringMVC+Spring+Mybatis搭建的程序框架;
  4. Mysql作为数据存储,Druid做连接池;
  5. unitils作为测试框架;
  6. Hibernate Validator作为数据验证;
  7. log4j作为日志输出。
  注:其实这套东西非常像Grails,但不敢用太激进的技术和框架,担心招人的问题-_-!
  2. Jenkins的部署
  Jenkins原名是Hudson,这个渊源这里就不追溯了,网上多得是,但是千万别下错了,官网地址是http://jenkins-ci.org/ 。建议直接下载最新版本。
  这个软件的安装是我见过最简单的了,直接取war包放到tomcat下,启动tomcat即可。相应的工程配置会在~/.jenkins目录中。(当然你根据官网给的那种安装方法也行,只是在debian的那个弄法还要去下载openjdk等等,多下了很多东西,相关配置也按linux目录标准分开的,还要去找。)
  另外提醒一下,建议把Jenkins安装在Linux上,这样就不会出现ssh等命令找不到的问题,否则还要想办法去处理。
  3. Jenkins的插件
  安装好后直接访问“http://yourhost:8080/jenkins”即可进入主界面,点击“系统管理”->“管理插件”,首次进入都是空白的,要等1分钟左右才能看到内容,在后台估计是在做更新或者下载,然后重新再进此界面就能看到内容了。
  3.1 Git插件
  在“可选插件”中找到“ GIT plugin ”安装,最下面有个安装完重启的勾选项,选中即可。这里最搞笑的是检测网络是否连通的办法是去尝试打开google,岂不知天朝是打不开的,还好不影响下载。。。
  3.2 Email插件
  这个事情非常蛋疼,之前测试怎么都发布出来邮件,最后升级了一下默认插件就行了,狂汗。在“可更新”中找到“ Mailer Plugin ”选中并更新即可。另外如果想有更丰富的邮件内容,就去“可选插件”中安装“ Email Extension Plugin ”,具体邮件内容配置网上大把可以搜。
  3.3 其他插件
  默认就装了很多常用插件,比如Maven、Junit等等,如果使用感觉有问题可以尝试升级一下版本,但是没有升级说明,也不知道升级了什么东西。
  4. 系统设置
  主界面点击“系统管理”->“系统设置”即可进入。重点配置以下内容:
  1. Java、Git、Maven的目录位置,确保可以正确找到命令;
  2. Jenkins URL,自动生成的,检查一下即可;
  3. 邮件的设置。这里注意一下,上面有一个“ 系统管理员邮件地址 ”需要填写,另外“Extended E-mail Notification ”中填写配置,原来的“邮件配置”就不用再理会了。
  5. 项目设置
  在主界面直接“新建”,就会有一个新的项目。重点配置以下内容:
  1. 源码管理:选择Git,填写“ Repository URL ”,并加上相应的“ Credentials ”,其中认证信息用私钥的话干脆直接把私钥内容填上去就行了,省的不知道目录查找规则还不知道出的啥问题。
  2. 构建触发器:这个地方要把“ Build periodically ”和“ Poll SCM ”都选上,时间格式都填写成一样的即可,比如“H/15  * * * *”,下面会有个具体执行时间的提示,Build动作会自动比Poll延迟3分40秒,这个设定还是很合理的。
  3. 构建:增加两个构建步骤,分别是“Execute shell”和“Invoke top-level Maven target”,注意先后顺序,可以拖拽摆放的。脚本执行根据自己需要,比如我需要去修改数据库连接配置,官方建议是自己在工程里面写好脚本,这里直接调用,而不是在这写一个完整的脚本。Maven构建就加上“clean test”即可,就是运行“mvn clean test”的命令。
  4. Publish Junit test result report:在测试报告(XML)上加上“**/target/surefire-reports/*.xml”即可,这样就会每次测试完自动找到测试报告,在Jenkins上即可在每个构建结构里面查看到。
  5. 邮件通知:在构建后增加“Editable Email Notification”,填写邮件的接受者、内容格式可以直接用全局变量,重点是配置一下发送触发条件。
  6. 安全性配置
  经过以上配置进行一次构建就会发现,Jenkins可以看到太多内容了,包括pull到的源码,所以非常有必要增加权限控制。进入“系统管理”->“ Configure Global Security ”中进行如下步骤:
  2. Jenkins专有用户数据库,先允许用户注册;
  3. 授权策略选择“安全矩阵”,新加一个“admin”的用户,把所有权限都开给admin用户;
  4. 在主界面的用户中找到admin,进行配置,设置登陆密码;
  5. 先重新登陆测试一下是否admin正常,没有问题就关闭允许用户注册,把匿名用户的所有权限都去掉。
  7. 自动化部署
  这里我没有让Jenkins每次测试都去部署,一方面是考虑到单元测试基本已经满足需要了,另一方面因为测试太频繁了,一直部署也搞得Stage测试环境要经常重启,反而影响正常的人工测试。所以自己写了个脚本,在必要的时候去运行一下去自动完成整个部署工作。
#!/bin/sh# update codegit pull# packagemvn clean  
mvn package -Dmaven.test.skip=true# deployWAR=`ls target | grep war`
  
TOMCAT=/home/test/apache-tomcat-6.0.41
  
mv target/$WAR $TOMCATcd $TOMCAT# invoke another deploy scriptsh deploy-war.sh $WAR webapps
  8. 一个非常蛋疼的问题
  这个和以上问题都无关,只是极其不解的是这个错误在Windows下不出现,在Linux下打成War也不会出现,只有在Linux下直接执行Maven test就会出错。其实问题的根源就是配置书写不够规范,但是错误出现的不一致性实在让人蛋疼。报错如下:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): xxx  这个就是Mybatis找不到绑定的类,但是xml是正确打包的,怎么看都是没大问题,并且windows也是对的,最后发现是我在写模糊路径的时候,classpath后面必须要加个*才是标准写法,正确写法如下:
    
   
  
  
  

  
  
  
   
  
   
  
   
  
   
  
  
  
操作过程中有任何问题都可以联系我qq:203833507
  
或添加公众号更多技术分享
DSC0001.jpg




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-562271-1-1.html 上篇帖子: jenkins updatecenter更新插件有问题 下篇帖子: jenkins 找不到mvn 命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表