Ответ
Базовый CI/CD пайплайн для Python-проекта автоматизирует проверку качества кода, тестирование и развертывание. Он обычно состоит из нескольких ключевых этапов, запускаемых при каждом коммите в репозиторий.
Основные этапы пайплайна:
- Checkout: Загрузка исходного кода из репозитория.
- Setup Environment: Установка нужной версии Python и зависимостей проекта (обычно из
requirements.txt
). - Linting & Formatting: Проверка кода на соответствие стилю с помощью инструментов вроде
flake8
,black
илиruff
. - Testing: Запуск автоматических тестов (например, с помощью
pytest
) для проверки корректности работы кода. - (Опционально) Build: Сборка артефактов, например, создание Docker-образа.
- (Опционально) Deploy: Автоматическое развертывание приложения на тестовый или продакшн-сервер.
Пример: CI-пайплайн с использованием GitHub Actions
Это типичный файл конфигурации .github/workflows/ci.yml
, который выполняет линтинг и тестирование для Python-проекта.
# Имя рабочего процесса
name: Python CI
# Триггеры для запуска: push в main или создание pull request
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
# Название задачи
build-and-test:
# ОС, на которой будет выполняться задача
runs-on: ubuntu-latest
strategy:
# Запуск тестов на нескольких версиях Python
matrix:
python-version: ["3.9", "3.10", "3.11"]
steps:
# 1. Клонирование репозитория
- name: Checkout repository
uses: actions/checkout@v3
# 2. Настройка Python нужной версии
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
# 3. Установка зависимостей
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install flake8 pytest
# 4. Проверка кода линтером
- name: Lint with flake8
run: |
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# 5. Запуск тестов
- name: Test with pytest
run: |
pytest