Heim php教程 php手册 PHP开源项目使用Travis CI进行持续集成

PHP开源项目使用Travis CI进行持续集成

Jun 06, 2016 pm 07:47 PM
php w 使用 开源 Benehmen 集成 项目

一个项目如何保证代码质量是开发中非常重要的环节,对于开源项目来说更是如此,因为开源项目要面对的是来自不同水平开发者提交的代码。所以围绕开源做持续集成(Continuous Integration)变得越来越重要,而目前使用最广泛的免费CI工具当数Travis CI,以我的

一个项目如何保证代码质量是开发中非常重要的环节,对于开源项目来说更是如此,因为开源项目要面对的是来自不同水平开发者提交的代码。所以围绕开源做持续集成(Continuous Integration)变得越来越重要,而目前使用最广泛的免费CI工具当数Travis CI,以我的项目EvaThumber为例,来介绍一下如何在PHP开源项目中配合Travis CI进行持续集成

Travis CI能做的最主要工作是自动运行项目的单元测试并生成报告。例如进入EvaThumber的Travis CI页面,可以看到最新版本的测试情况,默认设置下,每次对项目进行Push时,都会触发Travis CI运行一次测试,测试环境包括PHP5.3与PHP5.4两个主流版本。Travis CI同时提供了一个项目状态图标,可以放置在项目主页告知用户当前的测试情况:

EvaThumber Master分支: PHP开源项目使用Travis CI进行持续集成

PHP项目的目录结构

如何开始一个PHP项目的持续集成,首先从项目的目录结构说起。目前的PHP项目一般都会遵守PHP-FIG制订的PSR规范,可以根据实际项目与团队的情况选择规范的严格程度,如果是新项目建议尽可能选择PSR-2或以上级别。

遵守规范的意义在于你的项目可以非常容易的集成到其他项目中,同时因为有了相同的代码书写约定,别人也更加容易阅读你的代码。所以越是优秀的PHP项目,越能严格的遵守规范,这会让整个PHP社区进入一个良性循环。

那么一个遵循PSR-2规范的PHP项目进行CI,推荐目录结构以及必须的文件如下:

<code>src/
    EvaThumber/
        Thumber.php
tests/
    EvaThumberTest/
        ThumberTest.php
    Bootstrap.php
    phpunit.xml.dist
vendor/
.travis.yml
composer.json
LICENSE
</code>
Nach dem Login kopieren
  • src目录用于存放项目源代码,文件夹命名必须与命名空间一致,以便可以进行类的自动载入
  • tests 目录放置单元测试代码,推荐与src目录保持一样的结构,在文件夹与文件名后缀Test以避免重名。
  • tests/Bootstrap.php 不是必须的,但一般都会存在,主要用于初始化类的自动载入功能
  • tests/phpunit.xml.dist 是PHPUnit的配置文件,一般来说可以简单配置一下要测试的目录以及Bootstrap.php的位置,详细的可配置项参考官网说明
  • vendor 目录用于放置项目依赖的第三方类库。
  • .travis.yml 是Travis CI的配置文件,在这个文件中可以设置项目语言,测试环境等。可以参考Travis CI详细设置
  • composer.json 是Composer管理第三方类库依赖关系的配置文件,参考Composer详细文档
  • LICENSE 内文是当前项目使用的许可证

依赖管理并加入启动文件

EvaThumber依赖一些第三方项目,所以最终composer.json的内容如下:

<code>{
    "<span>name</span>": <span><span>"AlloVince/EvaThumber"</span></span>,
    "<span>description</span>": <span><span>"EvaThumber"</span></span>,
    "<span>license</span>": <span><span>"BSD-3-Clause"</span></span>,
    "<span>homepage</span>": <span><span>"http://avnpc.com/"</span></span>,
    "<span>require</span>": <span>{
        "<span>php</span>": <span><span>">=5.3.3"</span></span>,
        "<span>imagine/Imagine</span>": <span><span>"dev-master"</span>
    }</span></span>,
    "<span>require-dev</span>": <span>{
        "<span>rmccue/Requests</span>": <span><span>"dev-master@dev"</span></span>,
        "<span>aferrandini/phpqrcode</span>": <span><span>"dev-master@dev"</span></span>,
        "<span>symfony/process</span>": <span><span>"dev-master@dev"</span>
    }</span></span>,
    "<span>autoload</span>": <span>{
        "<span>psr-0</span>": <span>{
            "<span>Requests</span>": <span><span>"library/"</span></span>,
            "<span>PHPQRCode</span>": <span><span>"lib/"</span>
        }</span>
    }</span>
}</span>
</code>
Nach dem Login kopieren

