Termux – это полноценный Linux‑эмулятор для Android, позволяющий запускать команды, скрипты и даже контейнеры Docker на мобильных устройствах. В эпоху микросервисов и автоматизации CI/CD‑пайплайнов появляется интересный сценарий: использовать Termux как лёгкий, изолированный «runner» для сборки Docker‑образов непосредственно на ARM‑устройствах. Это позволяет проверять совместимость образов с целевой архитектурой и сохранять конфиденциальность кода, не передавая его в публичные облака.
Для начала полезно понять, что именно означает слово start в контексте «запуска» процесса. По определению Cambridge Dictionary, start – «to begin doing something»[cambridge.org]. Merriam‑Webster добавляет, что это может означать «to begin a course or journey»[merriam-webster.com]. Таким образом, «запуск» в CI/CD – это начало автоматизированного процесса сборки.
Подготовка Termux
- Установите Termux из Google Play или F-Droid.
- Обновите пакеты:
pkg update && pkg upgrade -y - Установите необходимые инструменты:
pkg install git curl proot-distro -y - Установите Docker‑контейнер через
proot-distro(или используйтеtermux-dockerиз репозитория):proot-distro install dockerproot-distro login docker
Настройка Docker‑демона в Termux
После входа в окружение Docker выполните:
dockerd &
Для безопасного доступа к демону используйте Unix‑socket в домашней директории:
export DOCKER_HOST=unix:///data/data/com.termux/files/home/.docker/docker.sock
Проверьте соединение:
docker version
Интеграция с облачными CI/CD‑сервисами
Ниже представлены примеры конфигураций для самых популярных сервисов.
GitHub Actions
name: Build Docker image on Termux
on:
push:
branches: [ main ]
jobs:
build:
runs-on: self-hosted
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Termux environment
run: |
pkg update && pkg install -y git curl proot-distro
proot-distro install docker
proot-distro login docker < /dev/null &
- name: Build Docker image
run: |
export DOCKER_HOST=unix:///data/data/com.termux/files/home/.docker/docker.sock
docker build -t myrepo/app:${{ github.sha }} .
- name: Push to registry
env:
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
run: |
echo $REGISTRY_TOKEN | docker login -u myuser --password-stdin
docker push myrepo/app:${{ github.sha }}
GitLab CI
stages:
- build
- push
build_image:
stage: build
tags:
- termux-runner
script:
- pkg install -y proot-distro
- proot-distro install docker
- proot-distro login docker < /dev/null &
- export DOCKER_HOST=unix:///data/data/com.termux/files/home/.docker/docker.sock
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
push_image:
stage: push
tags:
- termux-runner
script:
- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
Bitbucket Pipelines
pipelines:
default:
- step:
name: Build on Termux
runs-on: self.hosted
script:
- pkg install -y proot-distro
- proot-distro install docker
- proot-distro login docker < /dev/null &
- export DOCKER_HOST=unix:///data/data/com.termux/files/home/.docker/docker.sock
- docker build -t myrepo/app:${BITBUCKET_COMMIT} .
- echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
- docker push myrepo/app:${BITBUCKET_COMMIT}
Безопасность и управление секретами
- Храните токены доступа в секретах CI‑сервиса, а не в открытом репозитории.
- Ограничьте доступ к Termux‑устройству через PIN‑код и шифрование файловой системы.
- Запускайте сборку в изолированном
proot‑контейнере, чтобы минимизировать влияние потенциально вредоносного кода. - Регулярно обновляйте пакеты Termux:
pkg upgrade -y.
Преимущества использования Termux в CI/CD
- ARM‑совместимость: проверка образов на реальном ARM‑устройстве.
- Экономия ресурсов: отсутствие необходимости в отдельном сервере.
- Гибкость: возможность быстро развернуть новый runner на любом Android‑устройстве.
- Безопасность: код и артефакты остаются в пределах устройства до момента публикации.
Заключение
Интеграция Termux с облачными CI/CD‑пайплайнами открывает новые возможности для безопасной и эффективной сборки Docker‑образов, особенно когда требуется проверка совместимости с ARM‑архитектурой. Благодаря простому набору команд и поддержке популярных CI‑сервисов, вы сможете автоматизировать процесс без лишних затрат.
Если вам нужен профессиональный аудит, настройка инфраструктуры или поддержка в построении кастомных пайплайнов, команда RybinskLab готова помочь. Мы предоставляем услуги по внедрению Termux‑раннеров, настройке безопасных CI/CD‑процессов и оптимизации Docker‑воркфлоу под любые задачи.