We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Автоматизация CI/CD пайплайнов: настройка GitLab Runner и Jenkins в Termux

Termux — это удобная среда для запуска Linux-инструментов на Android. В сценариях обучения, прототипирования и локальной разработки Termux позволяет поднимать “легковесные” агенты для CI/CD, тестировать сборки и автоматизировать рутинные задачи. Для полноценного продакшн-CI такие решения обычно комбинируют с выделенными серверами, но как мобильный агент или локальный runner Termux работает эффективно.

В этой статье рассмотрим два подхода:

  • GitLab CI с GitLab Runner, запущенным в Termux.
  • Jenkins как отдельный сервис, который можно использовать локально для сборок и сценариев.

Архитектура: агент в Termux и CI в GitLab/Jenkins

Идея проста: GitLab или Jenkins управляют пайплайнами, а Termux выполняет шаги “worker/agent”. В зависимости от вашей модели:

  • GitLab Runner получает задания от GitLab и выполняет команды в контейнере/системе.
  • Jenkins может выполняться в самом Termux или вы можете использовать Jenkins как менеджер, а Termux — как агент (в зависимости от требований и возможностей сети).

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

  • сетевой режим (предсказуемый доступ к GitLab/Jenkins);
  • хранение секретов (токены Runner, ключи, переменные окружения);
  • перезапуск и устойчивость при “сонных” режимах Android.

Подготовка Termux: обновление системы и базовые пакеты

Начнем с подготовки окружения. В Termux обновите пакеты и установите необходимые утилиты.

pkg update -y && pkg upgrade -y
pkg install -y git curl wget ca-certificates gnupg jq

Если планируете сборку проектов, заранее установите нужные языки/инструменты (например, Java, Node.js, Python, Docker). В примерах ниже мы используем минимальный набор.

Настройка GitLab Runner в Termux

GitLab Runner — это агент, который регистрируется в GitLab и выполняет пайплайны. В Termux критично учитывать, что runner запускается как пользовательский процесс и зависит от доступности сети.

Шаг 1. Установка и подготовка окружения для Runner

Сначала установите пакеты, которые часто нужны runner’у и сопутствующим инструментам.

pkg install -y build-essential

Далее — скачайте бинарник gitlab-runner под вашу архитектуру. На практике архитектуры Android/Termux могут отличаться, поэтому лучше ориентироваться на официальный релиз GitLab Runner и корректную сборку для вашей платформы.

Вариант “generic” (примерный). Перед выполнением убедитесь, что бинарник подходит по архитектуре и что ссылка актуальна.

cd $HOME
export RUNNER_VERSION="<укажите_версию_из_релиза>"
curl -L -o gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/v${RUNNER_VERSION}/binaries/<ваша-архитектура>/gitlab-runner"
chmod +x gitlab-runner

Переместите бинарник в удобную директорию.

mv gitlab-runner $HOME/bin/gitlab-runner

Если директории нет:

mkdir -p $HOME/bin

Проверьте:

$HOME/bin/gitlab-runner --version

Шаг 2. Создание конфигурации runner

Конфигурация runner обычно хранится в файле config.toml. Сначала зарегистрируйте runner в GitLab.

На стороне GitLab:

  • откройте Settings > CI/CD > Runners;
  • создайте новый runner;
  • получите URL вашего GitLab и registration token.

На стороне Termux запустите регистрацию. Пример:

$HOME/bin/gitlab-runner register

Далее следуйте подсказкам интерактивного мастера:

  • GitLab instance URL: https://<ваш-гитлаб>
  • Registration token: токен из GitLab
  • Description: например termux-mobile-runner
  • Tags: например termux
  • Executor: обычно выбирают shell для Termux

Для сборок на телефоне часто разумно использовать shell executor. Он проще и не требует Docker, что критично для стабильности.

Шаг 3. Рекомендуемый config.toml для shell-executor

Пример базовой структуры (адаптируйте под ваш результат регистрации).

nano $HOME/.gitlab-runner/config.toml

Типовая форма:

concurrent = 1
check_interval = 0

[[runners]]
name = "termux-mobile-runner"
url = "https://<ваш-гитлаб>"
token = "<runner-token>"
executor = "shell"
shell = "bash"
tags = ["termux"]
environment = ["TERM=xterm-256color"]

Примечания:

  • Для мобильного устройства разумно ограничить concurrent и не пытаться параллелить множество сборок.
  • Указывайте shell явно, если у вас есть предпочтение и гарантируется наличие нужного bash.

Шаг 4. Запуск runner и проверка

Запуск:

$HOME/bin/gitlab-runner run --working-directory $HOME

Проверка статуса логами. Если runner зарегистрирован корректно, GitLab начнет присылать jobs по тегам и при наличии подходящих правил в .gitlab-ci.yml.

