Pythonプロジェクト用GitLab CIパイプライン
flake8 lint、pytestテスト、pipキャッシュ、JUnitレポートアーティファクトを含むPythonプロジェクト用の本番対応.gitlab-ci.yml。
Language Pipelines
詳細な説明
GitLabでのPython CI設定
GitLabのPython CIパイプラインは、pipキャッシュとマージリクエストでネイティブにレンダリングできるJUnit形式のテストレポートを活用できます。
パイプライン設定
stages:
- lint
- test
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
flake8:
stage: lint
image: python:3.12-slim
script:
- pip install flake8
- flake8 . --max-line-length=120 --statistics
cache:
key: pip-cache
paths:
- .cache/pip/
policy: pull-push
pytest:
stage: test
image: python:3.12-slim
script:
- pip install -r requirements.txt
- pytest --junitxml=report.xml --cov=src --cov-report=html
cache:
key: pip-cache
paths:
- .cache/pip/
policy: pull-push
artifacts:
paths:
- report.xml
- htmlcov/
expire_in: 30 days
reports:
junit: report.xml
Pipキャッシュの設定
PIP_CACHE_DIRをプロジェクト相対パスに設定することが重要です。デフォルトでは、pipは~/.cache/pipにキャッシュしますが、これはプロジェクトディレクトリの外にあり、GitLab CIでキャッシュできません。
JUnitレポート
reports: junit: report.xmlディレクティブにより、GitLabがJUnit XMLを解析し、マージリクエストに直接テスト結果を表示します。
ユースケース
Django、Flask、FastAPI、またはpytestを使用するPythonプロジェクトに最適です。即座のlintフィードバックと、GitLabマージリクエストで表示される詳細なテストレポートを提供します。