Работа GitLab останавливается - PullRequest
0 голосов
/ 03 июля 2019

В настоящее время у меня есть работа в конвейере GitLab, основной целью которой является проверка операторов MySQL (смена разработчика) перед переходом к следующему этапу конвейера.

Для этой цели я использую официальный образ докера MySQL с некоторыми изменениями (удалена необходимость в пароле root).Проверяемый скрипт будет выполняться в оболочке MySQL.При этом, если в сценарии есть ошибка, задание останавливается без продолжения и, в конечном итоге, по истечении времени ожидания.

Это моя работа:

Validate branch MySQL DB image:
  stage: validate_branch_db_image
  image: registry.gitlab.com/some-path/mysql-validator

  script:
    - echo "Validating MySQL image for branch ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}"

    - service mysql start
    - mysql < schema/create-database-schema.sql

    - echo "Validation of MySQL image for branch ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} is successful"
    - service mysql stop

  only:
    refs:
     - merge_requests

Примечание: мне пришлось запустить службу MySQL вручную, потому что изображение используется в качестве контекста выполнения задания.

При сбое строки mysql < schema/create-database-schema.sql из-за синтаксической ошибки задание останавливается.В чем причина этого?

Я не уверен, что это лучший способ проверки сценариев SQL.Пожалуйста, также сообщите, если есть лучший способ достичь этого.

1 Ответ

0 голосов
/ 03 июля 2019

Я бы предложил попробовать официальный подход GitLab CI для запуска сервера MySQL.
Вам не нужно запускать \ останавливать \ управлять MySQL самостоятельно.

См. Документы:

Пример:

services:
- mysql

variables:
  # Configure mysql service (https://hub.docker.com/_/mysql/)
  MYSQL_DATABASE: hello_world_test
  MYSQL_ROOT_PASSWORD: mysql

connect:
  image: mysql
  script:
  - echo "SELECT 'OK';" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
...