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 для Python и PHP приложений: настройка GitLab CI и GitHub Actions с Docker‑Compose

В современном мире разработки программного обеспечения 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.

Материал подготовлен и отредактирован для практического применения. Перед внедрением в продакшен проверьте код и команды на своём окружении.

Поделиться материалом

Нужна сложная backend-разработка?

Проектирование архитектуры, PHP/Python backend, интеграции API, боты, автоматизация и оптимизация существующих систем.

Обсудить проект
Поддержать проект