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 пайплайна (GitLab Runner) непосредственно в Termux для автоматической сборки приложений

CI/CD-процессы помогают гарантировать воспроизводимость сборок, ускоряют проверки и уменьшают ручной труд. Обычно GitLab Runner размещают на сервере или в облаке. Однако в практических задачах (локальное тестирование, разработка, демонстрационные стенды, временные сборки “на месте”) удобно поднять полноценный пайплайн прямо в Termux.

В этой статье мы разберём, как установить и запустить GitLab Runner в Termux, зарегистрировать его в вашем GitLab-проекте и настроить .gitlab-ci.yml для автоматической сборки приложений. Акцент сделан на практику: окружение, пользователи, права, кэш, артефакты, а также типовые ошибки.

Что понадобится

  • Android-устройство с установленным Termux.
  • Аккаунт и проект в GitLab (GitLab.com или саморазмещённый GitLab).
  • Базовые навыки работы с консолью Termux.
  • Рекомендуется заряд/источник питания и стабильный Wi‑Fi (сборки чувствительны к обрывам).

Шаг 1. Подготовка Termux

Обновим пакеты и установим зависимости. В Termux используйте официальные команды обновления окружения:

pkg update -y
pkg upgrade -y

Для сборок и запуска внешних инструментов обычно нужны базовые пакеты:

pkg install -y git curl wget unzip ca-certificates gnupg procps openssh-tools

Если планируете собирать конкретные типы проектов (например, Java/Gradle, Node.js, Go, Python), установите соответствующие инструменты дополнительно — в статье мы сфокусируемся на GitLab Runner и универсальной структуре пайплайна.

Шаг 2. Установка GitLab Runner в Termux

GitLab Runner — это исполняемый агент. В Termux есть ограничение по архитектурам и формату поставки, поэтому наиболее надёжный подход — взять официальный бинарник под Linux/ARM (или собрать из исходников, если у вас есть соответствующий toolchain). На практике для Termux чаще используют бинарник “как есть”, учитывая архитектуру Android.

1) Определите архитектуру:

uname -m

2) Перейдите к поиску релиза GitLab Runner и скачайте бинарник, соответствующий вашей архитектуре. Например, для части устройств это может быть aarch64 или armv7.

Далее общий сценарий (замените имя файла под ваш бинарник):

cd $HOME
curl -L -o gitlab-runner https://gitlab-runner-download-url.example.com/gitlab-runner-linux-arm64
chmod +x gitlab-runner

Важно: используйте корректную ссылку на скачивание из официального источника GitLab Runner. Если вы не уверены, какой именно бинарник нужен под ваш случай, лучше уточнить в документации GitLab Runner и в релизах.

3) Создадим каталоги для конфигурации и рабочих директорий:

mkdir -p $HOME/gitlab-runner/config
mkdir -p $HOME/gitlab-runner/cache
mkdir -p $HOME/gitlab-runner/builds

Шаг 3. Регистрация GitLab Runner в GitLab

Перед регистрацией нужно получить Registration Token в GitLab. В GitLab UI обычно это находится в:

  • ProjectSettingsCI/CDRunners (или аналогичный раздел)
  • или в Admin настройках для инстанса

В Termux запускаем регистрацию. В GitLab Runner есть команда register. Для бинарника, установленного в текущей директории:

$HOME/gitlab-runner/bin/gitlab-runner register

Но у вас бинарник лежит по пути $HOME/gitlab-runner/gitlab-runner, поэтому используйте:

$HOME/gitlab-runner/gitlab-runner register

Далее отвечайте на вопросы интерактивного мастера. Типовые параметры:

  • GitLab URL: например, https://gitlab.com/ или адрес вашего GitLab.
  • Registration Token: из интерфейса GitLab.
  • Description: например, termux-runner-rybinsklab.
  • Tags: например, termux.
  • Executor: рекомендуется shell для Termux, так как Docker может быть недоступен или ограничен.

Пример (упрощённо, значения замените на свои):

$HOME/gitlab-runner/gitlab-runner register
# GitLab URL: https://gitlab.com/
# Token: XXXX
# Description: termux
# Tags (comma separated): termux, android
# Executor: shell

После регистрации GitLab Runner создаст конфигурационный файл config.toml (обычно рядом с местом конфигурации). Если вы хотите явно контролировать путь, настраивайте окружение и командные параметры согласно вашему варианту запуска.

Шаг 4. Настройка config.toml для Termux

Сконфигурируйте рабочие каталоги, чтобы сборки не “съедали” системное хранилище и чтобы кэш/артефакты складывались предсказуемо.

Откройте конфиг config.toml (путь зависит от того, где Runner сохранил настройки):

ls -la $HOME/gitlab-runner

Далее найдите config.toml и отредактируйте. Пример целевых параметров (концептуально):

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "termux-runner"
  url = "https://gitlab.com/"
  token = "YOUR_RUNNER_TOKEN"
  executor = "shell"
  builds_dir = "$HOME/gitlab-runner/builds"
  cache_dir = "$HOME/gitlab-runner/cache"

Почему concurrent = 1: на мобильных устройствах параллельные сборки часто приводят к деградации производительности, перегреву и разрывам сессий. Для старта лучше ограничить одним джобом.

Шаг 5. Запуск GitLab Runner в Termux

Запускайте Runner в фоне и следите за логами. Для shell-executor обычно достаточно стандартного запуска:

$HOME/gitlab-runner/gitlab-runner run --config $HOME/gitlab-runner/config.toml

