Încerc să-mi configurez runnerul gitlab pe MacBook-ul meu M1 pentru unele teste de mediu. Fluxul meu de lucru CI este destul de simplu: construi
-> Test
-> disloca
. Folosesc docker executor și pentru sarcinile de testare pe care le folosesc docker-compune
pentru că trebuie să implementez o bază de date pe lângă serviciul pe care vreau să-l testez.
CI-ul meu funcționează perfect pe un EC2 care rulează Ubuntu. Dar când am încercat să-mi rulez runnerul pe macOS, volumul meu ./backend nu este legat de /app.
am încercat să ls /app
pe backend
container și cu EC2 toate fișierele și folderele sunt aici, dar nu când rulez runnerul pe macOS.
gitlab-ci.yml (acesta este doar backend_test
parte:
test_backend:
etapa: test
necesită: ["build_backend_image"]
imagine: docker
Servicii:
- docker:dind
before_script:
- conectare la docker -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
- mkdir -p $DOCKER_CONFIG/cli-plugins
- apk adăuga curl
- 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
scenariu:
- docker compose -f docker-compose-ci.yml up -d db
- docker exec db sh mongo_init.sh
- docker compose -f docker-compose-ci.yml sus -d backend
- pwd
- ls
- Sunt backend
- docker exec backend pwd
- docker exec backend ls -l
- docker exec backend 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
întreruptibil: adevărat
artefacte:
când: întotdeauna
rapoarte:
junit: backend/report.xml
reguli:
- dacă: $CI_PIPELINE_SOURCE == 'merge_request_event'
- dacă: $CI_COMMIT_BRANCH == „dezvoltare”
- dacă: $CI_COMMIT_BRANCH == 'master'
gitlab-runner/config.toml:
concurente = 2
interval_verificare = 0
[server_sesiune]
session_timeout = 1800
[[ alergători ]]
nume = "Macbook"
url = "https://gitlab.com/"
simbol = "xxxxxxxxxx"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = fals
imagine = "docker:20.10.13"
privilegiat = adevărat
disable_entrypoint_overwrite = fals
oom_kill_disable = fals
disable_cache = false
volume = ["/certs/client", "/cache"]
shm_size = 0
EC2 runner ls ieșire:
$ docker exec backend ls /app -l
total 36
-rw-rw-rw- 1 rădăcină rădăcină 285 3 iunie 15:30 Dockerfile
-rw-rw-rw- 1 rădăcină rădăcină 325 20 mai 23:49 DockerfileTest
-rw-rw-rw- 1 rădăcină rădăcină 48 20 mai 23:49 __init__.py
drwxrwxrwx 11 root root 4096 4 iunie 17:17 aplicație
-rw-rw-rw- 1 rădăcină rădăcină 4286 4 iunie 16:41 favicon.ico
-rw-rw-rw- 1 rădăcină rădăcină 33 iunie 4 16:41 requirements-test.txt
-rw-rw-rw- 1 rădăcină rădăcină 1673 4 iunie 16:41 requirements.txt
drwxrwxrwx 6 root root 4096 4 iunie 16:41 test
ieșire macOS runner ls:
$ docker exec backend ls /app -l
total 0
docker-compose-ci.yml:
Servicii:
backend:
container_name: backend
imagine: $CI_REGISTRY_IMAGE/backend:$CI_COMMIT_SHA
volume:
- ./backend:/app
retele:
Mod implicit:
porturi:
- 8000:8000
- 587:587
- 443:443
depinde de:
- db
db:
nume_container: db
imagine: mongo
volume:
- ./mongo_init.sh:/mongo_init.sh:ro
retele:
Mod implicit:
mediu inconjurator:
MONGO_INITDB_DATABASE: xxxxxxx
MONGO_INITDB_ROOT_USERNAME: administrator
MONGO_INITDB_ROOT_PASSWORD: administrator
porturi:
- 27017:27017
retele:
Mod implicit:
şofer: pod