这个配置文件中首先定义了EvaThumber自己的名称,然后规定php运行环境必须大于等于5.3.3,并且列出了所有依赖项目的名称,autoload栏目则对PSR-0的项目的自动加载单独进行了处理。最终当EvaThumber项目被使用时,只需要在项目目录下运行

<code>composer install
</code>
Nach dem Login kopieren

即可安装依赖。安装完毕后会生成vendor/autoload.php文件,由于单元测试也需要自动加载的支持,我们编写tests/Bootstrap.php为:

<code><span><?php </span>
<span>$loader</span> = <span>include</span> __DIR__ . <span>'/../vendor/autoload.php'</span>;
<span>$loader</span>->add(<span>'EvaThumber'</span>, __DIR__ . <span>'/../src'</span>);
</span></code>
Nach dem Login kopieren

配置单元测试

有了单元测试的启动文件,为了在每次运行测试时加载,需要编写tests/phpunit.xml.dist为:

<code><span>phpunit</span> <span>bootstrap</span>=<span>"./Bootstrap.php"</span> <span>colors</span>=<span>"true"</span>>
    <span>testsuites</span>>
        <span>testsuite</span> <span>name</span>=<span>"EvaThumber Test Suite"</span>>
            <span>directory</span>>./EvaThumberTest<span><span>directory</span>></span>
        <span><span>testsuite</span>></span>
    <span><span>testsuites</span>></span>
    <span>filter</span>>
        <span>whitelist</span>>
            <span>directory</span>>../src/EvaThumber/<span><span>directory</span>></span>
            <span>exclude</span>>
                <span>directory</span>>../vendor/<span><span>directory</span>></span>
            <span><span>exclude</span>></span>
        <span><span>whitelist</span>></span>
    <span><span>filter</span>></span>
<span><span>phpunit</span>></span>
</code>
Nach dem Login kopieren

主要配置了三点:

  1. 指定启动文件为同目录下的Bootstrap.php
  2. 指定单元测试用例目录为同目录下的EvaThumberTest
  3. 指定测试代码路径,并将vendor目录排除,因为vendor目录为第三方依赖,无需测试

配置好之后在tests目录下运行

<code>phpunit -v
</code>
Nach dem Login kopieren

即可

PHPUnit安装

如果没有安装PHPUnit,ubuntu下可以很简单的用以下指令安装:

<code>apt-get install php-pear
pear channel-<span><span>update</span> pear.php.net
pear upgrade-<span>all</span>
pear channel-discover pear.phpunit.de
pear install -a phpunit/PHPUnit
</span></code>
Nach dem Login kopieren

配置并运行Travis CI

由上面的配置可以知道,如果想测试EvaThumber,必须要安装第三方依赖,同时进入tests目录运行phpunit -v。所以Travis CI的配置文件.travis.yml如下:

<code>language: php
php:
  - 5.3
  - 5.4
before_script:
  - composer install
  - cd tests
script: phpunit -v
</code>
Nach dem Login kopieren

Travis CI会自动完成Git Clone的工作,before_script很好理解,一一录入在开始测试前需要运行的指令即可。

最后进入Travis CI主页,用Github帐号直接登录。点击自己的名字后,会将自己的开源项目全部列举出来。选择要进行测试的项目,将右边的开关设为On就会自动开始测试。

接收外部的提交

如果其他人Fork了EvaThumber并发起了Pull Request,同样会触发Travis CI自动运行,如果提交进来的代码无法通过单元测试,Travis CI会自动回复Pull Request并显示测试报告,这样就能保证已有代码的API不会被破坏。

而如果是Bug Fix或者新功能的添加,那么可以要求提交者配套对应的单元测试,否则不予以Merge。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles