Современная разработка мобильных приложений требует автоматизации процессов сборки, тестирования и развертывания. Termux — мощный терминал Linux для Android, который позволяет реализовать полноценный CI/CD пайплайн непосредственно на мобильном устройстве. В данной статье мы рассмотрим настройку непрерывной интеграции и доставки для Android-приложений с использованием Git.
Подготовка окружения
Первым шагом установим необходимые пакеты в Termux:
pkg update && pkg upgrade -y
pkg install git openjdk-17 gradle android-tools -y
Настроим Git для работы с репозиторием:
git config --global user.name "Ваше Имя"
git config --global user.email "email@example.com"
Создание структуры проекта
Инициализируем новый Android-проект с Gradle:
mkdir -p ~/myapp && cd ~/myapp
gradle init --type android-application --dsl kotlin --package com.example.myapp --name MyApp
Структура проекта будет содержать стандартные директории для исходного кода, ресурсов и конфигурации сборки.
Настройка Git-репозитория
Инициализируем локальный репозиторий и создадим первый коммит:
git init
git add .
git commit -m "Initial commit: Android project structure"
Для удаленного репозитория можно использовать GitHub, GitLab или собственный Git-сервер в локальной сети. Пример добавления remote:
git remote add origin https://github.com/username/myapp.git
git push -u origin main
Реализация CI/CD скриптов
Создадим директорию для скриптов автоматизации:
mkdir -p ~/myapp/ci
Скрипт сборки build.sh:
#!/data/data/com.termux/files/usr/bin/bash
set -e
echo "=== Начало сборки ==="
cd ~/myapp
echo "Получение последних изменений..."
git pull origin main
echo "Очистка предыдущих сборок..."
./gradlew clean
echo "Сборка debug APK..."
./gradlew assembleDebug
echo "Сборка release APK..."
./gradlew assembleRelease
echo "=== Сборка завершена успешно ==="
ls -la app/build/outputs/apk/
Скрипт тестирования test.sh:
#!/data/data/com.termux/files/usr/bin/bash
set -e
echo "=== Запуск тестов ==="
cd ~/myapp
./gradlew test
echo "=== Тесты пройдены ==="
Скрипт деплоя deploy.sh (пример для локальной установки):
#!/data/data/com.termux/files/usr/bin/bash
set -e
echo "=== Установка приложения ==="
cd ~/myapp
adb install -r app/build/outputs/apk/debug/app-debug.apk
echo "=== Приложение установлено ==="
Делаем скрипты исполняемыми:
chmod +x ~/myapp/ci/.sh
Автоматизация через Git Hooks
Настроим pre-push хук для автоматического запуска тестов перед отправкой изменений:
cat > ~/myapp/.git/hooks/pre-push << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
echo "Pre-push hook: Running tests..."
~/myapp/ci/test.sh
EOF
chmod +x ~/myapp/.git/hooks/pre-push
Планирование задач с cron
Для периодической проверки репозитория и автоматической сборки настроим cron:
pkg install cronie -y
crond
crontab -e
Добавим задачу на проверку каждые 30 минут:
/30 cd ~/myapp && git fetch origin && if [ "$(git rev-parse HEAD)" != "$(git rev-parse @{u})" ]; then ~/myapp/ci/build.sh; fi
Мониторинг и логирование
Создадим простую систему логирования для отслеживания истории сборок:
mkdir -p ~/myapp/logs
echo "$(date): Build started" >> ~/myapp/logs/build.log
~/myapp/ci/build.sh >> ~/myapp/logs/build.log 2>&1
echo "$(date): Build finished" >> ~/myapp/logs/build.log
Просмотр логов:
tail -f ~/myapp/logs/build.log
Безопасность и лучшие практики
- Храните ключи подписи (keystore) в защищенном месте, не коммитьте их в репозиторий
- Используйте переменные окружения для чувствительных данных
- Регулярно обновляйте Termux и пакеты:
pkg update && pkg upgrade - Настройте SSH-ключи для беспарольного доступа к Git-серверу
- Ограничьте права доступа к скриптам CI:
chmod 700 ~/myapp/ci/*.sh
Заключение
Реализация CI/CD пайплайна в Termux открывает новые возможности для мобильной разработки: автоматическая сборка при каждом коммите, запуск тестов перед отправкой кода, периодическая проверка репозитория и мгновенная установка сборок на устройство. Данный подход особенно актуален для индивидуальных разработчиков и небольших команд, которым не требуется сложная инфраструктура.
Команда РыбинскЛАБ оказывает профессиональные услуги по настройке CI/CD пайплайнов, автоматизации сборки мобильных приложений, администрированию Linux-систем и разработке под Android. Обращайтесь за консультацией и внедрением решений под ваши задачи.