Если конфиг находится по другому пути, подставьте корректный. Для удобства можно логировать в файл:

$HOME/gitlab-runner/gitlab-runner run --config $HOME/gitlab-runner/config.toml > $HOME/gitlab-runner/runner.log 2>&1 &

Проверьте, что раннер “подхватывает” джобы:

tail -n 100 $HOME/gitlab-runner/runner.log

Шаг 6. Настройка .gitlab-ci.yml под Termux Runner

Теперь создадим пайплайн. Ключевая идея: привязать джобы к раннеру через tags. Если вы указали теги termux при регистрации, в .gitlab-ci.yml укажите их в каждом job.

Пример минимального пайплайна, который выводит информацию о среде и собирает артефакт:

stages:
  - build

build_on_termux:
  stage: build
  tags:
    - termux
  script:
    - echo "Start build on Termux runner"
    - uname -a
    - pwd
    - ls -la
    - mkdir -p dist
    - echo "Build from GitLab CI at $(date)" > dist/build-info.txt
  artifacts:
    when: always
    paths:
      - dist/
    expire_in: 1 week

Разберём элементы:

  • stages — этапы пайплайна.
  • tags — выбор Runner’а.
  • script — команды, которые выполнит executor.
  • artifacts — артефакты, которые будут загружены в GitLab.

Шаг 7. Кэширование (ускорение повторных сборок)

Кэш позволяет не скачивать зависимости заново. Для Termux shell-executor это особенно полезно: пакеты/модули могут быть тяжёлыми.

Пример для проектов, где есть директория зависимостей (универсальный шаблон):

build_on_termux:
  stage: build
  tags:
    - termux
  cache:
    key: "termux-cache-${CI_COMMIT_REF_SLUG}"
    paths:
      - .cache/
      - node_modules/   # если это Node.js проект
  script:
    - mkdir -p .cache
    - echo "Use cache if available"

Выбирайте paths под ваш стек. Не включайте в кэш “мусор” вроде dist или .git без необходимости.

Шаг 8. Типовой сценарий: сборка Android-проекта (общее представление)

Если вы собираете, например, Android-проект через Gradle, общий подход остаётся тем же: команды install dependencies (если нужно), ./gradlew assemble, артефакты, теги.

К примеру, структура job может быть такой (адаптируйте под ваш проект):

build_android_release:
  stage: build
  tags:
    - termux
  script:
    - chmod +x ./gradlew || true
    - ./gradlew --no-daemon assembleRelease
  artifacts:
    when: always
    paths:
      - app/build/outputs/apk/release/
      - app/build/outputs/bundle/release/
    expire_in: 2 weeks

Если зависимости требуют Java/SDK, их следует установить заранее в Termux и зафиксировать окружение переменными. Для устойчивости лучше использовать заранее подготовленный “боевой” профиль Termux.

Шаг 9. Обеспечение стабильности: ресурсы, права, сеть

9.1 Ограничьте параллельность

Для мобильного устройства обычно разумно:

  • в config.toml держать concurrent = 1
  • в GitLab лимитировать количество одновременных джобов (если используете очереди)

9.2 Следите за правами на каталоги

Runner под shell-executor запускает команды от имени пользователя. Убедитесь, что каталоги builds_dir и cache_dir доступны.

chmod -R u+rwX $HOME/gitlab-runner/cache
chmod -R u+rwX $HOME/gitlab-runner/builds

9.3 Артефакты — только нужные

Ограничивайте artifacts.paths конкретными каталогами сборки. Это уменьшит время загрузки в GitLab.

9.4 Сеть: минимизация “тяжёлых” шагов

Если сборки скачивают большие зависимости, обеспечьте стабильное подключение. Для мобильной сети часто полезно включать контроль энергосбережения (а в идеале — использовать Wi‑Fi).

Шаг 10. Типовые проблемы и быстрые проверки

  • Runner не появляется в GitLab: проверьте теги, статус раннера и запуск команды run в Termux. Сверьте URL и токен.
  • Джоб “pending” бесконечно: проверьте, что теги в .gitlab-ci.yml совпадают с тегами раннера.
  • Ошибка прав: убедитесь, что каталоги builds_dir/cache_dir доступны пользователю Termux.
  • Проблемы со скриптами: используйте echo и ls для диагностики, а также проверяйте, что нужные бинарники доступны в PATH.

Про локальную сеть и VPN (только для удобства подключения)

Если вы используете саморазмещённый GitLab и хотите удобно подключать устройство из Termux к внутренним ресурсам, можно организовать локальную сеть с помощью VPN. Важно использовать VPN именно для формирования локальной сети и стабильного доступа, а не для обхода блокировок. Тогда Runner сможет обращаться к вашему GitLab URL и репозиториям без “неожиданных” ограничений.

Заключение

Настройка GitLab Runner внутри Termux позволяет сделать CI/CD-пайплайн практически “портативным”: вы можете автоматизировать сборки прямо с мобильного устройства, привязав джобы через tags, настроив shell-executor, artifacts и cache. Такой подход особенно полезен для локальных стендов, быстрых тестов, демонстрационных сборок и сценариев, где важна оперативность.

Если хотите, мы в РыбинскЛАБ поможем подобрать конфигурацию под ваш стек (Java/Gradle, Node.js, Python, Go и т.д.), настроить устойчивый Runner, шаблоны .gitlab-ci.yml и сопроводим внедрение в ваш процесс разработки.

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

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

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

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