Jenkins如何实现如何做app自动化测试试

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
jenkins实现自动化测试分享_姜雨
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
jenkins实现自动化测试分享_姜雨
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口jenkins自动化测试搭建流程
作者:用户
本文讲的是jenkins自动化测试搭建流程,
Jenkens是Java开发的持续集成系统,实现软件开发的自动化流程。持续集成将给团队开发带来便捷,实现快速迭代。
Jenkens运行和搭建相当简单。
(1)安装Java环境(JDK 8u60)
tar -zxvf jdk-8u
Jenkens是Java的持续集成系统,实现软件开发的自动化流程。持续集成将给团队开发带来便捷,实现快速迭代。
Jenkens运行和搭建相当简单。
(1)安装Java环境(JDK 8u60)
tar -zxvf jdk-8u60-linux-x64.gz
jdk1.8.0_60/ /usr/local/jdk1.8.0_60
#添加环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_60
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
#测试javahuanj
[root@mckee jdk1.8.0_60]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
(2)安装Jenkens
#下载jenkens:
wget http://pkg.jenkins-ci.org/redhat/jenkins-1.631-1.1.noarch.rpm
sudo rpm -ih jenkins-1.631-1.1.noarch.rpm
service jenkins start #默认8080端口就是jenkens主页
如果报错:Starting Jenkins -bash: /usr/bin/java: No such file or directory
vi /etc/init.d/jenkins
#将java路径(which java)添加到candidates
安装路径:
/usr/lib/jenkins/jenkins.war
/etc/sysconfig/jenkins
/var/lib/jenkins/
#默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log
# Jenkins日志文件
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
自动化测试
jenkins自动化测试、jenkins自动化测试web、jenkins做自动化测试、jenkins自动化测试ios、自动化测试平台搭建,以便于您获取更多的相关知识。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备
云栖社区(yq.aliyun.com)为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
使用Jenkins实现持续集成构建检查
摘要:通过《使用Jenkins搭建iOS/Android持续集成打包平台》和《关于持续集成打包平台的Jenkins配置和构建脚本实现细节》两篇文章,我们已经在原理概念和实践操作两个层面掌握了如何搭建一个完整的持续集成打包平台。不过,在实际使用过程中,发现有时候还会存在一个问题。研发同学提交新的代码后,Jenkins端可以成功执行构建,并生成安装包;然而在将安装包安装至移动设备时,却发现有时候会出现无法成功安装,或者安装后出现启动闪退的情况。为了及时发现该类问题,我们还需要对每次构建
通过 《使用Jenkins搭建iOS/Android持续集成打包平台》 和 《关于持续集成打包平台的Jenkins配置和构建脚本实现细节》 两篇文章,我们已经在原理概念和实践操作两个层面掌握了如何搭建一个完整的持续集成打包平台。
不过,在实际使用过程中,发现有时候还会存在一个问题。研发同学提交新的代码后,Jenkins端可以成功执行构建,并生成安装包;然而在将安装包安装至移动设备时,却发现有时候会出现无法成功安装,或者安装后出现启动闪退的情况。
为了及时发现该类问题,我们还需要对每次构建生成的安装包进行检查。本文便是对构建检查涉及到的方法进行介绍。 构建生成 .app
为了降低问题的复杂度,我们可以选择在模拟器中运行构建生成的安装包。之前在 《从0到1搭建移动App功能自动化测试平台(1):模拟器中运行iOS应用》 也讲解过,要在模拟器中运行iOS应用,需要在Xcode中编译时选择模拟器类型,并且编译生成的文件后缀为 .app 。
对应的,构建生成 .app 的命令如下:
# build .app file from source codexcodebuild / # xctool -workspace ${WORKSPACE_PATH}/ -scheme ${SCHEME}/ -configuration ${CONFIGURATION}/ -sdk ${SDK}/ -derivedDataPath ${OUTPUT_FOLDER} xcodebuild/xctool参数说明: -workspace :需要打包的workspace,后面接的文件一定要是 .xcworkspace 结尾的; -scheme :需要打包的Scheme,一般与 $project_name 相同; -sdk :区分iphone device和Simulator,可通过 xcodebuild -showsdks 获取,例如 iphonesimulator9.3 。 -configuration :需要打包的配置文件,我们一般在项目中添加多个配置,适合不同的环境,Release/D -derivedDataPath :指定编译结果文件的存储路径;例如,指定 -derivedDataPath build_outputs 时,将在项目根目录下创建一个 build_outputs 文件夹,生成的 .app 文件将位于 build_outputs/Build/Products/${CONFIGURATION}-iphoneos 中。
同样地,这里也可以使用 xctool 代替 xcodebuild 。
这里使用到的命令和参数基本上和 《关于持续集成打包平台的Jenkins配置和构建脚本实现细节》 一文中的大致相同,唯一需要特别注意的是 -sdk 参数。因为是要在模拟器中运行,因此 -sdk 参数要设置为 iphonesimulator ,而非 iphoneos 。
命令成功执行后,就会在指定的 ${OUTPUT_FOLDER} 目录中生成 ${SCHEME}.app 文件,这也就是我们构建生成的产物。另外,熟悉 iOS 的同学都知道, .app 文件其实是一个文件夹,为了实现更好的存储,我们也可以额外地再做一步操作,将 .app 文件夹压缩转换为 .zip 格式,而且Appium也是支持读取 .zip 格式的安装包的。
至此,适用于iOS模拟器运行的构建产物已准备就绪。这里涉及到的脚本实现已更新至 【debugtalk/JenkinsTemplateForApp】 。
实现构建检查
那要怎样对构建生成的产物进行检查呢?
最简单的方式,就是在iOS模拟器中运行构建生成的 .app ,并执行一组基本的自动化测试用例。在执行过程中,如果出现无法成功安装,或者安装成功后启动出现闪退,或者自动化测试用例执行失败等异常情况,则说明我们最新提交的代码存在问题,需要通知研发同学及时进行修复。
而这些实现方式,其实我在 《从0到1搭建移动App功能自动化测试平台》 系列文章中都已经进行了详细讲解,并形成了一套较为成熟的自动化测试框架,【 debugtalk/AppiumBooster 】。
在此基础上,我们无需再做其它工作,只需要按照 debugtalk/AppiumBooster 的要求在表格中编写一组基本的自动化测试用例,即可采用如下方式执行构建检查。
$ cd${AppiumBooster_Folder}$ ruby run.rb -p &${OUTPUT_FOLDER}/${SCHEME}.app.zip&--disable_output_color &test_result.log
在如上命令中,通过 -p 参数指定构建生成的安装包,然后就可以在iOS模拟器中运行事先编写好的自动化测试用例,从而实现构建检查。
在这里,我们还可以通过 --disable_output_color 开关将输出日志的颜色关闭。之所以实现这么一个功能,是因为在Jenkins中本来也无法显示颜色,但是如果还将Terminal中有颜色的日志内容输出到Jenkins中,就会出现一些额外的字符,比较影响日志的美观。
现在,我们已经分别实现了代码构建和构建检查这两个核心的操作环节,而要执行最终的持续集成,我们还需要做最后一项工作,即在Jenkins中将这两个环节串联起来。 Jenkins配置
关于Jenkins的相关基础概念、实施流程和配置细节,我在之前的文章中已经讲解得非常详细了。在此我就只进行一点补充。
要实现在构建完成后再运行一些额外的脚本,例如我们的构建检查命令,需要使用到Jenkins的一个插件, Post-Build Script Plug-in 。
安装完该插件后,在Jenkins配置界面的 Post-build Actions 栏目中, Add post-build action 选项列表中就会多出 Execute a set of scripts 选项。选择该项后,会出现如下配置界面。
选择 Execute shell 后,会出现一个文本框,然后我们就可以将构建检查的命令填写到里面。
在这里我们用到了 ${AppiumBooster_Folder} 参数,该参数也需要通过 String Parameter 来进行定义,用于指定 AppiumBooster 项目的路径。
最后,为了便于将执行自动化测试用例的日志和执行构建的日志分开,我们将执行自动化测试用例的日志写入到了 test_result.log 文件中。然后,在 Archives build artifacts 中就可以通过 ${AppiumBooster_Folder}/test_result.log 将执行构建检查的日志收集起来,并展示到每次构建的页面中。
延续一贯的 开箱即用 原则,我将使用Jenkins实现持续集成构建检查涉及到的Jenkins配置也做成了一套模板,并更新到【 debugtalk/JenkinsTemplateForApp 】中了,供大家参考。
至此,通过本系列的几篇文章,关于如何使用Jenkins实现移动APP持续集成的相关内容应该都已经覆盖得差不多了。
不过,由于我个人的近期工作主要集中在iOS部分,因此在讲解的过程中都是以iOS为主。后续在将工作重心移到Android部分后,我会再在 DebugTalk 的这几篇文章中更新Android部分的内容。
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
邮箱低至5折
推荐购买再奖现金,最高25%
&200元/3月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
使用Jenkins实现持续集成构建检查相关信息,包括
的信息,所有使用Jenkins实现持续集成构建检查相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International基于Jenkins设计自动化测试工作流 - 简书
基于Jenkins设计自动化测试工作流
AutoTest Pipeline
自动化测试工作流的意义是为了及时反馈测试过程中遇到的问题,当前敏捷开发模式日趋流行,Scrum团队的高频增量开发方式,加大了版本迭代测试的工作量。不少团队每日都有版本发布,因此就对自动化测试提出了更高的要求。我们基于此,设计了符合Devops理念的自动化测试工作流(不包括开发工作流和运维工作流)。
自动化测试结果统计:
automation test report
自动化测试实时邮件反馈:
test results email feedback
自动化测试处于Devops中的一环,自动化测试的职责主要是负责冒烟测试以及回归测试和功能测试,包括性能测试。
automation test
自动化测试同时也是持续集成工作流中的一个环节。
CI pipeline
我们主要是用到了jenkins pipeline插件, Jenkins未来的方向是一切皆代码。目前第一步就是工作流即代码。这也符合当前软件发展的方向。用代码来定义工作流方便进行版本管理,同时也能够设计出更加复杂的工作流。
pipeline as code
stage view
Jenkinsfile
Jenkins已经采用来作为定义工作流的配置文件。类似于Dockerfile。Jenkins专门设计了一门DSL(domain scripting language)语言来描述工作流。因此要使用Jenkins Pipeline首先得学习这门领域描述语言。
在后面的章节中,我们将详细介绍Jenkins DSL语言。
It's what you do in the dark,that puts you in the light.
-----------------------------------------------
&Night gathers, and now my watch begins. It shall not end until my death. I shall take no wife, hold no lands, father no children. I shall wear no crowns and win no glory. I shall live and die at my post. I am the sword in the darkness. I am the watcher on the walls. I am the fire that burns against the cold, the light that brings the dawn, the horn that wakes the sleepers, the shield that guards the realms of men. I pledge my life and honor to the Night's Watch, for this night and all the nights to come.&
1、传统我们的项目开发模式是产品调研提出需求,开发团队研究决定开发方案选型。然后开始一个周期的开发,模块开发完成之后开始模块间的联调。联调结束之后打包交付给测试团队。测试团队,系统测试或自动化测试,然后提交bug,开发团队修复bug,周而复始。 2、传统的模式中,存在着较多...
姓名:纪雅丽 转载自:http://mp.weixin.qq.com/s/v2-BA60JilNq8CFmrBEmqQ,有删节。 【嵌牛导读】:Gartner 2016年应用开发成熟度曲线上,DevOps已入顶峰。毫无疑问,DevOps自2009年诞生...
&&互联网敏捷DevOps和自动化之5.持续集成&&持续集成的价值是什么?对于开发和测试人员又意味着什么呢?1.1 持续集成介绍使用持续集成和测试驱动开发的敏捷实践 说到持续集成,我们就不得不提到源代码管理,尤其是互联网得今天源代码得管理至关重要,分之策略和代码合并,代码r...
前言 DevOps方案实施在互联网行业中已经相对成熟了,而在游戏行业中还处在起步的初级阶段(据个人了解的身边游戏公司情况),而自己又对DevOps有一定的研究与实践,也想本着学以致用的思想,结合了公司游戏类型和业务方向摸索了一套游戏行业的DevOps实施落地方案。该方案不一...
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
从前,在森林里住着可爱的小白兔,还有它的妈妈,很幸福的生活着。有一天小兔子告诉妈妈,它想和小熊结婚了,妈妈给了小白兔一家糖果店作为结婚的嫁妆,小白兔很勤劳,糖果店生意很好,小熊跟小白兔说我不喜欢你,我喜欢小狐狸,我们离婚吧,糖果店也是我的了,小白兔净身出户了。它遇到了小灰狼...
一般来讲,一个家庭成立的之初,最应该首先考虑的不是房子车子,而是保障计划的配置。 当然,很多朋友在考虑到要对家庭进行保障计划配置的时候,实际上已经买好了车子房子,这也是没有问题的,只要个人经济状况宽裕,投资的渠道实际上也是非常多样化的,而且这也是值得鼓励的。 那么,一个家庭...
不知道什么时候开始,烦恼一次次的向我拳打脚踢,每一次都是遍体鳞伤,心却万般焦脆。 今天是个多云的一天,天空预计着无数雨点奔涌而下 或许 是比雨更让人难受的雪。 温度随着时间的推移慢慢降下了,光着脚丫踩在冰冷的地板上,乌云缓缓的聚集让心脏感觉血液堵塞了。 天空中已经看不见那片...
《爱乐之城》英文名字又叫,《La La Land》,这是一个落魄的爵士乐钢琴家小塞与女演员米娅之间关于爱情和梦想的故事。这也是整个二月份让我最为期待的一部电影,情人节上映那天因为还在上课,所以就一直忍到了周末。可想,我是怀着怎样的兴奋与期待和这部艺术片见面。 不得不说,电影...基于Jenkins实现php项目的自动化测试 打包和自动部署
我的图书馆
基于Jenkins实现php项目的自动化测试 打包和自动部署
基于Jenkins实现php项目的自动化测试 打包和自动部署
作者:&&发布日期: 08:49:48
Tag标签:&&&&
本篇博文宅鸟将在上篇: 基于Jenkins 搭建持续集成环境 的基础上,继续介绍Jenkins结合php项目实现自动化测试和自动部署。废话不再多说,直接上干活。
宅鸟所使用的server为Ubuntu
要实现在jenkins中实现php的自动化测试,首先需要Jenkins服务器上安装php测试框架,php的测试框架很多,在这里我们选择 PHPUnit Framework.
PHPUnit的安装很简单:
1.sudo apt-get install phpunit
如果出现如下错误:
1.PHP Warning: require_once(PHP/CodeCoverage/Filter.php): failed to open stream: No such file or directory in /usr/bin/phpunit on line 392.PHP Fatal error: require_once(): Failed opening required 'PHP/CodeCoverage/Filter.php' (include_path='.:/usr/share/php:/usr/share/pear') in /usr/bin/phpunit on line 39
可以通过下面方法安装:
01.sudo pear channel-discover pear.phpunit.de02.sudo pear channel-discover pear.symfony-project.com03.sudo pear channel-discover components.ez.no04.sudo pear channel-discover pear.symfony.com05.sudo pear update-channels06.sudo pear upgrade-all07.sudo pear install pear.symfony.com/Yaml08.sudo pear install --alldeps phpunit/PHPUnit09.sudo pear install --force --alldeps phpunit/PHPUnit
安装后执行phpunit --version 返回版本信息。表示安装成功。
1.root@dop-kvm-2:# phpunit --version2.PHPUnit 3.7.28 by Sebastian Bergmann.
下面我们开始给Jenkins一些插件:
Subversion/Git:用于集成项目版本控制软件,根据需要选择(在上篇博文已安装使用)
Phing/Ant:使用Phing或Apache Ant 对PHP项目做自动化构建
CheckStyle:使用PHP CodeSniffer进行代码风格检查的工具。用于检查PHP代码是否有违反一组预先设置好的编码标准的一个PEAR包,内置了ZEND,PEAR的编码风格规则
Clover PHP:使用phpunit进行单元测试的工具,可以被xdebug扩展用来生成代码覆盖率报告,并且可以与phing集成来自动测试,还可以和Selenium整合来完成大型自动化集成测试
DRY:使用PHPCPD(php copy paste detector)来发现项目中的重复代码
HTML Publisher:用来发布phpunit代码覆盖率报告
JDepend:使用PHP Depend分析php中静态代码,用来检查项目中的代码规模和复杂程度
Plot:使用phploc来统计php项目规模大小的工具,可以统计php的项目代码行数
PMD:使用phpmd(php mess dector),对基于pdepend的结果进行分析,一旦项目超过了pdepend中各具体指标的规定,将发出警告信息.
Violations:按照代码缺陷严重性集中显示pwd静态代码分析的结果
xUnit:使用JUnit的格式来输出phpunit的日志文件
注意这些插件是jenkins为php项目所提供的一些插件,但并不是必须的,所以宅鸟只把最值得大家关注的怎么自动化测试、打包和发布来给大家讲解。
先给出项目的目录结构:
01.root@dop-kvm-2:/home/jenkins/api# tree02..03.├── aa.php04.├── build.xml05.├── create.php06.└── test07.├── DemoTest.php08.└── FunctionTest.php09.1 directory, 5 files
aa.php、create.php是项目的程序文件
test目录下的DemoTest.php和FunxtionTest.php是项目的测试文件
build.xml是jenkins持续集成测试打包部署的调用文件
首先给出项目需要的build.xml文件:
001.&?xml version="1.0" encoding="UTF-8"?&002.&project name="api" default="build"&003.&target name="build" depends="make_runtime,phpcs-ci,phploc,pdepend,phpcb,phpunit,phpdox,phpcpd"/&004.&property name="version-m"& value="1.1" /&005.&property name="version"&&& value="1.1.0" /&006.&property name="stability"& value="stable" /&007.&property name="releasenotes" value="" /&008.&property name="tarfile"&&&& value="${phing.project.name}.${buildnumber}.${buildid}.tar.gz" /&009.&property name="pkgfile"&&&& value="${phing.project.name}.${version}.tgz" /&010.&property name="distfile"&&& value="dist/${tarfile}" /&011.&property name="tests.dir" value="test" /&012.&fileset id="api.tar.gz" dir="."&013.&include name="test/**"/&014.&include name="*.php"/&015.&include name="*.xml"/&016.&/fileset&017.&target name="make_runtime"&018.&mkdir dir="${project.basedir}/Runtime" /&019.&mkdir dir="${project.basedir}/build/logs" /&020.&mkdir dir="${project.basedir}/build/pdepend" /&021.&mkdir dir="${project.basedir}/build/code-browser" /&022.&/target&023.&target name="phpcs" description="Find coding standard violations using PHP_CodeSniffer"&024.&exec executable="phpcs"&025.&arg value="--standard=${project.basedir}/build/phpcs.xml" /&026.&arg value="--ignore=autoload.php" /&027.&arg path="${project.basedir}/" /&028.&/exec&029.&/target&030.&target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer"&031.&exec executable="phpcs" output="${project.basedir}/build/build.log"&032.&arg value="--report=checkstyle" /&033.&arg value="--report-file=${project.basedir}/build/logs/checkstyle.xml" /&034.&arg value="--standard=${project.basedir}/build/phpcs.xml" /&035.&arg value="--ignore=" /&036.&arg path="${project.basedir}/" /&037.&/exec&038.&/target&039.&040.&target name="phploc" description="Measure project size using PHPLOC"&041.&exec executable="phploc"&042.&arg value="--log-csv" /&043.&arg value="${project.basedir}/build/logs/phploc.csv"/&044.&arg path="${project.basedir}/"/&045.&/exec&046.&/target&047.&048.&target name="pdepend" description="Calculate software metrics using PHP_Depend"&049.&exec executable="pdepend"&050.&arg value="--jdepend-xml=${project.basedir}/build/logs/jdepend.xml"/&051.&arg value="--jdepend-chart=${project.basedir}/build/pdepend/dependencies.svg"/&052.&arg value="--overview-pyramid=${project.basedir}/build/pdepend/overview-pyramid.svg"/&053.&arg path="${project.basedir}/"/&054.&/exec&055.&/target&056.&057.&target name="phpmd" description="Perform project mess detection using PHPMD"&058.&exec executable="phpmd"&059.&arg path="${project.basedir}/"/&060.&arg value="text"/&061.&arg value="${project.basedir}/build/phpmd.xml"/&062.&/exec&063.&/target&064.&065.&target name="phpmd-ci" description="Perform project mess detection using PHPMD"&066.&exec executable="phpmd"&067.&arg path="${project.basedir}/"/&068.&arg value="xml"/&069.&arg value="${project.basedir}/build/phpmd.xml"/&070.&arg value="--reportfile"/&071.&arg value="${project.basedir}/build/logs/pmd.xml"/&072.&/exec&073.&/target&074.&075.&target name="phpcpd" description="Find duplicate code using PHPCPD"&076.&exec executable="phpcpd"&077.&arg value="--log-pmd"/&078.&arg value="${project.basedir}/build/logs/pmd-cpd.xml"/&079.&arg path="${project.basedir}/"/&080.&/exec&081.&/target&082.&target name="phpdox" description="Generate API documentation using phpDox"&083.&exec executable="phpdox"/&084.&/target&085.&target name="phpunit" description="Run unit tests with PHPUnit"&086.&exec executable="phpunit" /&087.&/target&088.&target name="test" description="Run PHPUnit tests"&089.&phpunit haltonerror="true" haltonfailure="true" printsummary="true"&090.&batchtest&091.&fileset dir="${tests.dir}"&092.&include name="**/*Test.php" /&093.&/fileset&094.&/batchtest&095.&/phpunit&096.&/target&097.&target name="phpcb" description="Aggregate tool output with PHP_CodeBrowser"&098.&exec executable="phpcb"&099.&arg value="--log"/&100.&arg path="${project.basedir}/build/logs"/&101.&arg value="--source"/&102.&arg path="${project.basedir}/"/&103.&arg value="--output"/&104.&arg path="${project.basedir}/build/code-browser"/&105.&/exec&106.&/target&107.&target name="check" description="Check variables" &108.&fail unless="version" message="Version not defined!" /&109.&fail unless="buildnumber" message="buildnumber not defined!" /&110.&fail unless="buildid" message="buildid not defined!" /&111.&delete dir="dist" failonerror="false" /&112.&mkdir dir="dist" /&113.&/target&114.&115.&target name="tar" depends="check" description="Create tar file for release"&116.&echo msg="Creating distribution tar for ${phing.project.name} ${version}"/&117.&delete file="${distfile}" failonerror="false"/&118.&tar destfile="${distfile}" compression="gzip"&119.&fileset refid="api.tar.gz"/&120.&/tar&121.&/target&122.&/project&
阅读build.xml后,大家可以了解一下内容:
项目名称、版本、打后的包名称:
01.&project name="api" default="build"&02.&target name="build" depends="make_runtime,phpcs-ci,phploc,pdepend,phpcb,phpunit,phpdox,phpcpd"/&03.&property name="version-m"& value="1.1" /&04.&property name="version"&&& value="1.1.0" /&05.&property name="stability"& value="stable" /&06.&property name="releasenotes" value="" /&07.&property name="tarfile"&&&& value="${phing.project.name}.${buildnumber}.${buildid}.tar.gz" /&08.&property name="pkgfile"&&&& value="${phing.project.name}.${version}.tgz" /&09.&property name="distfile"&&& value="dist/${tarfile}" /&10.&property name="tests.dir" value="test" /&
打包时包括的文件和文件夹:这里还可以使用exclude排除文件和文件夹:
1.&fileset id="api.tar.gz" dir="."&2.&include name="test/**"/&3.&include name="*.php"/&4.&include name="*.xml"/&5.&/fileset&
测试文件所在地址:
01.&target name="phpunit" description="Run unit tests with PHPUnit"&02.&exec executable="phpunit" /&03.&/target&04.&target name="test" description="Run PHPUnit tests"&05.&phpunit haltonerror="true" haltonfailure="true" printsummary="true"&06.&batchtest&07.&fileset dir="${tests.dir}"&08.&include name="**/*Test.php" /&09.&/fileset&10.&/batchtest&11.&/phpunit&12.&/target&
了解这些后,我们开始在jenkins中新建autoTestTarAndPublish项目,选择:构建一个自由风格的软件项目:
并且指定好代码库:如图所示
然后再 增加构建步骤-&Invoke Phing targets:
增加两个 target: test,tar 分别与build.xml中的test,tar名称相对应
给tar加上参数:
然后在左边主菜单: 系统管理-&系统设置-&Publish over SSH 下添加主机:(这里宅鸟设置使用ssh免密码登陆)需要设置成从jenkins到要发布的web服务器的无密码登陆
这里添加设置的主机名是:134
接下来我们就可以设置部署工作了:
在添加构建步骤下来表中选择:Send files or execute commands over SSh,如果该选项未出现需要在插件管理中安装插件:Publish Over SSH 然后重启jenkins即可.
然后在出现的SSH Publishers中选择要发布的主机:
并填写打包文件地址,发布到远程server地址信息,并在Exec command文本框中填写解压等shell脚本:
此项设置完毕后,就可以发布php项目到134服务器上了:
最后文件发布包的存档工作:
增加构建后操作步骤:
填写dist/*.tar.gz
至此配置完毕后,点击 保存 按钮.我们就可以发布程序到指定服务器134上了.
来看一下发布结果:
回到项目左侧点击:立即构建:可以看到构建进度条,结束后可以在控制台看到输出结果:
我们来到134上看:
至此发布完毕.
此时我们查看一下test/DemoTest.php文件内容:
01.&?php02.class DemoTest extends PHPUnit_Framework_TestCase {03.public function testPass() {04.$this-&assertTrue(true);05.}06.public function testFail() {07.$this-&assertFalse(false);08.}09.}10.?&
我们把 testFail()改成下面:
01.&?php02.class DemoTest extends PHPUnit_Framework_TestCase {03.public function testPass() {04.$this-&assertTrue(true);05.}06.public function testFail() {07.$this-&assertTrue(false);08.}09.}10.?&
$this-&assertTrue(false);
这个是错误的断定:
提交文件后再次构建:
我们可以看到本次构建失败,查看输出结果如下:
当把测试用例修改回正确后,执行构建,发布正确。
01.&?php02.class DemoTest extends PHPUnit_Framework_TestCase {03.public function testPass() {04.$this-&assertTrue(true);05.}06.public function testFail() {07.$this-&assertFalse(false);08.}09.}10.?&
ok,到此介绍结束.
总结一下:
jenkins根据项目根目录下的build.xml文件,并根据jenkins中targets的配置,首先自动执行test,当测试通过后,开始执行tar,打包完成后,开始链接远程webserver把程序包上传到远程webserver指定目录下,然后再根据jenkins下的command 执行解压操作,然后就可以根据自己的业务通过shell脚本进行自动处理自动发布的各项操作.
如果在执行test过程中,出现发现测试用例不通过,则就发出错误报告,终止本次构建。
下一篇博文,将介绍jenkins结合ansible、shell和mysql版本迁移实现多服务器批量发布.敬请关注
干货吐槽完毕,由于时间仓储,有不足之处欢迎拍砖.
[转]&[转]&
喜欢该文的人也喜欢}

我要回帖

更多关于 自动化测试工具 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信