胡乱杂想
拿到一个任务之前,首先要想明白如何构建Job,测试代码和目标代码是什么关系。测试的数据,比如测试数据需要调用目标代码入口,继而产生我们的测试数据。比如开发提交代码后,每次就自动部署到QA环境,这种情况你只要去取数据,还有考虑什么时候出发测试。
在和github打交道时候,我们会pull代码,这个时候需要有合法的账号,或者ssh的public key。\
想要jenkins能收到github的even,必须将jenkins的接收时间的入口配置到github的webhook上免。并且在测试通过。通常情况下web hook会用ping去测试,但是有的jenkins会禁掉ping事件,所以建议用push event测试
邮件的设置,如果所有的环境对你是透明的,这里的意思是,环境你可以修改,比如防火墙,网络通信,端口等。这个时候很简单,保障邮件SMTP服务器和你的reception邮箱是通的就好。但是大公司的网络都是黑盒的,所以邮件不通的时候,一定问清楚什么网段的环境要用什么样的账号,别浪费时间去debug了,大公司这些都是章程。他们的邮箱一般都是内部邮箱,都免验证的。
如果你用别人的jenkins,自己都没权限ssh上去,那么遇到问题就会多了。比如我遇到pull代码的时候,没权限往公共repository里面下载依赖包。折腾好久,最后在mvn build的高级选项里面勾选用私有的repository。如果你能ssh上去,那不是直接修改文件或者用户权限就OK了。
有的时候想调用java里面的main方法,网上最推荐的是用mojo插件,条用exec.java
当你classpath很复杂的时候,这个插件不一定能保证工作,我的就不可以,最好的情况,你将main方法放在test里面调用,maven帮你搞定一切环境。
定制测试报告邮件也是个头更的事情。自带的不能定制出好的模板,用email-ext很强大,但是我遇到一个奇葩的问题。我建立的maven项目,模板里面总是读不到testActionReuslt,添加publish junit test result构建。建立maven job,话说maven默认就是用junit做测试的,它和junit集成的很好,maven知道测试报告就在tareget下面。但是奇葩的事情是,不设置目标report,就生成不了报告。但是maven的job又没有配置的地方,因为maven应该知道,所以jenkins就没这个选项让你配置。我折腾的要死。后来想算了,删掉job,重新建立一个customize的job,手动选择build用maven,这样终于可以配置report的路径。下面故事也就结束了,测试结果里面正确显示,多少pass,多少failed。