Bonjour,

Cela fait quelques temps que je tourne en rond. J'espere ne pas m'être trompé de forum d'ailleurs...

J'ai suivi l'excellente vidéo de Grafikart qui parle de l'intégration continue : https://www.grafikart.fr/tutoriels/divers/gitlab-ci-docker-808

Mais j'ai un message d'erreur lorsque le Seed se lance sur Gitlab

Voici mon fichier .gitlab-ci.yml

image: grafikart/gitlab-ci:php7
before_script:
    - composer install > /dev/null
services:
    - mysql
variables:
    MYSQL_DATABASE: cactus
    MYSQL_ROOT_PASSWORD: cactus
test:
    script:
        - cp .env.testing .env        
        - php artisan migrate --seed

Et voici l'erreur qui est affichée sur Gitlab, lorsqu'il arrive à l'étape du seed :

$ cp .env.testing .env
$ php artisan migrate --seed

  [Illuminate\Database\QueryException]                                         
  SQLSTATE[HY000] [2054] Server sent charset unknown to the client. Please, r  
  eport to the developers (SQL: select * from information_schema.tables where  
   table_schema = cactus and table_name = migrations)

  [PDOException]                                                               
  SQLSTATE[HY000] [2054] Server sent charset unknown to the client. Please, r  
  eport to the developers                                                      

  [PDOException]                                                               
  PDO::__construct(): Server sent charset (255) unknown to the client. Please  
  , report to the developers   

Dans mon fichier .env.testing, j'ai la configuration suivante :

APP_NAME=Cactus
APP_ENV=testing
APP_DEBUG=true
APP_LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=cactus
DB_USERNAME=root
DB_PASSWORD=cactus

J'ai l'impression que c'est un problème de charset, et j'ai essayé plusieurs modifs dans ce sens, en changeant le charset de ma configuration (Config/database.php) :

'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],

J'ai essayé plusieurs charset, sans succès...

De ce que je lis dans les forums anglophones, ca viendrait d'un problème de compatibilité entre php et mysql, mais là je suis un peu perdu.

Quelqu'un pourrait m'aider la-dessus ?
Merci de m'avoir lu et excellente journée

3 réponses


Bonjour,

Je n'est pas eu de soucis comme celui ci mais le fichier ci-dessous fonctionne bien pour les pipelines :

image: stanislasp/laravel-5-php-7.2:1.0

services:
  - mysql:5.7

variables:
  WITH_XDEBUG: "1"
  MYSQL_ROOT_PASSWORD: root
  MYSQL_DATABASE: HERE_SOME_DATA
  MYSQL_USER: HERE_SOME_DATA
  MYSQL_PASSWORD: HERE_SOME_DATA

stages:
  - build
  - test

build:
  stage: build
  script:
    - composer install --no-progress --no-interaction
    - npm install --ignore-engines
    - cp .env.test .env
    - php artisan key:generate
    - npm run dev
    - tar -czf build.tar.gz .env public/ node_modules/ vendor/
  artifacts:
    paths:
    - build.tar.gz
    expire_in: 20 minutes

fixer-cs:
  stage: test
  image: stanislasp/laravel-5-php-7.2:1.0
  script:
    - tar -xvzf build.tar.gz -C ./
    - php artisan migrate --seed
    - php artisan fixer:fix --no-interaction --dry-run --diff --using-cache=no

phpunit:
  stage: test
  image: stanislasp/laravel-5-php-7.2:1.0
  script:
    - tar -xvzf build.tar.gz -C ./
    - php artisan migrate --seed
    - php vendor/bin/phpunit --colors --coverage-text
  artifacts:
    when: on_failure
    name: "${CI_BUILD_STAGE}_${CI_BUILD_REF_NAME}_FAILED"
    paths:
      - '.'
    untracked: false
    expire_in: 1 day

En espérant que cela te débloque

Bonjour et merci pour ton partage.

Je l'ai essayé, avec la version suivante:

image: stanislasp/laravel-5-php-7.2:1.0

services:
  - mysql:5.7

variables:
  WITH_XDEBUG: "1"
  MYSQL_ROOT_PASSWORD: cactus
  MYSQL_DATABASE: cactus
  MYSQL_USER: root
  MYSQL_PASSWORD: cactus

stages:
  - build
  - test

build:
  stage: build
  script:
    - composer install --no-progress --no-interaction
    - cp .env.testing .env
    - php artisan key:generate

phpunit:
  stage: test
  image: stanislasp/laravel-5-php-7.2:1.0
  script:
    - php artisan migrate --seed
    - php vendor/bin/phpunit --colors --coverage-text

Le message suivant m'est retourné, lorsqu'il fait le test de PhpUnit. saurais-tu vers quelle piste chercher ?

Pulling docker image stanislasp/laravel-5-php-7.2:1.0 ...
Using docker image sha256:630bf30598c872649acdf573c3c52bf42c1936e9f75af55d95afc6297b6656a5 for stanislasp/laravel-5-php-7.2:1.0 ...
Running on runner-e11ae361-project-5426827-concurrent-0 via runner-e11ae361-srm-1528496844-b559d54f...
Cloning repository...
Cloning into '/builds/julien.brault/cactus3'...
Checking out 44f52b64 as monbatiment_controller...
Skipping Git submodules setup
$ php artisan migrate --seed
ERROR: Job failed: exit code 1

Merci

Salut. Désolé du retard :(
Dans le fichier que je t'est apsser. j'utilise une méthode d'artifact qui permet d'avoir un zip du projet a la fin de la tâche. Ca permet de récupérer ainsi les logs et de pouvoir les analyser.

Concernant le soucis au seed je dirais que ton .env.testing n'as pas les même parametre de connexion mysql que les infos donner dans le gitlab-ci. Si le soucis viens d'ailleur. je serai ravis de t'aider plus mais il faudras plus d'infos :) (tu peux me retrouver dans le discord, je suis presque toujours connecter et dans le coin ;) )