首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GitLab-CI PHPunit Composer laravel

GitLab-CI PHPunit Composer laravel
EN

Stack Overflow用户
提问于 2015-05-12 18:40:04
回答 2查看 3.4K关注 0票数 1

我是GitLab-CI和Docker的新手,我不得不让一个跑步者来运行我的phpunit构建。按照这里的说明操作:https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md

然而,根据他们的说明,容器显然不包含我需要的工具。所以问题是,当注册一个多运行器来拥有一个支持phpunit,composer的运行器时,配置是什么,这样我就可以测试我的laravel构建。

EN

回答 2

Stack Overflow用户

发布于 2015-11-02 22:17:32

按照他们的说明将gitlab-ci-multi-runner注册到docker executor。在您的.gitlab-ci.yml中,给出一个适当的图像,其中包含满足您需求的最低要求。其他你可以在before_script中通过命令行install的东西。我为您发布了一个示例工作配置:

代码语言:javascript
运行
复制
image: tetraweb/php
services:
    - mysql
variables:
    MYSQL_DATABASE: effiocms_db
    MYSQL_USER: effio_user
    MYSQL_PASSWORD: testpassword
    WITH_XDEBUG: "1"
before_script:
    # enable necessary php extensions
    - docker-php-ext-enable zip && docker-php-ext-enable mbstring && docker-php-ext-enable gd && docker-php-ext-enable pdo_mysql
    # composer update
    - composer self-update && composer --version
    - composer global require --no-interaction --quiet "fxp/composer-asset-plugin:~1.1.0"
    - export PATH="$HOME/.composer/vendor/bin:$PATH"
    - composer install --dev --prefer-dist --no-interaction --quiet
    # codeception install
    - composer global require --no-interaction --quiet "codeception/codeception=2.0.*" "codeception/specify=*" "codeception/verify=*"
    # setup application
    - |
      php ./init --env=Development --overwrite=All
      cd tests/codeception/backend && codecept build
      cd ../common && codecept build
      cd ../console && codecept build
      cd ../frontend && codecept build
      cd ../../../
    - cd tests/codeception/bin && php yii migrate --interactive=0 && cd ../../..
codeception:
    stage: test
    script:
        - |
          php -S localhost:8080 > /dev/null 2>&1 &
          cd tests/codeception/frontend
          codecept run

显然,此配置适用于在Yii2上运行的应用程序。因此,您需要根据您的需求对其进行调整。

票数 2
EN

Stack Overflow用户

发布于 2016-09-03 18:45:41

与Arman P.所说的一致。在运行测试时,请确保您有一个docker镜像,其中包含构建/测试所需的所有工具。

您有两个选择:

  1. 您可以使用所需的所有工具构建自己的映像,并随着项目的发展进行维护;或者,
  2. 您可以简单地从docker集线器安装基本映像,并在运行作业之前安装所有工具。

这两种选择各有优缺点:

选项(1)给你完全的控制权,但你需要将它添加到一个私有注册表中,CI可以从这个注册表中拉出(Gitlab为你提供了私有注册表支持)。这里唯一的小缺点是你必须首先设置私有注册表(例如Gitlab的)。不是很难,只需要做一次。

但接下来要由你来维护镜像,等等。

选项(2)允许您运行所有工具,而不必维护私有注册表或docker容器。正如Arman P.提到的,您只需在作业之前运行安装脚本即可。这样做的缺点是您的作业和构建/测试需要更长的运行时间,因为您现在必须在每次运行之前等待安装。

一个简单的例子:使用option (2)

我们需要PHPUnit和composer。

因此,使用来自公共docker集线器的容器,该容器具有php:选择一个包含您想要测试的PHP版本的容器(例如5.6或7)。让我们假设5.6。

在运行测试之前,我们需要在该容器中安装composer和PHPUnit。您的配置项文件可能如下所示:

.gitlab-ci.yml

代码语言:javascript
运行
复制
image: php:5.6.25-cli

stages:
    - build
    - test

.install_composer_template:&install_composer
    - apt-get install -y git
    - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

before_script:
    <<:*install_composer

build app:
    stage: build
    script:
        - composer install
        - composer dump-autoload -o

test app:
    stage: test
    before_script:
        <<:*install_composer
        - composer global require -q phpunit/phpunit
    script:
        - phpunit --colors=always

这项操作的实际用途的快速总结

每个作业--这里我们只有“构建应用程序”和“测试应用程序”--都将通过官方的PHP5.6镜像运行。

我们定义了两个阶段,测试构建阶段( build )和测试阶段() --注意:这两个阶段是默认定义的,但为了清楚起见,我们在这里是明确的。

运行的第一个作业将是“构建应用程序”,因为它发生在第一个阶段,构建。在此作业中运行脚本之前,会运行全局before_script,这将安装git和composer (Composer需要Git)。然后脚本运行并安装我们所有的composer依赖项。好了。

然后执行下一个阶段,即测试。因此,我们的作业附加到该运行(如果我们有多个),这对我们来说只是“测试应用程序”。在这里,我们使用YML特性重用install composer指令:本地before_script覆盖全局before_script,安装Composer (通过YML模板)和PHPUnit。然后实际的脚本运行:它运行我们的单元测试。单元测试假设您的根目录中有一个phpunit配置--您可以像在自己的终端上一样定制此命令。

请注意,由于阶段设置,构建阶段的输出将自动在测试阶段中可用。所以我们不需要做任何事情,Gitlab会为我们传递所有的文件!

使用install_composer模板的主要原因是为了缩短作业执行时间。大多数事情都需要Composer。因此,我们有一个全局模板和一个为每个作业运行的脚本。如果您需要更具体的工具,例如PHPUnit,那么在本地覆盖作业中的before_script并安装所需的工具。通过这种方式,我们不必安装一大堆工具,而这些工具可能并不是每个作业都需要的!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30188405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档