CI/CD в мобильном тестировании (GitLab)
💡 Что такое CI/CD?
CI/CD (Continuous Integration / Continuous Deployment) – это когда код автоматически проверяется, тестируется и выкатывается в продакшен, без шаманства с ручными релизами.
- CI (Continuous Integration) – каждый коммит проверяется, тесты прогоняются, сборка не ломается.
- CD (Continuous Deployment) – после успешных тестов всё деплоится (или выкатывается на тестовый сервер).
🔥 Зачем это мобильному тестировщику?
✅ Тесты гоняются автоматически → ты не тратишь время.
✅ Можно прогонять тесты на разных девайсах (реальных и эмуляторах).
✅ Быстро ловятся баги → меньше костылей в проде.
⚙ Как это работает в GitLab?
В GitLab CI/CD за процесс отвечает .gitlab-ci.yml – файл с инструкциями для пайплайна.
📌 Основные термины GitLab CI/CD
🛠 Pipeline – набор этапов, которые выполняются автоматически (сборка, тесты, деплой).
🔁 Job – отдельное задание внутри пайплайна (например, "Запусти UI-тесты").
📦 Stage – группа job'ов (например, "Тесты" → включает юнит-тесты и UI-тесты).
🔄 Runner – агент, который выполняет job'ы (можно настроить свой или использовать Shared Runners).
📂 Artifact – артефакты сборки (APK, лог-файлы тестов и т. д.).
🔀 Merge Request (MR) – запрос на слияние изменений в основную ветку.
🚀 Environment – среда, куда деплоится приложение (dev, staging, production).
🔧 Настраиваем GitLab CI/CD для мобильных тестов
1 Создаём .gitlab-ci.yml
Файл .gitlab-ci.yml – сердце CI/CD в GitLab. Здесь описываем, какие тесты и когда запускать.
Пример пайплайна для Android (Appium + Pytest):
🔹 Что тут происходит?
✔ stages: Определяем этапы (у нас пока только test).
✔ variables: Переменные среды (Android SDK и путь к эмулятору).
✔ test_ui: Джоб, который запускает UI-тесты.
✔ image: Используем докер-образ с Python 3.9.
✔ before_script: Устанавливаем зависимости перед запуском.
✔ script: Запускаем тесты.
✔ artifacts: Сохраняем отчёт о тестах.
2 Подключаем GitLab Runner
Чтобы GitLab выполнял тесты, нужен Runner – агент, который их запускает.
Запускаем Runner на своём сервере
1 Устанавливаем GitLab Runner:
2 Регистрируем Runner:
🔹 Вводим URL репозитория и токен (берём в Settings → CI/CD → Runners).
3 Запускаем Runner:
Теперь тесты будут выполняться прямо на твоей машине или сервере.
3 Добавляем Android-эмулятор в пайплайн
Если нужно гонять тесты на Android:
✔ budtmo/docker-android – докер-контейнер с эмулятором Android.
✔ start-emulator – запускаем эмулятор.
✔ adb wait-for-device – ждём, пока устройство загрузится.
4 Автоматизация сборки APK/IPA
Чтобы собирать APK (Android) или IPA (iOS) в GitLab CI/CD:
Android (Gradle)
iOS (Fastlane)
🛠 Автоматический запуск тестов при Merge Request
Чтобы тесты запускались перед мержем:
1 Заходим в Settings → CI/CD → Pipelines.
2 Включаем Pipelines must succeed before merging.
3 Добавляем проверку в .gitlab-ci.yml:
Теперь перед мержем тесты должны пройти, иначе GitLab не даст слить ветку.
🚀 Полный цикл CI/CD для мобильного тестирования
1 Разработчик пушит код в GitLab.
2 GitLab запускает пайплайн:
- 🏗 Сборка APK/IPA (Gradle, Fastlane).
- ✅ Запуск UI, API, Performance тестов (Appium, Espresso, JMeter).
- 📊 Сохранение артефактов (отчёты, скриншоты).
3 Если всё ок – можно мержить!
📌 Как мержить код правильно?
🔀 Создаём Merge Request (MR) – предлагаем влить изменения в основную ветку.
👀 Код-ревью – команда проверяет, нет ли косяков.
🔧 CI/CD проверяет тестами – если падают, фиксим.
✅ Мержим, если всё чисто – и код летит в дев/прод.
🔥 Итог
- GitLab CI/CD – мощный инструмент для автоматизации тестирования.
- Настроенный пайплайн = меньше ручных действий.
- Merge Request + тесты = стабильный код в проде.
- Android/iOS-сборка в CI/CD экономит кучу времени.
Теперь можно не руками запускать тесты, а просто мержить код и смотреть, как всё проверяется само.