Согласно странице проблем Gitlab: Share service between build stages. Таким образом, что Gitlab-CI устанавливается такой, что:
каждая работа выполняется в каждом задании выполняется независимо от других, в том числе потенциально , работающие на разных машинах. И услуги выполняются локально на каждом бегуне. Нет никакого способа для одного задания получить доступ к службе на другом бегуне. На GitLab.com мы даже перерабатываем машину после того, как каждое задание выполняется, чтобы все службы были уничтожены. @markpundsack
Несмотря на то, что это 7 месяцев, выпуск все еще открыт в это время. Проблема получения данных с mysql
также является проблемой, поскольку службы не монтируют тома (я не верю, что какие-либо планы существуют для добавления этой функции), поэтому данные застревают внутри контейнера mysql
.
Таким образом, вы можете справиться с этим в течение нескольких способов:
- имеют те
setup
и test
в той же работе
- Создание SQL докер со всеми данными, добавил уже (плохая практика, но если вам это нужно)
- Создание дампа в
setup
и делиться, как артефакт затем перезагрузить эти данные с test
EDIT: Добавление примечания о том, что использование компонента expire_in
для артефактов может быть полезным, поскольку вы не хотите хранить кучу данных, которые вам могут понадобиться навсегда.
EDIT2: После изучения еще нескольких, я нашел this от gitlab. Вы можете сделать следующее:
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"
- SOME DATABASE DUMPING
artifacts:
when: on_success
paths:
- /var/lib/mysql/
Это не представляется возможным разделить данные из '/ вар/Lib/mysql' на службе тузд в хост-контейнер и использовать его как артефакт? –
Чтобы получить доступ к сервису, вам понадобится '/ var/lib/mysql'. При использовании 'artifact' вы делаете это для текущего изображения. Вы можете попробовать и использовать mysql в качестве изображения для этапа сборки. – jrbeverly
Сделано для ответа, чтобы включить документированный случай gitlab. С этим вы можете заполнить базу данных, а затем поделиться выходом как артефактом. – jrbeverly