We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Настройка полноценного окружения CI/CD в Termux: GitLab‑Runner, Docker‑in‑Docker и автоматическое тестирование

Приветствую, разработчики! В современном мире разработки программного обеспечения непрерывная интеграция и непрерывная доставка (CI/CD) стали неотъемлемой частью эффективной работы. Изначально CI/CD-системы ассоциируются с серверным окружением, но с появлением таких инструментов, как Termux, возможности автоматизации расширяются до мобильных устройств. В этой статье мы рассмотрим, как настроить полноценное окружение CI/CD в Termux, используя GitLab Runner, Docker-in-Docker (DinD) и автоматическое тестирование. Важно отметить, что использование Termux для автоматизации требует внимательного подхода к безопасности и соблюдению правил работы с ресурсами устройства.

Что такое CI/CD и зачем оно нужно?

CI/CD – это набор практик, позволяющих автоматизировать процессы сборки, тестирования и развертывания программного обеспечения. Основные преимущества:

  • Ускорение разработки: Автоматизация рутинных задач освобождает время разработчиков для более важных задач.
  • Повышение качества кода: Автоматизированное тестирование выявляет ошибки на ранних стадиях.
  • Ускорение выхода релизов: Автоматизация развертывания сокращает время между версиями.
  • Снижение рисков: Автоматизация снижает вероятность человеческих ошибок.

Необходимые инструменты

Для реализации CI/CD в Termux нам понадобятся следующие инструменты:

  • Termux: Эмулятор терминала для Android.
  • GitLab: Платформа для управления версиями и CI/CD. (В данном случае будем использовать GitLab Community Edition (CE)).
  • GitLab Runner: Агент, который выполняет задачи, определенные в GitLab CI/CD.
  • Docker: Платформа для контейнеризации приложений.
  • Docker-in-Docker (DinD): Настройка Docker внутри Docker для изоляции окружения сборки.

Настройка Termux

1. Установка Termux: Скачайте и установите Termux из F-Droid ([https://f-droid.org/en/packages/com.termux/](https://f-droid.org/en/packages/com.termux/)). Рекомендуется использовать F-Droid для установки, так как там предоставляется актуальная версия приложения.

2. Обновление пакетов: Запустите Termux и выполните команду:

pkg update && pkg upgrade

3. Установка Docker и Docker Compose:

pkg install docker docker-compose

4. Включение поддержки overlayfs (для DinD):

mount -t overlay overlay -o lowerdir=/data/data/com.termux/files/home,upperdir=/data/local/tmp,workdir=/data/local/tmp

Важно: Эта команда может потребовать root-права. В Termux root-права не требуются для базовой работы с Docker, но могут потребоваться для некоторых продвинутых настроек.

Настройка GitLab

1. Создание проекта на GitLab: Создайте новый проект на GitLab ([https://gitlab.com/](https://gitlab.com/)) с необходимым репозиторием.

2. Получение доступа к репозиторию: Получите URL репозитория (например, https://gitlab.com/your_username/your_project.git).

3. Настройка GitLab Runner:

  • Перейдите в раздел "Settings" -> "CI/CD" -> "Runners" в вашем проекте GitLab.
  • Выберите "Set up a runner" и выберите "Initialize a new runner".
  • Выберите "Auto DevOps" или "Shared runners" (если у вас есть доступ к общедоступным runners). Для работы локально, обычно используется "Create a runner via SSH".
  • Сгенерируйте SSH-ключ и добавьте его в проект GitLab.
  • Установите SSH-ключ в Termux (например, с помощью ssh-keygen). Вам потребуется добавить публичный ключ в файл ~/.ssh/authorized_keys на сервере GitLab.

Настройка GitLab CI/CD (.gitlab-ci.yml)

Создайте файл .gitlab-ci.yml в корне вашего проекта. Вот пример конфигурации для простого автоматического тестирования:

stages:
  - test

test:
  image: ubuntu:latest
  before_script:
    - apt-get update -y
    - apt-get install -y python3 python3-pip
    - pip3 install pytest
  script:
    - pytest

Этот пример выполняет тестирование с использованием pytest. Конфигурация может быть значительно расширена для включения сборки, развертывания и других задач.

Запуск CI/CD в Termux

1. Запуск GitLab Runner:

gitlab-runner run --url  --token <ваш токен runner> --executor docker --docker-image docker:dind
  • Замените <URL вашего GitLab> на URL вашего GitLab instance.
  • Замените <ваш токен runner> на токен, сгенерированный в настройках GitLab Runner.

2. Создание ветки и Push кода: Создайте новую ветку в вашем репозитории и выполните push вашего кода. Это автоматически запустит CI/CD pipeline в GitLab.

Автоматическое тестирование

В примере выше мы использовали pytest для автоматического тестирования. Вы можете использовать любой инструмент для тестирования, который поддерживает автоматизацию, например, unittest (для Python), JUnit (для Java), Jest (для JavaScript) и т.д.

Docker-in-Docker (DinD) и изоляция окружения

Использование DinD позволяет изолировать окружение сборки, что повышает воспроизводимость результатов и предотвращает конфликты зависимостей. В примере выше мы указали docker:dind в параметрах gitlab-runner run. Это автоматически настроит DinD для выполнения задач в CI/CD pipeline.

Заключение

Настройка полноценного окружения CI/CD в Termux – это сложная, но выполнимая задача. Использование GitLab Runner, Docker-in-Docker и автоматического тестирования позволяет автоматизировать процессы сборки, тестирования и развертывания программного обеспечения прямо на вашем Android-устройстве. Это может быть особенно полезно для разработчиков, которым требуется возможность работать без подключения к серверу или для тестирования на различных платформах. Не забывайте о безопасности и внимательно следите за использованием ресурсов устройства.

РыбинскЛАБ предлагает широкий спектр услуг в области разработки программного обеспечения, включая разработку CI/CD-систем, автоматизацию тестирования и оптимизацию производительности приложений. Мы поможем вам создать эффективную и надежную систему CI/CD, отвечающую вашим требованиям. Свяжитесь с нами для получения консультации: [https://rybinsklab.ru/](https://rybinsklab.ru/)

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект