Termux — это удобная среда для запуска Linux-инструментов на Android. В сценариях обучения, прототипирования и локальной разработки Termux позволяет поднимать “легковесные” агенты для CI/CD, тестировать сборки и автоматизировать рутинные задачи. Для полноценного продакшн-CI такие решения обычно комбинируют с выделенными серверами, но как мобильный агент или локальный runner Termux работает эффективно.
В этой статье рассмотрим два подхода:
- GitLab CI с GitLab Runner, запущенным в Termux.
- Jenkins как отдельный сервис, который можно использовать локально для сборок и сценариев.
Архитектура: агент в Termux и CI в GitLab/Jenkins
Идея проста: GitLab или Jenkins управляют пайплайнами, а Termux выполняет шаги “worker/agent”. В зависимости от вашей модели:
- GitLab Runner получает задания от GitLab и выполняет команды в контейнере/системе.
- Jenkins может выполняться в самом Termux или вы можете использовать Jenkins как менеджер, а Termux — как агент (в зависимости от требований и возможностей сети).
Для стабильной работы важно заранее продумать:
- сетевой режим (предсказуемый доступ к GitLab/Jenkins);
- хранение секретов (токены Runner, ключи, переменные окружения);
- перезапуск и устойчивость при “сонных” режимах Android.
Подготовка Termux: обновление системы и базовые пакеты
Начнем с подготовки окружения. В Termux обновите пакеты и установите необходимые утилиты.
pkg update -y && pkg upgrade -ypkg install -y git curl wget ca-certificates gnupg jqЕсли планируете сборку проектов, заранее установите нужные языки/инструменты (например, Java, Node.js, Python, Docker). В примерах ниже мы используем минимальный набор.
Настройка GitLab Runner в Termux
GitLab Runner — это агент, который регистрируется в GitLab и выполняет пайплайны. В Termux критично учитывать, что runner запускается как пользовательский процесс и зависит от доступности сети.
Шаг 1. Установка и подготовка окружения для Runner
Сначала установите пакеты, которые часто нужны runner’у и сопутствующим инструментам.
pkg install -y build-essentialДалее — скачайте бинарник gitlab-runner под вашу архитектуру. На практике архитектуры Android/Termux могут отличаться, поэтому лучше ориентироваться на официальный релиз GitLab Runner и корректную сборку для вашей платформы.
Вариант “generic” (примерный). Перед выполнением убедитесь, что бинарник подходит по архитектуре и что ссылка актуальна.
cd $HOMEexport RUNNER_VERSION="<укажите_версию_из_релиза>"curl -L -o gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/v${RUNNER_VERSION}/binaries/<ваша-архитектура>/gitlab-runner"chmod +x gitlab-runnerПереместите бинарник в удобную директорию.
mv gitlab-runner $HOME/bin/gitlab-runnerЕсли директории нет:
mkdir -p $HOME/binПроверьте:
$HOME/bin/gitlab-runner --versionШаг 2. Создание конфигурации runner
Конфигурация runner обычно хранится в файле config.toml. Сначала зарегистрируйте runner в GitLab.
На стороне GitLab:
- откройте Settings > CI/CD > Runners;
- создайте новый runner;
- получите URL вашего GitLab и registration token.
На стороне Termux запустите регистрацию. Пример:
$HOME/bin/gitlab-runner registerДалее следуйте подсказкам интерактивного мастера:
- GitLab instance URL:
https://<ваш-гитлаб> - Registration token: токен из GitLab
- Description: например
termux-mobile-runner - Tags: например
termux - Executor: обычно выбирают
shellдля Termux
Для сборок на телефоне часто разумно использовать shell executor. Он проще и не требует Docker, что критично для стабильности.
Шаг 3. Рекомендуемый config.toml для shell-executor
Пример базовой структуры (адаптируйте под ваш результат регистрации).
nano $HOME/.gitlab-runner/config.tomlТиповая форма:
concurrent = 1
check_interval = 0
[[runners]]
name = "termux-mobile-runner"
url = "https://<ваш-гитлаб>"
token = "<runner-token>"
executor = "shell"
shell = "bash"
tags = ["termux"]
environment = ["TERM=xterm-256color"]Примечания:
- Для мобильного устройства разумно ограничить
concurrentи не пытаться параллелить множество сборок. - Указывайте
shellявно, если у вас есть предпочтение и гарантируется наличие нужного bash.
Шаг 4. Запуск runner и проверка
Запуск:
$HOME/bin/gitlab-runner run --working-directory $HOMEПроверка статуса логами. Если runner зарегистрирован корректно, GitLab начнет присылать jobs по тегам и при наличии подходящих правил в .gitlab-ci.yml.
Пример .gitlab-ci.yml с тегами runner
Минимальный пример пайплайна, который запускается на runner’е с тегом termux.
stages:
- build
build_termux:
stage: build
tags:
- termux
script:
- echo "Hello from Termux CI"
- uname -a
- git --versionЕсли у вас проект на другом языке, добавьте шаги установки зависимостей и сборки в script.
Практические советы по стабильности GitLab Runner в Termux
- Сеть и доступность: убедитесь, что устройство стабильно имеет доступ к GitLab по
https. - Сон и ограничения Android: настройте энергосбережение так, чтобы процесс runner не останавливался.
- Логи: при отладке полезно смотреть, где возникают ошибки — в сетевом доступе, в командах
script, в правах на рабочую директорию. - Рабочая директория: задавайте
--working-directoryи следите за тем, чтобы у пользователя были права на запись.
Настройка Jenkins в Termux: локальный сценарий для автоматизации
Jenkins традиционно работает как сервер и требует Java. В Termux можно поднимать Jenkins локально для обучения и локальных экспериментов. Если цель — именно “агентный” подход, часто проще использовать выделенный Jenkins, а Termux подключать как агента. Но ниже — базовый вариант локального Jenkins в Termux.
Шаг 1. Установка Java
Для Jenkins в Termux обычно требуется Java 17/11 (в зависимости от версии Jenkins). Установите Java:
pkg install -y openjdk-17Проверьте:
java -versionШаг 2. Скачивание Jenkins WAR и запуск
Скачайте jenkins.war и запустите его.
cd $HOMEcurl -L -o jenkins.war "https://get.jenkins.io/war-stable/latest/jenkins.war"Запуск (пример):
java -jar jenkins.war --httpPort=8080Первый запуск может занять время. После старта в консоли появится URL и подсказка по начальному администраторскому паролю (его обычно можно получить из JENKINS_HOME).
Если вы не хотите, чтобы Jenkins блокировал терминал, запускайте в фоне (с учетом особенностей Termux):
nohup java -jar jenkins.war --httpPort=8080 &>/tmp/jenkins.log &Логи смотрите так:
tail -n 100 /tmp/jenkins.logШаг 3. Настройка Jenkins jobs
Далее в интерфейсе Jenkins:
- создайте Job (Freestyle или Pipeline);
- определите этапы сборки: git checkout, установка зависимостей, запуск тестов;
- опционально используйте Pipeline с
Jenkinsfile.
Если Jenkins выполняется на том же устройстве, где запускаются сборки, убедитесь, что команды доступны в PATH и достаточно места/памяти.
Рекомендации по безопасности при работе с CI/CD в Termux
- Не храните токены в открытом виде. Токены GitLab Runner лучше хранить только в
config.tomlи обеспечить доступ к файлу правами. - Ограничивайте права. Не запускайте runner и Jenkins от имени root.
- Минимизация окружения. Устанавливайте только нужные пакеты для сборок — это уменьшает поверхность рисков.
- Секреты. Для Jenkins используйте встроенное управление credentials, а для GitLab CI — CI/CD variables.
Локальная сеть и подключение устройств: важный нюанс
Если вам нужно, чтобы Jenkins (или ваш runner) был доступен другим устройствам в рамках вашей инфраструктуры, корректный подход — организовать локальную сеть (например, через VPN, но исключительно для создания локальной сети, а не для обхода блокировок). Это помогает избежать сложностей с разными сетями и NAT при локальной работе.
Технологические лайфхаки: где Termux дает максимум пользы
- Быстрые проверки: сборка и тесты на мобильном “агенте” при изменениях в репозитории.
- Обучение и прототипирование: отработка логики CI без поднятия полноценного кластера.
- Автоматизация рутин: nightly-триггеры, линтеры, генерация артефактов и публикация отчетов (при наличии корректных секретов и доступов).
Заключение
Автоматизация CI/CD с помощью GitLab Runner и Jenkins в Termux — практичный путь для локальных сценариев, прототипирования и обучения. GitLab Runner хорошо ложится на shell-executor и позволяет быстро подключить мобильное устройство к выполнению пайплайнов. Jenkins в Termux можно использовать как локальный сервер для экспериментов и джобов, но при росте нагрузки обычно стоит комбинировать мобильные агенты с выделенной инфраструктурой.
Если хотите организовать CI/CD “под ключ”, настроить стабильные интеграции, подобрать стратегию секретов и обеспечить надежность окружения — обращайтесь в РыбинскЛАБ. Мы поможем спроектировать и внедрить решение для ваших задач.