Termux – мощная среда эмуляции Linux для Android, позволяющая запускать множество инструментов разработки прямо на вашем мобильном устройстве. В этой статье мы рассмотрим, как использовать Termux для автоматизации процессов CI/CD (Continuous Integration/Continuous Delivery), настроив GitLab Runner, Jenkins-агент и Docker-in-Docker. Это позволит вам выполнять сборку, тестирование и развертывание ваших проектов, не прибегая к использованию удаленных серверов.
Подготовка окружения Termux
Первым делом необходимо установить Termux из F-Droid (рекомендуемый способ) или Google Play. После установки обновите пакеты:
pkg update && pkg upgrade
Установите необходимые пакеты:
pkg install git openssh wget curl
Убедитесь, что у вас установлена актуальная версия git.
Настройка GitLab Runner
GitLab Runner позволяет выполнять задания CI/CD, определенные в вашем репозитории GitLab. Для начала, скачаем и установим GitLab Runner:
wget https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-armv7
Сделаем файл исполняемым:
chmod +x gitlab-runner-linux-armv7
Переместим файл в /usr/local/bin для удобства:
mv gitlab-runner-linux-armv7 /usr/local/bin/gitlab-runner
Зарегистрируем Runner, используя URL и токен вашего проекта GitLab. Токен можно найти в настройках вашего проекта GitLab (Settings -> CI/CD -> Runners). Пример команды:
gitlab-runner register --url https://gitlab.com --registration-token YOUR_REGISTRATION_TOKEN --executor shell --description "Termux Runner" --tag-list termux,arm
Замените YOUR_REGISTRATION_TOKEN на ваш фактический токен. Параметр --tag-list позволяет вам определять теги для Runner, чтобы задания выполнялись только на подходящих Runner-ах.
Настройка Jenkins-агента
Jenkins – популярный сервер автоматизации. Для использования Termux в качестве Jenkins-агента потребуется установить SSH-сервер. Сначала установим openssh (если еще не установлен):
pkg install openssh
Сгенерируем ключи SSH:
ssh-keygen -t rsa -b 4096
В Jenkins на сервере добавьте новый агент, указав IP-адрес (или доменное имя) вашего устройства Termux и порт 22 (или другой, если вы изменили конфигурацию SSH). В качестве метода аутентификации используйте "Passphrase" или "Public key". Для публичного ключа используйте содержимое файла ~/.ssh/id_rsa.pub.
Для обеспечения безопасного соединения можно использовать VPN для создания локальной сети, тем самым избежать прямого открытия SSH порта в публичный доступ. Это повышает безопасность вашей инфраструктуры.
Docker-in-Docker (DinD) в Termux
Docker-in-Docker позволяет запускать Docker-контейнеры внутри Docker-контейнера. Для этого потребуется установить Docker в Termux:
pkg install docker
Запустите Docker службу:
dockerd &
Внимание! Для нормальной работы DinD может потребоваться дополнительная настройка, связанная с монтированием файловых систем и сетевыми настройками. Убедитесь, что у вас достаточно места на устройстве и что Docker может получить доступ к необходимым ресурсам.
Для использования DinD в GitLab CI/CD или Jenkins, вам потребуется настроить соответствующие параметры в ваших конфигурационных файлах (.gitlab-ci.yml или Jenkinsfile), чтобы использовать Docker Executor.
Заключение
Настройка CI/CD пайплайнов в Termux предоставляет гибкое и удобное решение для автоматизации разработки и тестирования приложений непосредственно на вашем мобильном устройстве. Это может быть особенно полезно для разработчиков, работающих в условиях ограниченного доступа к ресурсам или нуждающихся в мобильной разработке.
Если вам потребуется помощь в настройке CI/CD, оптимизации производительности или решении других задач, связанных с DevOps, обращайтесь в РыбинскЛАБ. Мы предлагаем широкий спектр услуг, включая разработку и внедрение CI/CD пайплайнов, консультации по автоматизации и оптимизации инфраструктуры. Наши эксперты помогут вам максимально эффективно использовать Termux и другие инструменты для достижения ваших целей.