首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >composer包的Travis配置

composer包的Travis配置
EN

Stack Overflow用户
提问于 2015-06-17 06:28:41
回答 1查看 947关注 0票数 1

在开发一个laravel 5.1+包时,我需要通过travis-ci.org运行自动化测试。与常规自动化测试不同的是,需要将此包包含到框架中,并设置运行测试的特定配置选项。

因此,要求是:

  • 安装拉拉威尔
  • 将我的包添加为依赖项
  • 设置一些travis特定的配置,如travis数据库访问
  • 龙舌兰
  • 运行特定于包的迁移,或运行手工命令
  • 运行包特定的单元测试

我到处搜索;在拉拉论坛上询问,在travis社区聊天中被问到,发现本题被关闭了,因为它太本地化了(尽管现在给出一个答案肯定是有帮助的)。我希望我的问题能保持开放。

此时,我有以下配置:

代码语言:javascript
复制
language: php

php:
  - 5.5
  - 5.6
  - hhvm

addons:
  hosts:
    - system.hyn.me
    - tenant.hyn.me

before_install:
  - sudo composer self-update

install:
  - composer create-project laravel/laravel
  - cd ./laravel
  - composer require hyn-me/multi-tenant ~0.1.0
  - composer update


before_script:
  - cp .env.travis .env
  - export APP_ENV="testing"
  - php artisan migrate -q -n --path ./vendor/hyn-me/multi-tenant/src/migrations
  - cd ./vendor/hyn-me/multi-tenant

script: phpunit

然而,我对travis (到目前为止)的了解是有限的,在我发送一些不必要的提交来解决我的问题之前,我希望您对测试集成到框架的好方法有自己的看法。

Ps。这与包hyn/多租户有关。

建议如何保持这个问题尽可能的一般性将是有帮助的。我希望在没有明确提到最佳实践和要求集成到框架示例的情况下,有助于确定答案的范围。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-19 13:17:25

因此,经过几周的努力,我终于完成了这项工作。

.travis.yml:

代码语言:javascript
复制
language: php

sudo: true

php:
  - 5.5
  - 5.6
  - 7.0
  - hhvm

addons:
  hosts:
    - system.hyn.me
    - tenant.hyn.me

install:
  # fix ipv6 issue that prevented composer requests and resulted in failing builds
  - sudo sh -c "echo 'precedence ::ffff:0:0/96  100' >> /etc/gai.conf"
  # updates composer on travis
  - travis_retry composer self-update
  # clear composer cache, might speed up finding new tags
  - travis_retry composer clear-cache
  # set the global github token, so connections won't be cancelled
  - composer config -g github-oauth.github.com $GITHUB_TOKEN
  # create a new database for the hyn connection
  - mysql -e 'create database hyn;' -uroot
  - mysql -e "grant all privileges on *.* to 'travis'@'localhost' with grant option;" -uroot
  # create a new laravel project in the subfolder laravel (default composer behaviour)
  - composer create-project laravel/laravel
  # set global variables
  - export DB_USERNAME=travis DB_DATABASE=hyn DB_PASSWORD= QUEUE_DRIVER=sync

script:
  # run the script calling unit tests and so on
  - ./scripts/travis.sh

after_script:
  - if [[ $TRAVIS_PHP_VERSION != '7.0' ]]; then php vendor/bin/ocular code-coverage:upload --format=php-clover ${TRAVIS_BUILD_DIR}/coverage.clover; fi

和脚本/travis.sh

代码语言:javascript
复制
#!/bin/bash

# e causes to exit when one commands returns non-zero
# v prints every line before executing
set -ev

cd ${TRAVIS_BUILD_DIR}/laravel

BRANCH_REGEX="^(([[:digit:]]+\.)+[[:digit:]]+)$"

if [[ ${TRAVIS_BRANCH} =~ $BRANCH_REGEX ]]; then
    echo "composer require ${TRAVIS_REPO_SLUG}:${TRAVIS_BRANCH}"
    composer require ${TRAVIS_REPO_SLUG}:${TRAVIS_BRANCH}
else
    echo "composer require ${TRAVIS_REPO_SLUG}:dev-${TRAVIS_BRANCH}"
    # development package of framework could be required for the package
    composer require hyn-me/framework "dev-master as 0.1.99"
    composer require "${TRAVIS_REPO_SLUG}:dev-${TRAVIS_BRANCH}#${TRAVIS_COMMIT}"
fi

# moves the unit test to the root laravel directory
cp ./vendor/${TRAVIS_REPO_SLUG}/phpunit.travis.xml ./phpunit.xml

phpunit
# phpunit --coverage-text --coverage-clover=${TRAVIS_BUILD_DIR}/coverage.clover

此代码可能由于新的Laravel版本或travis中的更改而更改。如果是这样的话,您将找到最新的这里版本。

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

https://stackoverflow.com/questions/30883778

复制
相关文章

相似问题

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