Я пытаюсь настроить свой gitlab runner на своем M1 MacBook для тестирования среды. Мой рабочий процесс CI довольно прост: строить
-> тестовое задание
-> развертывать
. Я использую docker executor и для тестирования задач использую docker-compose
потому что мне нужно развернуть базу данных рядом со службой, которую я хочу протестировать.
Мой CI отлично работает на EC2 под управлением Ubuntu. Но когда я попытался запустить бегун на macOS, мой том ./backend не был привязан к /app.
Я пытался лс /приложение
на серверная часть
контейнер и с EC2 все файлы и папки здесь, но не когда я запускаю бегун на macOS.
gitlab-ci.yml (это всего лишь бэкэнд_тест
часть:
test_backend:
этап: тест
потребности: ["build_backend_image"]
изображение: докер
Сервисы:
- докер: дин
до_скрипта:
- вход в докер -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
- mkdir -p $DOCKER_CONFIG/cli-плагины
- apk добавить завиток
- curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
- chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
сценарий:
- docker compose -f docker-compose-ci.yml up -d db
- docker exec db sh mongo_init.sh
- docker compose -f docker-compose-ci.yml up -d бэкенд
- пвд
- лс
- бэкенд ls
- серверная часть docker exec pwd
- docker exec бэкэнд ls -l
- docker exec бэкенд ls / -l
- docker exec backend pip3 install --no-cache-dir --upgrade -r requirements-test.txt
- docker exec backend pytest test --junitxml=report.xml -p no:cacheprovider
прерываемый: правда
артефакты:
когда: всегда
отчеты:
junit: бэкэнд/report.xml
правила:
- если: $CI_PIPELINE_SOURCE == 'merge_request_event'
- если: $CI_COMMIT_BRANCH == 'разработать'
- если: $CI_COMMIT_BRANCH == 'мастер'
gitlab-бегун/config.toml:
одновременно = 2
контрольный_интервал = 0
[сессионный_сервер]
session_timeout = 1800
[[бегуны]]
имя = "Макбук"
URL-адрес = "https://gitlab.com/"
токен = "ххххххххх"
исполнитель = "докер"
[runners.custom_build_dir]
[бегунки.кэш]
[бегуны.кэш.s3]
[бегуны.cache.gcs]
[бегунки.cache.azure]
[бегуны.докер]
tls_verify = ложь
изображение = "докер: 20.10.13"
привилегированный = правда
disable_entrypoint_overwrite = ложь
oom_kill_disable = ложь
отключить_кэш = ложь
тома = ["/сертификаты/клиент", "/кеш"]
шм_размер = 0
Выход бегуна EC2 ls:
$ docker exec backend ls /app -l
всего 36
-rw-rw-rw- 1 root root 285 3 июня 15:30 Dockerfile
-rw-rw-rw- 1 root root 325 20 мая 23:49 DockerfileTest
-rw-rw-rw- 1 root root 48 20 мая 23:49 __init__.py
drwxrwxrwx 11 root root 4096 4 июня 17:17 приложение
-rw-rw-rw- 1 root root 4286 4 июня 16:41 favicon.ico
-rw-rw-rw- 1 root root 33 4 июня 16:41 требования-test.txt
-rw-rw-rw- 1 root root 1673 4 июня 16:41 требования.txt
drwxrwxrwx 6 root root 4096 4 июня 16:41 тест
macOS runner ls вывод:
$ docker exec backend ls /app -l
всего 0
докер-compose-ci.yml:
Сервисы:
серверная часть:
имя_контейнера: серверная часть
изображение: $CI_REGISTRY_IMAGE/бэкенд:$CI_COMMIT_SHA
тома:
- ./бэкенд:/приложение
сети:
По умолчанию:
порты:
- 8000:8000
- 587:587
- 443:443
зависит от:
- дб
дБ:
имя_контейнера: БД
изображение: монго
тома:
- ./mongo_init.sh:/mongo_init.sh:ро
сети:
По умолчанию:
среда:
MONGO_INITDB_DATABASE: ххххххх
MONGO_INITDB_ROOT_USERNAME: администратор
MONGO_INITDB_ROOT_PASSWORD: администратор
порты:
- 27017:27017
сети:
По умолчанию:
водитель: мост