Jenkins配置
来源:互联网 发布:啪啪啪软件 编辑:程序博客网 时间:2024/04/29 03:43
Jenkins配置
一、环境搭建
1. 打开http://jenkins-ci.org/, 下载jenkins.war。
2. Jenkins的安装非常简单,可以直接在命令行中使用java –jar jenkins.war运行,默认会运行在8080端口,也可以将jenkins.war放在tomcat中去执行,建议使用tomcat。
因为编码原因Jenkins控制台或git的修改记录遇到中文会显示一些乱码,这时只需要修改
Server.xml文件,在apache-tomcat-6.0.43\conf\server.xml
中Connector加入URIEncoding="UTF-8"即可解决,
3.启动tomcat服务器,catalina.bat run或者 运行startup.bat
D:\Jenkins\apache-tomcat-6.0.43\bin>catalina.bat run
这时在浏览器中输入htpp://localhost:8080就可以看到Jenkins的模样,如果是放在tomcat/webapp中,输入htpp://localhost:8080/jenkins即可
二、Jenkins配置
1. 系统设置
打开Jenkins的系统管理>系统设置:
a) 在jdk中填入jdk安装地址。
b) 在ant中填入ant安装地址。
c) 在最下面的邮件通知中设置邮箱的smtp地址等信息。设置完成后可以测试是否设置成功。
Git,Ant,等等安装这些插件以后,如果本地已经安装过就直接写具体路径,如果没有安装
勾选自动安装后会自己下载并安装,如下图官方文档关于Android sdk描述
2. 安装插件
打开系统管理>插件管理>可选插件,安装如下插件:
a) ant
b) Android Emulator Plugin[如果要用模拟器来测试]
c) Jenkins Emma plugin
e)Git相关
Gitlab Hook Plugin(用于和git服务器建立Hook)
GitLab Plugin
安装好Git插件后,在系统设置中把git设置好,Git路径要设置为cmd/git.exe,而不是bin下,设置为bin时git的log可能为乱码,如下为我的设置
设置为C:\Program Files (x86)\Git\cmd\git.exe
而不是C:\Program Files (x86)\Git\bin\git.exe
三、新建job并配置
点击新建,输入Iteam名称,名称尽量不要用中文,点击OK
1.配置Git
Repository URL:输入git项目路径,即clone代码的地址,如:
Repository URL:git@XXXX/XXXX.git
Credentials:
点击Add,如下配置,根据不同需求选择不同的Kind,输入描述信息以便选择
至此,如果便可以从git上clone一份代码下来,保存后点击立即构建即可实现代码下载
2.构建触发器
勾选上图1,Build when a change is .......
在git服务器中setting->web hooks URL中输入1中的URL,并勾选触发事件,点击Add Web Hook,当在git上执行tirgger相应事件后,就会触发jenkins上相应的job
勾选上图2,Poll SCM(如不希望自动构建,则不要先此项)
按规则输入日程表,例如输入H/30 * * * *表示30分钟执行一次job
3.生成apk文件
因为ktplay_sample中引用了很多jar包,当直接用命令ant debug时会报一些错,例如下图
这时就需要先在每一个被引用到的jar文件中都加一个build.xml,
用命令android update -project -p[project路径]来生成,执行完会生成build.xml,local.properties,project.properties三个文件,
然后通过在ktplay_sample文件下执行ant debug来生成ktplay_sample.apk
本地运行没问题后在jenkins上配置ant命令,可以配置完成一个后就立即构建一下,避免出现的问题太多无法定位是哪步出的错。
Build File:如果当前路径不是ant要执行的路径,只需要把具体路径写到build File中即可
到此在ktplay_sample\bin\就生成了ktplay_sample-debug.apk,在构建时记得观察控制台,有问题及时解决
4.将apk文件安装到手机
或者在winows command中执行install命令
5.开始运行测试程序
com.zutubi.android.junitreport.JUnitReportTestRunner是为生成测试报告引入的report.jar的runner类,系统默认是android.test.InstrumentationTestRunner,需要在AndroidManifest.xml中配置,我为了生成报告可以存放在手机指定的sdcard自己写了一个com.ktplay.testing.common.InstrumentationTestRunner2,因为report.jar生成的报告是存在/data/data/com.ktplay.sample/files/,写入这个文件需要手机root,或者用模拟器执行
6.adb shell命令执行测试程序
1.
运行所有测试用例
adb shell am instrument -w [测试程序包名]/[instrumentation name]
如:
adb shell am instrument -w com.ktplay.testing.internal/com.zutubi.android.junitreport.JUnitReportTestRunner
2.运行单个测试类或某个TestSuite
如:adb shell am instrument -e class com.ktplay.testing.home.TestAllHomeTag -w com.ktplay.testing.internal/com.zutubi.android.junitreport.JUnitReportTestRunner
3.运行某个测试类里面的某个测试方法运行某个测试类里面的某个测试方法
adb shell am instrument -e class com.ktplay.testing.home.KTHomeTest#testHomeTop -w com.ktplay.testing.internal/com.zutubi.android.junitreport.JUnitReportTestRunner
4.运行两个不同的测试类或类中的方法
adb shell am instrument -e class com.taobao.taobao.test.TestLogin,com.taobao.taobao.test.TestRegister#testRegister
-w com.ktplay.testing.internal/com.zutubi.android.junitreport.JUnitReportTestRunner
7.生成测试报告
Build.xml只是将生成到手机的报告pull到PC端
并将这个target设置为default
然后执行ant -buildfile [路径]/build.xml
8.指定报告路径
以上配置完成后,即可保存配置进行构建
9.测试报告预览
四、分多个job执行
Build other projects如果一个job内容太多,可以分为多个job进行,并勾选相应触发条件
我目前将整个job分为安装apk:ktplay_testing_internal_installAPK和运行测试:ktplay_testing_internal_installAPK_Test两个job,当第一个job构建成功后执行第二个job
配置如下:
或者 Build after other projects are build
五、发送邮件
配置管理员邮件地址并测试是否成功
六、参数化构建
1.注册用户
2.设置身份验证令牌
3.参数化构建
构建
输入参数
七、slave节点管理
你的jenkins部署在一台电脑上,但是自动测试代码可能是部署在专门的测试机上,这时候就需要管理新建jenkins节点,实现在jenkins上方便的管理执行自动测试。
进入在系统管理-->管理节点
1.新建节点
输入节点名称,选择Dumb Slave点击ok
2.配置节点
说明:
a)远程工作目录,会把所有job信息及git clone的代码存到这个位置,需要安装相应的软件会也安装在这个目录下
b)标签(Lable)要记住这个标签名称,配置从节点的lable时要输入这个名称
c).用法(Usage):只允许绑定到这台机器的job
我们选择“只允许运行绑定到这台机器的Job”,如果选择“尽可能使用这个节点”可能会把这个job运行在不满足环境的机器上。
d)Lunch Method选择:Launch slave agents via Java Web Start ;这一点比较关键
e)Avaliablitiy选择:Keep this slave online as much as possible;
点击Save保存配置,显示如下,这时新配置的从节点是未在线offline的
这需要在从结点的PC上下载slave.jar执行命令
java -jar slave.jar -jnlpUrl http://10.200.2.132:8080[Slave节点的ip]/computer/ZHANGYANF/slave-agent.jnlp
注:10.200.2.132是我从节点的ip地址
然后从具体的需要添加的节点电脑上登陆来。进入当才新建的节点,会看到如下图所示内容,点击launch,然后运行下载下来的软件,会在节点安装相应的软件,用于和节点通信。
执行完后就不会显示offline
3.为从节点(Slave)新建Job
Label Expression就是之前配置时记住的标签名称
其它和直接在服务器配置job是一样的。
八、错误集锦
1.乱码问题
a) 修改Tomcat默认编码
在TOMCAT中的server.xml中的
<Connector中添加两个设置useBodyEncodingForURI="true" //设置POST和GET使用相同编码
URIEncoding="UTF-8" //对URI使用utf-8编码处理
?
<Connector useBodyEncodingForURI="true" URIEncoding="UTF-8" connectionTimeout="20000" maxThreads="150" port="8888" protocol="HTTP/1.1" redirectPort="8443"/>
a)
tomcat环境中file.encoding的修改方法
原因是因为file.encoding默认的字符集跟操作系统有关,中文操作系统下面默认的字符集是GBK,如果流程定义的xml文件中用UTF-8,
则不能正确转换,所以需要修改file.encoding的值为UTF-8。
部署在tomcat中的文件要修改file.encoding的值,可以在tomcat的catalina.bat文件中set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%的后面加上 -Dfile.encoding="UTF-8"
c).我的change log中产生乱码,可能是在修改系统配置中的git路径后避免的
设置为C:\Program Files (x86)\Git\cmd\git.exe
而不是C:\Program Files (x86)\Git\bin\git.exe
下边这个可能不用设置
d)
Jenkins控制台中乱码问题
由于服务器环境及应用层各版本的不同、编码方式的不同因此会有很多种情况会出现乱码问题。
由于Jenkins中的job运行的是独立的一个shell环境,许多的环境变量与服务器中是不一样的,因此在job中执行的命令也就会有所差异。
因此可以在job中执行env命令,同时在服务器中执行env命令查看环境的异同点。
对于Jenkins中乱码问题,首先,确保Jenkins的容器如Glassfish,Tomcat的编码是正确的,已设置成如UTF-8编码。
若还有乱码,做如下尝试:
系统管理——系统设置,添加编码环境变量
言而总之:
控制台乱码原因在于服务器上的log文件编码非UTF-8
例如可以先查看当前job下builds/lastSuccessfulBuild/log 日志文件的编码方式
# file log //查看log编码方式
再查看jenkins中系统管理——系统信息里file.encoding系统变量的编码
若file.encoding系统变量编码非UTF-8,则将使log文件非UTF-8,因此导致乱码
e).在D:\Jenkins\apache-tomcat-6.0.43\bin加入文件
内容为set "JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8"
set "JAVA_OPTS=%JAVA_TOOL_OPTIONS%"
文件名为:setenv.bat
2.adb server is out of date. killing..
分析:出错的原因是adb的端口被其他程序的进程占领了,所以要做的就是找到并kill该进程。
解决找到,结束进程
netstat -ano | findstr "5037"
3.The project either has no target set or the target is invalid.
解决:
后边需要加一个参数 -t,
例如 android update project -p .[表示当前路径] -t 18[android target id]
通过命令android list target可查看到所有 target id如下图
4.邮件配置错误 javax.mail.AuthenticationFailedException: 550
错误 javax.mail.AuthenticationFailedException: 550
原因:
解决:
使用2006前注册的用户
5.修改工作目录
刚开始安装Jenkins实在tomcat下直接部署的,也没有仔细考虑到Jenkins的工作目录问题。后来自己建立了一些工程遇到了在工作目录下没有相关权限的问题,原因是默认的工作目录是/root/.jenkins/jobs/,Linux需要有root权限才能进行相关操作,Windows一般存于C:\Users\KTplay\.jenkins。这个位置看起来也不太舒服。从网上查找相关资料后,下面简要介绍如何修改工作目录:
jenkins储存所有的数据文件在这个目录下. 你可以通过以下几种方式更改:
以Linux为例
1、 使用你Web容器的管理工具设置JENKINS_HOME环境参数.
2、 在启动Web容器之前设置JENKINS_HOME环境变量.
3、 (不推荐)更改Jenkins.war(或者在展开的Web容器)内的web.xml配置文件.
这个值在Jenkins运行时是不能更改的. 其通常用来确保你的配置是否生效.
采用第一种方法:使用你Web容器的管理工具设置JENKINS_HOME环境参数.
(关于方法二,可以直接在tomcat/bin/startup.sh 中添加JENKINS_HOME这个变量)
修改方法:
进入tomcat下的conf目录,创建一个jenkins.xml文件,将如下几行加入,
<Context docBase="path/to/tomcatwebapps/jenkins.war">
<Environment name="JENKINS_HOME" type="java.lang.String" value="/new/path/to/jenkins" override="true"/>
<Context>
其中jenkins.war文件就是我们放到webapps目录下的jenkins文件,要给出这个文件存放的绝对路径,value后面就是变更后jenkins的根目录的位置。
反复启动tomcat后,在tomcat下webapps的jenkins目录path/to/tomcatwebapps/jenkins/WEB-INF,修改以上目录中的web.xml文件,
<env-entry>
<env-entry-name>JENKINS_HOME</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>/new/path/to/jenkins</env-entry-value>
</env-entry>
重启tomcat,打开jenkins,jenkins根目录修改完毕。
6.INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo
错误:INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.ktplay.testing/com.zutubi.android.junitreport.JUnitReportTestRunner}
原因:包名不一致测试程序中的AndroidManifest.xml中package=com.ktplay.samlpe.test,而我写测试命令的时候写成了com.ktplay.testing
解决:将测试命令写为com.ktplay.samlpe.test/com.zutubi.android.junitreport.JUnitReportTestRunner
引起这个问题的原因多数因为包名不一致,或者是将测试程序命成和apk一样的包名所致
九、参考资料
1.Jenkins Master/Slave架构
http://www.cnblogs.com/itech/archive/2011/11/11/2245849.html
2.Jenkins的Linux的Slave的配置
http://www.cnblogs.com/itech/archive/2011/11/10/2244690.html
3.Jenkins的Windows的Slave的配置
http://www.cnblogs.com/itech/archive/2011/11/09/2243025.html
4.Jenkins学习笔记http://kurenai.elastos.org/2013/03/11/jenkins%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B8%80/
5.Jenkins入门总结
http://www.cnblogs.com/itech/archive/2011/11/23/2260009.html
6.6.Jenkins的授权和访问控制
http://www.cnblogs.com/itech/archive/2011/11/15/2249457.html
- Jenkins:Jenkins配置
- Jenkins配置
- Jenkins配置
- Jenkins 配置
- Jenkins配置
- jenkins配置
- jenkins配置
- jenkins配置
- Jenkins配置
- 配置Jenkins
- jenkins配置
- jenkins--配置
- Jenkins配置
- Jenkins的配置
- jenkins 配置 svn
- Jenkins安装与配置
- Jenkins用户配置
- Jenkins 安装与配置
- redis的数据类型-Strings
- 一目了然uboot的start.S流程
- PV统计
- 2014个人总结
- redis的数据类型-Hash
- Jenkins配置
- PHP 资料
- 关于构架与构架师(转自lifetragedy的专栏)
- Redis数据类型-Set
- Jquery操作select标签
- Vijos 1926 紫色的手链
- HTML+CSS使用CSS为网页添加样式 (4)
- Codeforces Round #293 (Div. 2) D. Ilya and Escalator
- OC总结——block语法