Contents
matrix戦略によるPythonバージョン指定方法
マトリックスビルドは、複数の環境設定でテストを並列実行するためのGitHub Actionsの強力な機能です。これにより、各バージョンのPythonで自動的にテストが走る仕組みを構築できます。具体的にはstrategy.matrixでバージョンリストを定義し、必要に応じてincludeやexcludeで条件を絞り込みます。
マトリックスビルドとは何か?
マトリックスビルドは、複数の組み合わせ(OS、バージョンなど)でのテスト実行を自動化する仕組みです。以下がその特徴です。
- 並列実行可能:各ジョブが独立して実行されるため、処理効率が向上
- 柔軟な設定:
includeやexcludeで特定のコンビネーションを指定できる - GitHubエコシステムと連携:GitHub Actions独自のアクション(例:
setup-python)と簡単に統合可能
重要ポイント: マトリックスビルドは、テストカバレッジの確保やバージョン互換性の検証に最適です。
GitHub Actions YAMLファイル構築ガイド
YAMLファイルはワークフローの設計に直結するため、正しい構成が必須です。ここでは、テストジョブの基本構成とクロスプラットフォーム対応設定を解説します。
テストジョブの基本構成手順
以下のようにYAMLファイルを作成することで、テスト環境を構築できます。
runs-onで実行するOSを指定:ubuntu-latestやwindows-latestなどstrategy.matrixでバージョンリストを定義:['3.8', '3.9', ...]と記述setup-pythonアクションを使う:python-versionにマトリックス変数を使用
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
jobs: test: runs-on: ubuntu-latest strategy: matrix: python-version: ['3.10', '3.12'] steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} |
注意事項:
setup-pythonアクションで指定するバージョンは、'3.12'など文字列形式で記述すること。
クロスプラットフォーム対応設定
複数のOS(Windows/Linux)でテストを行う場合は、matrix.osにOS名を追加します。以下が具体的な構成例です。
|
1 2 3 4 5 |
strategy: matrix: os: ['ubuntu-latest', 'windows-latest'] python-version: ['3.10', '3.12'] |
| OS | 設定内容 | 特徴 |
|---|---|---|
| Ubuntu | aptでパッケージをインストール |
Linux標準のパッケージ管理 |
| Windows | chocoやwingetを使用 |
Windows環境向けツール |
重要ポイント: GitHub ActionsはOSごとに最適なツール(例:
setup-python)を提供するため、環境依存の処理が不要です。
テスト環境構築手順と実装例
テスト環境は、依存ライブラリのインストールからテストスクリプトの実行まで一連の流れで構成されます。以下に具体的な手順を示します。
依存ライブラリのインストール方法
requirements.txtを使って依存ライブラリをインストールする例です:
|
1 2 3 4 5 6 |
steps: - name: Install dependencies run: | pip install --upgrade pip pip install -r requirements.txt |
手順:
pipを最新版にアップグレードrequirements.txtで定義されたライブラリをインストール
注意事項: 依存ライブラリのバージョン指定や相性問題に注意が必要です。
テストスクリプトの実行フロー
テストスクリプトを実行する際は、pytestなどのフレームワークを用います:
|
1 2 3 4 5 |
steps: - name: Run tests run: | pytest --cov=my_package tests/ |
手順:
pytestでテストケースを実行--covオプションでカバレッジレポートを取得
重要ポイント: カバレッジレポートは、コード品質の向上に直接的な影響を与えるため、必須とされます。
カバレッジレポート有効化の条件と手順
カバレッジレポートは、コードのテスト網羅率を可視化するための重要なツールです。以下に導入方法とアーカイブ保存設定を解説します。
レポート生成ツールの選定
代表的なツールはpytest-covで、pip install pytest-covでインストールできます。
手順:
pytest-covを導入--cov=パッケージ名オプションをテストコマンドに追加
注意事項: カバレッジを有効化する際には、
--cov=パッケージ名の指定が不可欠です。
アーカイブ保存設定
カバレッジレポートをアーカイブして保持するには、GitHub Actionsのupload-artifactアクションを使用します。以下は例:
|
1 2 3 4 5 6 7 |
- name: Upload coverage report if: github.ref == 'refs/heads/main' && steps.run-tests.outcome == 'success' uses: actions/upload-artifact@v4 with: name: coverage-report path: my_package/.coverage |
条件:
- テストが
mainブランチで成功した場合のみ実行 GITHUB_ACTIONS環境変数を活用し、柔軟な設定が可能
Windows/Linuxのクロスプラットフォームテスト構成
OSごとの差異に対応した設定は、安定したワークフロー構築に不可欠です。以下に具体的な手順と注意点を解説します。
OSごとのパッケージ管理の違い
Linuxではapt-get、Windowsではchocoやwingetなどを使用してパッケージをインストールします。
| OS | パッケージ管理ツール | 例 |
|---|---|---|
| Ubuntu | apt |
sudo apt install -y python3.12 |
| Windows | choco |
choco install python |
注意事項: GitHub ActionsはOSごとに最適なツールを提供するため、手動でのインストールは不要です。
パス設定の注意点
Windows環境では、パス区切り文字(\)やファイルの相対経路に気を配る必要があります。以下が具体例です。
|
1 2 3 4 5 |
- name: Set environment variables run: | echo "Setting PATH for Windows" set PATH=C:\Python312;%PATH% |
手順:
setコマンドで環境変数を明示的に設定- パスの指定はOSに応じて調整
まとめ
本記事では、GitHub Actionsによるマルチバージョンテストとカバレッジレポート活用法について詳しく解説しました。主なポイントを以下にまとめます。
- マトリックスビルドで複数バージョンのテストを自動化
- YAMLファイルでクロスプラットフォーム対応設定を構築
- カバレッジレポート活用でコード品質向上を実現
記事内で解説したYAML例やカバレッジ有効化の手順、OSごとの設定違いなどは、実際にワークフローに適用することで効果が得られます。記事内のコードをコピーしてワークフローに適用し、多バージョンテストを実装してみましょう。