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

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

Интеграция Termux с облачными CI/CD системами для мобильных проектов

Termux – это полнофункциональная Linux‑среда на Android, которая позволяет запускать скрипты, компилировать код и управлять пакетами так же, как на настольном компьютере. Благодаря возможности работать в терминале прямо с мобильного устройства, Termux открывает новые сценарии автоматизации, в том числе интеграцию с облачными CI/CD системами. В этой статье мы разберём, как превратить ваш смартфон или планшет в self‑hosted runner для популярных CI/CD сервисов и собрать мобильные проекты без необходимости в отдельном сервере.

Почему именно Termux?

  • Полный набор Linux‑утилит (git, curl, ssh, python и др.).
  • Поддержка пакетов через apt и pkg, что упрощает установку зависимостей.
  • Работа в полностью изолированной среде без root‑прав.
  • Низкая стоимость – устройство уже есть в вашем кармане.

Обзор популярных облачных CI/CD платформ

Для мобильных проектов наиболее востребованными являются:

  • GitHub Actions – гибкие воркеры, поддержка self‑hosted runners.
  • GitLab CI/CD – мощные пайплайны, возможность подключать кастомные раннеры.
  • Bitrise – специализированные шаги для Android/iOS, но также допускает собственные машины.
  • CircleCI – масштабируемые контейнеры и поддержка собственных executor‑ов.

Во всех случаях процесс схож: вы регистрируете «runner», настраиваете его в облаке и запускаете задачи, которые будут исполняться на вашем устройстве.

Подготовка среды в Termux

Перед тем как регистрировать runner, необходимо установить базовые инструменты.

pkg update && pkg upgrade -y
pkg install -y git curl wget unzip tar openssh python clang make
# Установка Java (для Android Gradle)
pkg install -y openjdk-17
# Установка Node.js (если требуется для React Native)
pkg install -y nodejs
# Установка Fastlane (для iOS сборок) – через gem
pkg install -y ruby
gem install fastlane -NV

После установки проверьте версии:

git --version
java -version
node -v
python3 --version

Если планируете собирать iOS‑приложения, понадобится ssh‑доступ к macOS‑машине, где будет запускаться xcodebuild. Termux может выступать только в роли координатора, отправляя артефакты и команды на удалённый Mac.

Регистрация self‑hosted runner в GitHub Actions

1. Откройте репозиторий на GitHub → Settings → Actions → Runners → New self‑hosted runner.

2. Выберите операционную систему Linux и скопируйте предложенный скрипт регистрации.

# Пример скрипта регистрации (скопируйте из GitHub)
mkdir -p ~/actions-runner && cd ~/actions-runner
curl -O -L https://github.com/actions/runner/releases/download/v2.311.0/actions-runner-linux-arm64-2.311.0.tar.gz
tar xzf actions-runner-linux-arm64-2.311.0.tar.gz
# Настройка (замените URL и токен на свои)
./config.sh --url https://github.com/your-org/your-repo --token YOUR_TOKEN --name termux-runner --labels android,termux
# Запуск в фоне
./svc.sh install
./svc.sh start

После старта в журнале появится сообщение Runner ready to accept jobs. Теперь любой workflow, помеченный соответствующими лейблами, будет исполняться на вашем Android‑устройстве.

Пример workflow для сборки Android‑приложения

name: Build Android on Termux
on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: self-hosted
    labels: ["android", "termux"]
    steps:
      - name: Checkout source
        uses: actions/checkout@v3
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: '17'
      - name: Grant execute permission for Gradle wrapper
        run: chmod +x ./gradlew
      - name: Build APK
        run: ./gradlew assembleDebug
      - name: Upload artifact
        uses: actions/upload-artifact@v3
        with:
          name: debug-apk
          path: app/build/outputs/apk/debug/app-debug.apk

Все команды будут выполнены в Termux, используя установленный gradle (через wrapper). Обратите внимание, что в Termux по‑умолчанию нет gradle, поэтому используем ./gradlew, который скачивает нужную версию автоматически.

Интеграция с GitLab CI/CD

Для GitLab процесс аналогичен: регистрируем собственный runner, указываем executor shell и указываем путь к Termux‑интерпретатору.

# /data/data/com.termux/files/usr/bin/gitlab-runner register
Enter the GitLab instance URL (e.g. https://gitlab.com/): https://gitlab.com/
Enter the registration token: YOUR_TOKEN
Enter a description for the runner: termux-runner
Enter tags (comma‑separated): android,termux
Enter executor: shell
# После регистрации запустите демона
gitlab-runner run --working-directory /data/data/com.termux/files/home

В .gitlab-ci.yml добавьте соответствующие теги:

build_android:
  stage: build
  tags:
    - android
    - termux
  script:
    - ./gradlew assembleRelease
  artifacts:
    paths:
      - app/build/outputs/apk/release/app-release.apk

Сборка iOS через Fastlane и удалённый macOS

Termux может выступать в роли координатора для iOS‑сборок. Пример сценария:

  1. В репозитории хранится Fastfile с задачей beta.
  2. В CI‑pipeline (GitHub Actions) запускаем скрипт, который через ssh подключается к macOS‑хосту и инициирует fastlane beta.
# .github/workflows/ios.yml
name: Build iOS via remote Mac
on: [push]
jobs:
  ios-build:
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v3
      - name: Transfer project to remote Mac
        run: |
          rsync -avz --exclude='.git' ./ user@macos-host:/Users/ci/builds/your-app
      - name: Run Fastlane on remote Mac
        run: |
          ssh user@macos-host "cd /Users/ci/builds/your-app && fastlane beta"

Таким образом, Termux обеспечивает лёгкую передачу артефактов и управление процессом, а тяжёлый компилятор xcodebuild остаётся на macOS.

Лучшие практики и трюки

  • Постоянный токен доступа: храните токены в ~/.config/termux/secret и задавайте переменные окружения через export.
  • Обновление пакетов: регулярно запускайте pkg upgrade -y – это гарантирует совместимость с новыми версиями CI‑агентов.
  • Разделение задач: используйте tmux внутри Termux, чтобы запускать несколько раннеров одновременно (например, один для Android, другой для React Native).
  • Логи и хранение артефактов: сохраняйте журналы в /data/data/com.termux/files/home/logs/ и отправляйте их в облако через curl -F в конце пайплайна.
  • Энергосбережение: настройте Termux:Battery и отключите автоматический сон, иначе раннер может быть остановлен системой.

Заключение

Интеграция Termux с облачными CI/CD системами превращает ваш Android‑устройство в полностью функциональный self‑hosted runner. Это позволяет экономить ресурсы, ускорять тестирование на реальном железе и поддерживать гибкую инфраструктуру без необходимости в выделенных серверах. Мы рассмотрели настройку среды, регистрацию раннеров в GitHub Actions и GitLab CI, а также методику взаимодействия с удалённым macOS для iOS‑сборок. Следуя рекомендациям и лучшим практикам, вы сможете построить надёжный конвейер, полностью управляемый из терминала вашего телефона.

Если вам нужна профессиональная настройка CI/CD под мобильные проекты, консультации по оптимизации Termux‑окружения или полный спектр DevOps‑услуг, команда RybinskLab готова помочь. Мы специализируемся на автоматизации мобильных разработок, построении кастомных пайплайнов и поддержке облачных инфраструктур. Обращайтесь – ускорим ваш релиз вместе!

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

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю IT-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса.

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