В современном мире разработки программного обеспечения Continuous Integration/Continuous Deployment (CI/CD) является неотъемлемой частью эффективной работы команды. Он позволяет автоматизировать процессы сборки, тестирования и развертывания приложений, значительно сокращая время выхода новых версий и повышая надежность.
В данной статье мы рассмотрим настройку CI/CD пайплайнов для Python и PHP приложений с использованием двух популярных платформ: GitLab CI и GitHub Actions. Особое внимание будет уделено использованию Docker Compose для контейнеризации приложений, что обеспечивает переносимость и воспроизводимость окружения.
Почему Docker Compose?
Docker Compose – это инструмент для определения и запуска многоконтейнерных Docker-приложений. Он позволяет описать все необходимые сервисы (например, веб-сервер, база данных, приложение) в файле docker-compose.yml и запустить их одновременно. Это упрощает разработку, тестирование и развертывание сложных приложений, особенно когда требуется несколько сервисов.
GitLab CI: Настройка пайплайна
GitLab CI – это встроенная система CI/CD в GitLab. Она позволяет определять процессы сборки, тестирования и развертывания в файле .gitlab-ci.yml в репозитории проекта.
Пример .gitlab-ci.yml для Python приложения
stages:
- build
- test
- deploy
build:
stage: build
image: python:3.9
script:
- pip install -r requirements.txt
artifacts:
paths:
- dist/
test:
stage: test
image: python:3.9
script:
- python -m unittest discover
dependencies:
- build
deploy:
stage: deploy
image: alpine/git
script:
- echo "Deploying to production..."
# Здесь можно добавить команды для развертывания, например, через SSH
only:
- main
Пример .gitlab-ci.yml для PHP приложения
stages:
- build
- test
- deploy
build:
stage: build
image: php:8.1-fpm
script:
- composer install
artifacts:
paths:
- vendor/
test:
stage: test
image: php:8.1-fpm
script:
- vendor/bin/phpunit
dependencies:
- build
deploy:
stage: deploy
image: alpine/git
script:
- echo "Deploying to production..."
# Здесь можно добавить команды для развертывания, например, через SSH
only:
- main
GitHub Actions: Настройка пайплайна
GitHub Actions – это платформа CI/CD, интегрированная с GitHub. Она позволяет автоматизировать различные задачи, связанные с разработкой, с помощью YAML-файлов в репозитории проекта.
Пример .github/workflows/ci.yml для Python приложения
name: Python CI/CD
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: python -m unittest discover
- name: Build artifact
run: mkdir dist
shell: bash
env:
PROJECT_NAME: your_project_name
run: python -m build
deploy:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy to production
run: echo "Deploying to production..."
# Здесь можно добавить команды для развертывания, например, через SSH
Пример .github/workflows/ci.yml для PHP приложения
name: PHP CI/CD
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up PHP 8.1
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
extensions: 'sqlite3,mbstring,xml'
- name: Install dependencies
run: composer install --no-interaction --no-ansi
- name: Run tests
run: vendor/bin/phpunit
- name: Build artifact
run: mkdir vendor/build
shell: bash
deploy:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy to production
run: echo "Deploying to production..."
# Здесь можно добавить команды для развертывания, например, через SSH
Интеграция с Docker Compose
Для интеграции CI/CD с Docker Compose необходимо включить Docker в качестве зависимости в пайплайне. В GitLab CI это можно сделать, указав image: docker:latest в настройках сборки. В GitHub Actions необходимо установить Docker CLI с помощью actions/docker@v5 или аналогичного action.
Внутри пайплайна необходимо выполнить команду docker-compose up -d для запуска сервисов, а после завершения сборки и тестирования – docker-compose down для остановки.
Соответствие законодательству РФ об информационной безопасности
При разработке и развертывании приложений в РФ необходимо учитывать требования законодательства об информационной безопасности (ФЗ-152, ФЗ-157). Это включает в себя:
- Шифрование данных при хранении и передаче.
- Регулярное обновление программного обеспечения.
- Управление доступом к данным.
- Проведение аудитов безопасности.
- Соответствие требованиям к обработке персональных данных.
При настройке CI/CD пайплайнов необходимо предусмотреть автоматическое выполнение проверок безопасности (например, сканирование на уязвимости) и создание резервных копий данных.
Заключение
Настройка CI/CD пайплайнов для Python и PHP приложений с использованием GitLab CI и GitHub Actions – это эффективный способ автоматизировать процессы разработки и развертывания, повысить качество и надежность приложений. Использование Docker Compose обеспечивает переносимость и воспроизводимость окружения, а соблюдение требований законодательства об информационной безопасности гарантирует защиту данных.
Если вам требуется помощь в настройке CI/CD, разработке веб-приложений или оптимизации инфраструктуры, обращайтесь в РыбинскЛАБ. Мы предлагаем полный спектр услуг по разработке программного обеспечения, включая DevOps-оптимизацию и внедрение CI/CD.