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 пайплайнами: настройка GitHub Actions

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 готова помочь. Мы предоставляем консалтинг, обучение и поддержку проекта от идеи до продакшн‑релиза.

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

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

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

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

Связаться со мной