Termux – мощный терминал для Android, предоставляющий полноценный Linux‑окружение. Благодаря возможности установки пакетов из репозитория apt и поддержки SSH, Termux легко вписывается в современные CI/CD процессы. В этой статье мы покажем, как настроить GitHub Actions для удалённого выполнения скриптов в Termux, что позволяет автоматизировать задачи вроде сборки проектов, запуска тестов или обновления конфигураций прямо с вашего смартфона.
Что понадобится
- Устройство с Android 10+ и установленным Termux.
- Базовые пакеты:
git,openssh,curl,python(по необходимости). - Аккаунт на GitHub и репозиторий, где будет храниться ваш workflow.
- SSH‑ключи, сгенерированные в Termux, для безопасного доступа из GitHub Actions.
Шаг 1: Подготовка окружения в Termux
# Обновляем пакеты
apt update && apt upgrade -y
# Устанавливаем необходимые инструменты
apt install -y git openssh curl
# Генерируем SSH‑ключ (без пароля для автоматизации)
ssh-keygen -t ed25519 -C "termux-ci" -f $HOME/.ssh/id_ed25519 -N ""
# Проверяем, что ключ создан
ls -l $HOME/.ssh
Содержимое публичного ключа понадобится в следующем шаге.
Шаг 2: Добавление публичного ключа в репозиторий GitHub
# Выводим публичный ключ
cat $HOME/.ssh/id_ed25519.pub
Скопируйте результат и добавьте его в Settings → Deploy keys вашего репозитория. Отметьте галочку Allow write access, если планируете выполнять команды, изменяющие файловую систему.
Шаг 3: Хранение приватного ключа в GitHub Secrets
Для того чтобы GitHub Actions мог подключиться к Termux, необходимо передать приватный ключ через защищённый секрет.
# Выводим приватный ключ (будьте осторожны, не делитесь им!)
cat $HOME/.ssh/id_ed25519
Скопируйте содержимое и создайте в репозитории секрет TERMUX_SSH_KEY (Settings → Secrets → Actions → New repository secret).
Шаг 4: Создание workflow‑файла
В корне репозитория создайте каталог .github/workflows и файл termux.yml со следующим содержимым:
name: Termux CI
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
run-on-termux:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install SSH client
run: sudo apt-get update && sudo apt-get install -y openssh-client
- name: Add private SSH key
env:
SSH_KEY: ${{ secrets.TERMUX_SSH_KEY }}
run: |
mkdir -p ~/.ssh
echo "$SSH_KEY" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -t rsa localhost >> ~/.ssh/known_hosts
- name: Execute remote script on Termux
env:
TERMUX_IP: ${{ secrets.TERMUX_IP }}
run: |
ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no termux@$TERMUX_IP "\
cd ~/myproject && \
./build.sh && \
./run_tests.py\
"
Обратите внимание, что переменная TERMUX_IP должна быть добавлена в Secrets и содержать IP‑адрес вашего Android‑устройства (см. ниже).
Шаг 5: Получение IP‑адреса устройства
Для доступа из облака необходимо, чтобы ваш телефон был доступен из публичного интернета. Самый простой способ – использовать ngrok или аналогичный туннелирующий сервис.
# Устанавливаем ngrok (если ещё не установлен)
curl -s https://ngrok.com/download | bash
# Запускаем туннель на порт 22 (SSH)
./ngrok tcp 22
В выводе появится строка вида tcp://0.tcp.ngrok.io:XXXXX. Запишите хост (0.tcp.ngrok.io) и порт (XXXXX) и добавьте их в виде TERMUX_IP в формате user@host -p PORT, например:
TERMUX_IP=user@0.tcp.ngrok.io -p 12345
Шаг 6: Тестирование пайплайна
Сделайте любой коммит в ветку main. GitHub Actions автоматически запустит задачу, подключится к Termux через SSH и выполнит указанные скрипты. В логах Actions вы увидите вывод команд, что упрощает отладку.
Безопасность и лучшие практики
- Ограничьте доступ: используйте отдельного пользователя в Termux (например,
ci_user) с минимальными правами. - Сократите время жизни туннеля: автоматизируйте запуск ngrok в начале CI‑задачи и завершайте его после выполнения.
- Не храните пароли в репозитории: все секреты должны быть в GitHub Secrets или в безопасном хранилище.
- Логи SSH: включите аудит в
~/.ssh/authorized_keysс опциейcommand="echo $(date)"для отслеживания доступа.
Расширенные возможности
С помощью Termux можно запускать любые инструменты, включая Docker (через proot-distro), Python‑окружения, или даже компиляторы LLVM. Это открывает путь к полному CI‑процессу без необходимости в отдельном сервере.
Заключение
Интеграция Termux с GitHub Actions позволяет превратить ваш Android‑устройство в полноценный агент для CI/CD, экономя ресурсы и получая гибкость мобильной среды. Следуя описанным шагам, вы получаете надёжный, безопасный и масштабируемый пайплайн, который легко адаптировать под любые задачи.
Если вам нужен профессиональный аудит CI/CD, настройка облачной инфраструктуры или разработка кастомных скриптов под Termux, команда RybinskLab готова помочь. Мы предоставляем консалтинг, обучение и поддержку проекта от идеи до продакшн‑релиза.