Gitlab CI - erreur lors du pipeline

Par Julien Brault, il y a 7 ans


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

StanislasP, il y a 7 ans

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

Julien Brault, il y a 7 ans

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

StanislasP, il y a 7 ans

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 ;) )