В эпоху мобильных разработок Termux становится полноценным Linux‑окружением на Android‑устройствах. Это открывает возможности для построения непрерывных интеграций и доставок (CI/CD) прямо на смартфоне или планшете. Однако, как и в любой автоматизированной цепочке, безопасность кода – критический аспект. В статье мы покажем, как написать скрипты, которые запускают ("start") процесс сборки, тестирования и сканирования на уязвимости, используя только инструменты, доступные в Termux.
Термин start в английском языке имеет несколько значений, среди которых – «начать движение, действие или процесс»[merriam-webster.com](https://www.merriam-webster.com/dictionary/start) и «начать работу, запустить программу»[dictionary.com](https://dictionary.com/browse/start). Эти смысловые оттенки отражаются в нашем CI/CD‑pipeline: первый start — это инициализация окружения, второй – запуск конкретных проверок.
Подготовка окружения Termux
Для построения безопасных цепочек понадобится набор базовых пакетов:
pkg update && pkg upgrade -y
pkg install git python nodejs curl wget -y
pip install --upgrade pip
pip install bandit safety
npm install -g npm-audit
# Установим Trivy для сканирования образов Docker (если используете Docker в Termux)
curl -L https://github.com/aquasecurity/trivy/releases/latest/download/trivy_0.49.1_Linux-ARM64.tar.gz | tar -xz -C $HOME/.local/bin
Все команды следует выполнять в интерактивной сессии Termux, после чего окружение будет готово к работе.
Структура скрипта CI/CD
Ниже представлен шаблон Bash‑скрипта ci_cd.sh, который последовательно:
- Клонирует репозиторий;
- Устанавливает зависимости;
- Запускает тесты;
- Проводит статический анализ кода;
- Сканирует зависимости на уязвимости;
- Отправляет результаты в Slack (или любой другой мессенджер).
#!/usr/bin/env bash
# ====================
# CI/CD pipeline for Termux
# ====================
set -euo pipefail
REPO_URL="https://github.com/example/project.git"
WORKDIR="$HOME/ci_cd_workspace"
SLACK_WEBHOOK="https://hooks.slack.com/services/..."
# 1. Start: клонирование репозитория
echo "[+] Starting pipeline: cloning repository..."
rm -rf "$WORKDIR"
mkdir -p "$WORKDIR"
git clone "$REPO_URL" "$WORKDIR"
cd "$WORKDIR"
# 2. Установка зависимостей
if [ -f requirements.txt ]; then
echo "[+] Installing Python dependencies..."
pip install -r requirements.txt
fi
if [ -f package.json ]; then
echo "[+] Installing Node.js dependencies..."
npm install
fi
# 3. Запуск тестов
if [ -d tests ]; then
echo "[+] Running test suite..."
pytest || { echo "[!] Tests failed"; exit 1; }
fi
# 4. Статический анализ (Bandit для Python)
if [ -f requirements.txt ]; then
echo "[+] Running Bandit security scan..."
bandit -r . -ll || true
fi
# 5. Сканирование зависимостей
if [ -f requirements.txt ]; then
echo "[+] Scanning Python dependencies with Safety..."
safety check --full-report || true
fi
if [ -f package-lock.json ]; then
echo "[+] Scanning Node.js dependencies with npm audit..."
npm audit --audit-level=high || true
fi
# 6. Отправка отчёта в Slack
REPORT="CI/CD pipeline completed successfully."
curl -X POST -H 'Content-type: application/json' --data "{\"text\": \"$REPORT\"}" "$SLACK_WEBHOOK"
echo "[+] Pipeline finished."
Каждый шаг помечен комментарием # Start – это наш «запуск» конкретной части процесса, отражающий значение слова start как «начало действия»[cambridge.org](https://dictionary.cambridge.org/us/dictionary/english/start).
Автоматическая проверка кода на уязвимости
Для обеспечения безопасности в CI/CD применяются несколько инструментов:
- Bandit – статический анализатор Python‑кода, ищет опасные конструкции.
- Safety – проверка известных уязвимостей в зависимостях Python.
- npm audit – аналогичный сканер для Node.js.
- Trivy – универсальный сканер образов Docker и файловой системы.
Все они могут быть вызваны из скрипта, как показано выше. При обнаружении проблем скрипт продолжит работу, но в конце отправит детализированный отчёт, позволяя быстро реагировать.
Лучшие практики безопасного CI/CD в Termux
- Изоляция окружения: используйте
venvдля Python иnvmдля Node.js, чтобы зависимости не конфликтовали с системными. - Минимальные привилегии: запускайте скрипт от обычного пользователя, избегайте
root, если это не требуется. - Регулярные обновления: периодически обновляйте пакеты
pkg,pipиnpm, чтобы получать последние исправления. - Хранение секретов: используйте
termux‑apiдля безопасного доступа кKeyStoreAndroid, а не хардкодьте токены. - Логи и аудит: сохраняйте вывод каждого шага в файлы
logs/и регулярно проверяйте их.
Заключение
Termux предоставляет мощный набор Linux‑инструментов прямо на мобильных устройствах, позволяя создавать полностью автоматизированные и безопасные цепочки CI/CD. Правильный start процесса, последовательное сканирование кода и соблюдение лучших практик делают такой подход надёжным и удобным.
Команда RybinskLab готова помочь вам внедрить безопасные CI/CD‑pipeline в Termux, провести аудит кода, настроить автоматические сканеры уязвимостей и обеспечить поддержку на всех этапах проекта. Свяжитесь с нами для консультаций, разработки кастомных скриптов и комплексных решений по DevSecOps.