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‑сборок. Пример сценария:
- В репозитории хранится
Fastfileс задачейbeta. - В 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 готова помочь. Мы специализируемся на автоматизации мобильных разработок, построении кастомных пайплайнов и поддержке облачных инфраструктур. Обращайтесь – ускорим ваш релиз вместе!