В современном мире разработки программного обеспечения автоматизация процессов сборки, тестирования и развертывания (CI/CD) является критически важной. Хотя традиционно CI/CD системы развёртываются на серверах, возможно создание функционального CI/CD конвейера даже на мобильном устройстве, используя Termux. В этой статье мы рассмотрим, как развернуть CI/CD конвейер в Termux, используя GitLab Runner и Docker контейнеры. Это позволит вам автоматизировать процессы разработки и повысить эффективность вашей работы, даже находясь вне офиса.
Необходимые инструменты
Перед началом убедитесь, что у вас установлены следующие инструменты:
- Termux: https://termux.com/
- GitLab: Аккаунт в GitLab.com или GitLab.org.
- Docker: https://docs.docker.com/engine/install/android/. (Установка в Termux).
- Docker Compose: (Для упрощения управления контейнерами).
Настройка Termux
1. Обновление Termux:
pkg update && pkg upgrade
2. Установка Docker и Docker Compose:
pkg install docker docker-compose
3. Разрешение доступа к сети (необходимо для работы Docker):
termux-setup-storage
4. Установка необходимых пакетов (для Docker):
pkg install openssh
Создание Dockerfile
Создайте Dockerfile для вашего проекта. Пример Dockerfile для простого Python приложения:
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt . # Если у вас есть requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
COPY . . # Копируем остальной код проекта
CMD ["python", "main.py"]
Убедитесь, что у вас есть файл requirements.txt, если ваше приложение использует какие-либо зависимости.
Настройка GitLab CI/CD
1. Создайте файл .gitlab-ci.yml в корне вашего репозитория GitLab:
stages:
- build
- test
- deploy
build:
stage: build
image: python:3.9-slim-buster
script:
- pip install --no-cache-dir -r requirements.txt
- echo "Build successful!"
test:
stage: test
image: python:3.9-slim-buster
script:
- python -m unittest discover
deploy:
stage: deploy
image: alpine/ssh
before_script:
- apk add --no-cache openssh-client
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" | tr -d '
' > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- ssh-keyscan your_server_ip >> ~/.ssh/known_hosts
script:
- echo "Deploying to server..."
- ssh your_user@your_server_ip "python main.py"
only:
- main
Замените your_server_ip, your_user и SSH_PRIVATE_KEY на соответствующие значения для вашего сервера.
Важно: SSH_PRIVATE_KEY - это ваш приватный SSH ключ, который вы должны добавить в настройки проекта GitLab. Он нужен для безопасного подключения к вашему серверу.
Развертывание с использованием GitLab Runner в Termux
1. Получите SSH ключ: Если у вас его еще нет, создайте SSH ключ на вашем компьютере:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
2. Добавьте публичный ключ в GitLab: Скопируйте содержимое файла ~/.ssh/id_rsa.pub и добавьте его в настройки SSH ключей в вашем проекте GitLab.
3. Настройте GitLab Runner в Termux: В Termux создайте файл config.toml в директории $HOME/.gitlab/:
[[runners]]
name="Termux Runner"
url="https://gitlab.com/"
token="YOUR_GITLAB_TOKEN"
executor="docker"
[runners.docker]
image="python:3.9-slim-buster"
privileged="false"
Замените YOUR_GITLAB_TOKEN на ваш токен доступа к GitLab (можно сгенерировать в настройках пользователя GitLab).
4. Запустите GitLab Runner:
gitlab-runner run --config $HOME/.gitlab/config.toml
Тестирование CI/CD конвейера
Закоммитьте ваш Dockerfile и .gitlab-ci.yml в ваш репозиторий GitLab. GitLab Runner автоматически запустит ваш CI/CD конвейер и выполнит сборку, тестирование и развертывание вашего приложения.
Решение проблем
В процессе настройки могут возникнуть различные проблемы. Часто возникают проблемы с сетевым подключением или неверной настройкой SSH ключей. Внимательно проверяйте логи GitLab Runner и Docker для выявления причин ошибок.
Заключение
В этой статье мы продемонстрировали, как развернуть полноценный CI/CD конвейер в Termux с использованием GitLab Runner и Docker контейнеров. Это позволит вам автоматизировать процессы разработки и повысить эффективность вашей работы, даже находясь вне офиса. Развёртывание CI/CD в Termux – отличный способ для разработчиков, которым нужна гибкость и мобильность.
Вам нужна помощь в настройке CI/CD? РыбинскЛАБ предлагает профессиональные услуги по автоматизации разработки, включая развертывание CI/CD конвейеров на различных платформах. Обратитесь к нам, и мы поможем вам оптимизировать процессы разработки и повысить производительность вашей команды! https://rybinsklab.ru/