博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
持续集成(Continuous Integration)
阅读量:5034 次
发布时间:2019-06-12

本文共 3906 字,大约阅读时间需要 13 分钟。

持续集成简称CI,持续集成是频繁、持续的在多个团队成员的工作中进行集成,并且给与反馈。一个典型的持续集成周期包括以下几个步骤:

   1. 持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。
   2. 如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。
   3. 等代码完全更新以后,调用自动化编译脚本,进行代码编译。
   4. 运行所有的自动化测试。
   5. 进行代码分析。
   6. 产生可执行的软件,能够提供给测试人员进行测试。
   持续集成服务器,比如CruiseControl或者VSTS
   CruiseControl, Anthill, Bamboo, TeamCity, Continuum,hudson

一个开源的持续继承环境:

下面就来介绍一下这个软件的安装,ubuntu 11.10环境为例

一、安装Jenkins

去官网下载,安装,很简单,他自己集成了一个java的环境和服务器,一个包搞定问题

安装集成工具

1、安装: 

sudo apt-get install ant

2、安装:pear

sudo apt-get install php-pear

3、安装:

4、安装:phpunit

sudo pear channel-discover pear.phpunit.de

sudo pear install phpunit/PHPUnit

5、安装:PHP_CodeSniffer

sudo pear install PHP_CodeSniffer

四、创建任务

  1. 下载模版配置:
    cd $JENKINS_HOME/jobsgit clone git://github.com/sebastianbergmann/php-jenkins-template.git php-templatechown -R jenkins:nogroup php-template/
  2. 重启Jenkins CLI:
    java -jar jenkins-cli.jar -s http://localhost:8080 reload-configuration
  3. 新建任务.
  4. 输入任务名称.
  5. 选择从已有任务拷贝
  6. 取消”Disable Build” 选项.
  7. 填写相关信息.
  8. 填写相关svn信息.
  9. 保存

下面是项目build.xml文件(目前我们使用的配置)

==========build.xml============

<?xml version=”2.0″ encoding=”UTF-8″?>

<project name=”name-of-project” default=”build”>
<target name=”build”
depends=”prepare,lint,phploc,phpcs-ci,phpunit,phpcb”/>

<target name=”build-parallel”

depends=”prepare,lint,tools-parallel,phpunit,phpcb”/>

<target name=”tools-parallel”

description=”Run tools in parallel”>
<parallel threadCount=”2″>
<antcall target=”phpcs-ci”/>
<antcall target=”phploc”/>
</parallel>
</target>

<target name=”clean” description=”Cleanup build artifacts”>

<delete dir=”${basedir}/build/api”/>
<delete dir=”${basedir}/build/code-browser”/>
<delete dir=”${basedir}/build/coverage”/>
<delete dir=”${basedir}/build/logs”/>
</target>

<target name=”prepare” depends=”clean”

description=”Prepare for build”>
<mkdir dir=”${basedir}/build/api”/>
<mkdir dir=”${basedir}/build/code-browser”/>
<mkdir dir=”${basedir}/build/coverage”/>
<mkdir dir=”${basedir}/build/logs”/>
</target>

<target name=”lint”>

<apply executable=”php” failοnerrοr=”true”>
<arg value=”-l” />

<fileset dir=”${basedir}”>

<include name=”**/*.php” />
<modified />
</fileset>

<fileset dir=”${basedir}/_test”>

<include name=”**/*.php” />
<modified />
</fileset>
</apply>
</target>

<target name=”phploc” description=”Measure project size using PHPLOC”>

<exec executable=”phploc”>
<arg value=”–log-csv” />
<arg value=”${basedir}/build/logs/phploc.csv” />
<arg path=”${basedir}” />
</exec>
</target>

<target name=”phpcs-ci”

description=”Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server”>
<exec executable=”phpcs” output=”/dev/null”>
<arg value=”–report=checkstyle” />
<arg value=”–report-file=${basedir}/build/logs/checkstyle.xml” />
<arg value=”–standard=MyStandard” />
<arg value=”–ignore=${basedir}/wind,${basedir}/_test,${basedir}/configs,${basedir}/www,${basedir}/data,${basedir}/library/utility/safehtml,${basedir}/library/utility/soap” />
<arg path=”${basedir}” />
</exec>
</target>

============end===============

 

phpunit的配置

============phpunit.xml=============

<?xml version=”1.0″ encoding=”UTF-8″?>

<phpunit bootstrap=”_test/bootstrap.php” backupGlobals=”false” backupStaticAttributes=”false” strict=”true” verbose=”true”>
<testsuites>
<testsuite name=”BankAccount”>
<directory suffix=”Test.php”>_test/market</directory>
</testsuite>
</testsuites>
<logging>
<log type=”coverage-clover” target=”build/logs/clover.xml” />
<log type=”coverage-html” target=”build/coverage” title=”BankAccount” />
<log type=”junit” target=”build/logs/junit.xml” logIncompleteSkipped=”false” />
</logging>
</phpunit>

============end=================

进入jenkins的任务目录,一般是在:/var/lib/jenkins/jobs/

进入指定的job/workspace目录

替换目录中的的build.xml和phpunit.xml文件

重启jenkins

参考:http://avnpc.com/pages/php-open-source-project-plus-travis-ci

http://blog.windcache.com/archives/5

http://blog.csdn.net/wanghantong/article/details/40985653

转载于:https://www.cnblogs.com/DaBing0806/p/4909886.html

你可能感兴趣的文章
80. Remove Duplicates from Sorted Array II
查看>>
数据库-mongodb-高级查询表达式
查看>>
struts2 ajax 实现方式
查看>>
文件上传控件
查看>>
LoadRunner HTTP脚本迭代处理的常见问题
查看>>
fiddler安装及抓取http和https请求
查看>>
sessionManager配置
查看>>
PAT乙级.1001.害死人不偿命的(3n+1)猜想
查看>>
【leetcode】Reorder List (middle)
查看>>
神奇的表单
查看>>
HDU 3746 将字符串的全部字符最少循环2次需要添加的字符数
查看>>
BZOJ2456: mode
查看>>
Mac中配置TortoiseHg
查看>>
ExtJs4 笔记 ExtJs大比拼JQuery:Dom文档操作
查看>>
TCP从连接到释放过程全解
查看>>
这几道Python面试题,稳准狠,Python面试题No15
查看>>
2014-05-15 总结
查看>>
wp7 退出程序的提示对话框
查看>>
CImage类 from http://www.cnblogs.com/afarmer/archive/2012/03/31/2427273.html
查看>>
常用前端笔记-css
查看>>