GitHub Actionsは、GitHubのCI/CDツールで、pushやpull requestなどのGitHub上のアクティビティやスケジュールした時間、外部イベントをトリガーとして、ワークフローを作成できます。特にPythonのunittestを自動化する際には非常に便利です。
GitHub Actionsの基本
GitHub Actionsは、Linux, macOS, Windowsすべてのコンテナに対応しており、Node.js, Python, Java, Rubyなど、様々な言語に対応しています。ワークフローは、トリガーと1つ以上のジョブで構成され、リポジトリ内の.github/workflows
ディレクトリにYAML形式で定義します。
Pythonのunittestの自動化
具体的には、ソースコードがGitHubへpushされたタイミングで、Pythonで書かれたテストをpytestを使って実行し、GitHub上に結果を表示します。以下に、その一例を示します。
name: Run pytest
on: [push]
jobs:
pytest:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python 3.7
uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
- name: PyTest
run: |
python -m pytest test --junit-xml results/pytest.xml
continue-on-error: true
- name: Upload Unit Test Results
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: Unit Test Results (Python 3.7)
path: results/*.xml
この設定では、pushされた際に、Python 3.7をセットアップし、必要なパッケージをインストールした後、pytestを実行しています。テストの結果は、results/pytest.xml
に保存され、後から確認することができます。
このように、GitHub Actionsを用いることで、Pythonのunittestを簡単に自動化することができます。これにより、コードの品質を維持しつつ、開発の効率を向上させることが可能です。