Случайные сбои
CI/CD часто вызваны переполнением диска раннера или конфликтами портов при параллельных сборках. Мы настроим автоматическую очистку мусора и изоляцию сервисов, чтобы сделать выполнение шагов предсказуемым.Добавим в конфигурацию
CI автоматическую очистку старых Docker-объектов перед началом каждой сборки:before_script:
- docker system prune -f --volumes --filter "until=24h"
- df -h | grep '/dev/'
Команда
df покажет реальное наличие свободного места в логах пайплайна.Используем механизм сервисов для изоляции базы данных, чтобы избежать конфликтов за порты на общем раннере:
services:
- name: postgres:15-alpine
alias: db_host
variables:
DATABASE_URL: "postgresql://user:pass@db_host:5432/test_db"
Результат: база доступна по внутреннему
DNS-имени db_host, не занимая порты хост-системы.Настроим автоматический перезапуск шага только при системных ошибках связи или сбоях инфраструктуры:
# Умные ретраи для сетевых лагов
job_step:
retry:
max: 2
when: runner_system_failure
🔥 Регулярно мониторьте объем логов и размер артефактов, чтобы они не забивали дисковое пространство раннеров.
➡️ DevOps Ready | #практика