Laravel 5 的 Gitlab CI。*

Gitlab CI for Laravel 5.*

我已经开始了一个基于 Laravel 5.1 的项目。它托管在 Gitlab 上,我想在这个项目中使用 Gitlab CI ( https://gitlab.com/nasirkhan/laravel-5-starter )。我的 .gitlab-ci.yml 设置如下。但是每次运行命令 php artisan migrate:refresh 时构建都会失败,并出现错误

[PDOException]<br> SQLSTATE[HY000] [2002] 连接被拒绝

image: tetraweb/php:5.6-cli

services:
  - mysql

variables:
  WITH_XDEBUG: "1"
  MYSQL_ROOT_PASSWORD: secret
  MYSQL_DATABASE: homestead
  MYSQL_USER: homestead
  MYSQL_PASSWORD: secret
  COMPOSER_HOME: /cache/composer

stages:
  - test

php-5.6:
  type: test
  image: tetraweb/php:5.6-cli
  script:
    - docker-php-ext-enable zip
    - docker-php-ext-enable mbstring
    - docker-php-ext-enable pdo_mysql
    - php -v
    - composer self-update
    - composer install --no-progress --no-interaction
    - cp .env.example .env
    - sed -i.bak 's/DB_HOST=localhost/DB_HOST=mysql/g' .env
    - php artisan key:generate
    - php artisan migrate:refresh
    - php artisan db:seed
    - php vendor/bin/phpunit --colors --coverage-text

问题已解决。 hostname 应该是 mysql.

Gitlab CI 构建将通过以下配置,

先新建一个.env.test,内容如下

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString

DB_CONNECTION=mysql
DB_HOST=mysql
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

那么.gitlab-ci.yml应该是这样的,

image: tetraweb/php:5.6-cli

services:
  - mysql:latest

variables:
  WITH_XDEBUG: "1"
  MYSQL_ROOT_PASSWORD: secret
  MYSQL_DATABASE: homestead
  MYSQL_USER: homestead
  MYSQL_PASSWORD: secret
  COMPOSER_HOME: /cache/composer

stages:
  - test

php-5.6:
  type: test
  image: tetraweb/php:5.6-cli
  script:
    - docker-php-ext-enable zip
    - docker-php-ext-enable mbstring
    - docker-php-ext-enable pdo_mysql
    - ping -c 3 mysql
    - php -v
    - composer self-update
    - composer install --no-progress --no-interaction
    - cp .env.test .env
    - php artisan key:generate
    - php artisan migrate:refresh
    - php artisan db:seed
    - php vendor/bin/phpunit --colors --coverage-text