ℹ️ В твоём GitLab CI/CD pipeline ты создаёшь Docker-образы для тестов или деплоя, но не хочешь тратить время и ресурсы на их постоянный пуш в registry (особенно, если они нужны только внутри одного pipeline).
➡️ Решение: используй встроенную функцию Docker-контекста для экспорта и импорта образов. Вместо того чтобы пушить образы, можно экспортировать их в .tar файл и передавать между этапами через кеш или артефакты.
🦊 Пример .gitlab-ci.yml:
stages:
- build
- test
build_image:
stage: build
script:
- docker build -t my-app:latest .
- docker save my-app:latest > my-app.tar
artifacts:
paths:
- my-app.tar
test_image:
stage: test
script:
- docker load < my-app.tar
- docker run --rm my-app:latest pytest
🔥 Использование кеша для ускорения повторных запусков
Если образ создаётся одинаковым для одного и того же кода, можно использовать кеширование:
build_image:
stage: build
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- my-app.tar
script:
- if [ -f my-app.tar ]; then docker load < my-app.tar; fi
- docker build -t my-app:latest .
- docker save my-app:latest > my-app.tar
✳️ При повторном запуске для одного и того же коммита pipeline загрузит уже созданный образ из кеша.
tags: #полезно #docker #cicd
🧭 @recura_tech