Пример .gitlab-ci.yml с тегами runner

Минимальный пример пайплайна, который запускается на runner’е с тегом termux.

stages:
  - build

build_termux:
  stage: build
  tags:
    - termux
  script:
    - echo "Hello from Termux CI"
    - uname -a
    - git --version

Если у вас проект на другом языке, добавьте шаги установки зависимостей и сборки в script.

Практические советы по стабильности GitLab Runner в Termux

  • Сеть и доступность: убедитесь, что устройство стабильно имеет доступ к GitLab по https.
  • Сон и ограничения Android: настройте энергосбережение так, чтобы процесс runner не останавливался.
  • Логи: при отладке полезно смотреть, где возникают ошибки — в сетевом доступе, в командах script, в правах на рабочую директорию.
  • Рабочая директория: задавайте --working-directory и следите за тем, чтобы у пользователя были права на запись.

Настройка Jenkins в Termux: локальный сценарий для автоматизации

Jenkins традиционно работает как сервер и требует Java. В Termux можно поднимать Jenkins локально для обучения и локальных экспериментов. Если цель — именно “агентный” подход, часто проще использовать выделенный Jenkins, а Termux подключать как агента. Но ниже — базовый вариант локального Jenkins в Termux.

Шаг 1. Установка Java

Для Jenkins в Termux обычно требуется Java 17/11 (в зависимости от версии Jenkins). Установите Java:

pkg install -y openjdk-17

Проверьте:

java -version

Шаг 2. Скачивание Jenkins WAR и запуск

Скачайте jenkins.war и запустите его.

cd $HOME
curl -L -o jenkins.war "https://get.jenkins.io/war-stable/latest/jenkins.war"

Запуск (пример):

java -jar jenkins.war --httpPort=8080

Первый запуск может занять время. После старта в консоли появится URL и подсказка по начальному администраторскому паролю (его обычно можно получить из JENKINS_HOME).

Если вы не хотите, чтобы Jenkins блокировал терминал, запускайте в фоне (с учетом особенностей Termux):

nohup java -jar jenkins.war --httpPort=8080 &>/tmp/jenkins.log &

Логи смотрите так:

tail -n 100 /tmp/jenkins.log

Шаг 3. Настройка Jenkins jobs

Далее в интерфейсе Jenkins:

  • создайте Job (Freestyle или Pipeline);
  • определите этапы сборки: git checkout, установка зависимостей, запуск тестов;
  • опционально используйте Pipeline с Jenkinsfile.

Если Jenkins выполняется на том же устройстве, где запускаются сборки, убедитесь, что команды доступны в PATH и достаточно места/памяти.

Рекомендации по безопасности при работе с CI/CD в Termux

  • Не храните токены в открытом виде. Токены GitLab Runner лучше хранить только в config.toml и обеспечить доступ к файлу правами.
  • Ограничивайте права. Не запускайте runner и Jenkins от имени root.
  • Минимизация окружения. Устанавливайте только нужные пакеты для сборок — это уменьшает поверхность рисков.
  • Секреты. Для Jenkins используйте встроенное управление credentials, а для GitLab CI — CI/CD variables.

Локальная сеть и подключение устройств: важный нюанс

Если вам нужно, чтобы Jenkins (или ваш runner) был доступен другим устройствам в рамках вашей инфраструктуры, корректный подход — организовать локальную сеть (например, через VPN, но исключительно для создания локальной сети, а не для обхода блокировок). Это помогает избежать сложностей с разными сетями и NAT при локальной работе.

Технологические лайфхаки: где Termux дает максимум пользы

  • Быстрые проверки: сборка и тесты на мобильном “агенте” при изменениях в репозитории.
  • Обучение и прототипирование: отработка логики CI без поднятия полноценного кластера.
  • Автоматизация рутин: nightly-триггеры, линтеры, генерация артефактов и публикация отчетов (при наличии корректных секретов и доступов).

Заключение

Автоматизация CI/CD с помощью GitLab Runner и Jenkins в Termux — практичный путь для локальных сценариев, прототипирования и обучения. GitLab Runner хорошо ложится на shell-executor и позволяет быстро подключить мобильное устройство к выполнению пайплайнов. Jenkins в Termux можно использовать как локальный сервер для экспериментов и джобов, но при росте нагрузки обычно стоит комбинировать мобильные агенты с выделенной инфраструктурой.

Если хотите организовать CI/CD “под ключ”, настроить стабильные интеграции, подобрать стратегию секретов и обеспечить надежность окружения — обращайтесь в РыбинскЛАБ. Мы поможем спроектировать и внедрить решение для ваших задач.

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

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

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