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 для автоматического деплоя и тестирования ваших скриптов.

Подготовка Termux

Для начала необходимо установить базовые инструменты:

pkg update && pkg upgrade -y
pkg install git python nodejs curl -y

После установки убедитесь, что git и нужные интерпретаторы доступны:

git --version
python3 --version
node -v

Организация репозитория

Создайте репозиторий на GitHub, GitLab или Bitbucket. В корне проекта разместите скрипты, файлы конфигурации CI и README. Пример структуры:

my-termux-project/
├─ .gitignore
├─ .github/
│  └─ workflows/
│     └─ android.yml
├─ scripts/
│  ├─ deploy.sh
│  └─ test.py
└─ requirements.txt

Настройка CI/CD для Termux

Самый простой способ – использовать облачные CI, которые могут запускать контейнеры с Android‑эмулятором или напрямую выполнять SSH‑команды на устройстве.

Вариант 1: GitHub Actions + SSH

Создайте файл .github/workflows/android.yml:

name: Deploy to Termux

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Set up SSH
        uses: webfactory/ssh-agent@v0.5.4
        with:
          ssh-private-key: ${{ secrets.TERMUX_SSH_KEY }}

      - name: Transfer scripts
        run: |
          rsync -avz --exclude='.git*' ./ user@android-device:/data/data/com.termux/files/home/my-termux-project/

      - name: Run deployment script
        run: |
          ssh user@android-device 'cd ~/my-termux-project && ./scripts/deploy.sh'

В secrets.TERMUX_SSH_KEY храните закрытый SSH‑ключ, а на Android‑устройстве в Termux запустите sshd и добавьте публичный ключ в ~/.ssh/authorized_keys.

Вариант 2: GitLab CI + Docker

Если требуется полностью изолированное окружение, можно собрать Docker‑образ, содержащий Termux‑пакеты (например, termux/termux-docker), и запускать его в GitLab Runner.

image: termux/termux-docker:latest

stages:
  - test
  - deploy

test_job:
  stage: test
  script:
    - apt-get update && apt-get install -y python3-pip
    - pip3 install -r requirements.txt
    - python3 scripts/test.py

deploy_job:
  stage: deploy
  script:
    - ./scripts/deploy.sh
  only:
    - main

Автоматическое тестирование скриптов

Тесты можно писать на любом языке, поддерживаемом в Termux. Пример простого теста на pytest для Python‑скрипта:

# requirements.txt
pytest

# test_example.py
def test_sum():
    assert 1 + 1 == 2

В CI‑pipeline добавьте шаг, который устанавливает зависимости и запускает pytest:

- name: Install dependencies
  run: pip3 install -r requirements.txt
- name: Run tests
  run: pytest

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

  • Разделяйте окружения. Для продакшн‑деплоя используйте отдельный пользователь в Termux, чтобы ограничить доступ к системным файлам.
  • Храните секреты безопасно. Используйте переменные окружения CI и сервисы Secret Management (GitHub Secrets, GitLab CI variables).
  • Логируйте процессы. Перенаправляйте вывод скриптов в файлы log.txt и отправляйте их в артефакты CI.
  • Обновляйте пакеты. Регулярно запускайте pkg update && pkg upgrade -y в планировщике (cron), чтобы избежать уязвимостей.

Заключение

Интеграция Termux с современными системами CI/CD открывает возможности автоматизированного деплоя и тестирования прямо с мобильного устройства. Выбирайте подходящий подход – SSH‑доступ к реальному терминалу или контейнеризированный runner – и следуйте лучшим практикам безопасности.

Компания RybinskLab предлагает профессиональные услуги по настройке CI/CD процессов, адаптации Termux под ваши бизнес‑задачи и обучению команд эффективному использованию мобильных Linux‑сред.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом РыбинскЛАБ.

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

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

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

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