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‑пайплайнами для безопасной сборки Docker‑образов

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 docker
    proot-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‑воркфлоу под любые задачи.

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

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

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

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

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