持续集成(Continuous Integration)

持续集成简称CI,持续集成是频繁、持续的在多个团队成员的工作中进行集成,并且给与反馈。一个典型的持续集成周期包括以下几个步骤:
   1. 持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。
   2. 如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。
   3. 等代码完全更新以后,调用自动化编译脚本,进行代码编译。
   4. 运行所有的自动化测试。
   5. 进行代码分析。
   6. 产生可执行的软件,能够提供给测试人员进行测试。
   持续集成服务器,比如CruiseControl或者VSTS
   CruiseControl, Anthill, Bamboo, TeamCity, Continuum,hudson

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

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

一、安装Jenkins

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

安装集成工具

1、安装: ANT

sudo apt-get install ant

2、安装:pear

sudo apt-get install php-pear

3、安装:xdebug

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” failonerror=”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

时间: 2024-12-20 19:02:32

持续集成(Continuous Integration)的相关文章

持续集成 continuou integration (ci)

CruiseControl :简称 CC ,持续集成工具,主要提供了基于版本管理工具 ( 如 CVS.VSS.SVN) 感知变化或每天定时的持续集成,并提供持续集成报告. Email . Jabber 等等方式通知相关负责人,其要求是需要进行日构建的项目已编写好全自动的项目编译脚本 ( 可基于 Maven 或 Ant) . Ant NAnt Maven 等都是构建工具 他们可以将构建过程自动化 持续发布 持续交付

Jenkins持续集成学习及企业级应用

文档声明 该文档主体为去年末自主学习时总结,旨在为我司提供一套企业级持续集成解决方案.这篇文章现在看上去很稚嫩,但是当时花费了许多心血.希望将当时的学习心得拿出来与大家交流.该文档主要说明了jenkins持续集成部署的相关步骤,并着重实现了权限分组,邮件配置,插件配置的jenkins实现过程.对出现的问题进行解决,是一套持续集成的解决方案. 持续集成Continuous integration 提出 针对复杂度高的项目提出“早集成,常集成,频繁集成”来帮助项目在早期发现项目风险和质量问题 作用

用持续集成工具Travis进行构建和部署

用持续集成工具Travis进行构建和部署 摘要:本文简单说明了如何使用持续集成工具Travis进行构建和部署的过程. 1. 概述 持续集成(Continuous Integration)是软件开发过程中的重要环节,不论是在开发环境,还是生产环境,其好处都是可以让团队尽快得到反馈,从而尽早发现和解决问题,不要等到用户来报告问题,影响产品和团队的声誉.越早越快地发现和解决问题,成本越低,这也是敏捷开发的基本目的之一. 持续集成的工具有不少,著名的有CruiseControl.JetBrains的Te

GitHub+Jenkins持续集成简介

DevOps(英文Development(开发)和Operations(技术运营)的组合)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA)部门之间的沟通.协作与整合.它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作 持续集成概念: 持续集成Continuous Integration 持续交付Continuous Delivery 持续部署Continuous Deployment 1.1 什么是持续集成:

持续集成平台jenkins

一. 什么是持续集成 1. 概念 持续集成(Continuous Integration),也就是我们经常说的CI 持续集成(CI)是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷 2. 为什么要使用持续集成 bug总是在最后才发现 越到项目后期,问题越难解决 软件交付时机无法保障 程序经常需要变更 无效的等待变多 3. 多人开发流程图 多人协作开发,由于开发只会测试自己的代码,多人的代码集成在一起,难免会出现这样那样的bug.这时就需要jenkins

CI/CD持续集成/持续部署 敏捷开发

敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用. 1,CI/CD持续集

基于 CODING 的 Spring Boot 持续集成项目

本文作者:CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误. 持续集成的模式 如图所示: CI 过程:代码编写 -> 源代码库(GitHub or gitlab)-> CI 服务器(代码构建.自动化测试.结果反馈[构建结果])

基于Jenkins Pipeline的ASP.NET Core持续集成实践

原文:基于Jenkins Pipeline的ASP.NET Core持续集成实践 最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署,因此这里总结一下. 一.关于持续集成与Jenkins Pipeline 1.1 持续集成相关概念 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI) . 持续集成指的是,频繁地 (一天多次) 将代码集成到

12.Jenkins持续集成企业实战

阅读目录: Jenkins持续集成企业实战1.1 目前主流网站部署的流程1.2 Jenkins持续集成简介1.3 Jenkins持续集成组件1.4 Jenkins平台安装部署1.5 Jenkins相关概念1.6 Jenkins平台设置1.7 Jenkins构建JOB工程1.8 Jenkins自动化部署1.9 Jenkins插件安装1.10 Jenkins邮件配置1.11 Jenkins多实例配置1.12 Jenkins+Ansible高并发构建 Jenkins持续集成企业实战 构建企业自动化部署

04: CI(持续集成)/CD(持续交付/持续部署)

1.1 持续集成.持续交付 介绍   参考博客:https://www.cnblogs.com/cay83/p/8856231.html 1.传统交付 1. 传统软件的开发与交付的周期都很漫长,从需求的分析.系统的设计.编写测试用例.系统开发.单元测试.组装测试到交付调试. 2. 每一次交付.升级,都需要提供基础的硬件.软件的环境.软件的代码.软件的文档与手册. 3. 工程师都按照之前预演过好多遍的流程,对照着系统的部署手册,一步一步的组装硬件,安装软件,稍有差池,就要按照对应的应急预案进行回滚