Github ActionsでPipenv + Pytestの自動テストを行った


概要

前回「Travis CIでPipenv + Pytestの自動テストを行った」でTravis CIを使った自動テストを実施したが、Github Actionsが使えるようになったので、こちらでも試してみた。
実際に試してみたリポジトリは下記である。
https://github.com/doara-developer/weatherlib

Github Actions

GithubのCI/CDツール。現在はまだベータ版だが、まもなく標準サポートされる。ベータ版への参加リクエストを送ることで利用可能。私の場合は申請してから数日後に通った。
申請が通ると下記のようなActionsタブが表示される。

Workflowの作成

基本的には、yamlファイルに「処理が始まるトリガー」と「実行する処理内容」を記述することで、Workflowを作成することが出来る。最初からテンプレートが用意されているので、それをベースに書けばそこまで困らないだろう。

最終的に作成したyamlファイルは下記である。本リポジトリではPushをトリガーにPipenvとライブラリをインストールして、Pipfileに書かれているPytest実行用のコマンドを叩くだけ。他にどんなことが出来るか気になる方はGitHub Actionsのワークフロー構文をチェック。

name: Run pytest

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python 3.7
      uses: actions/setup-python@v1
      with:
        python-version: 3.7
    - name: Install pipenv and dependencies
      run: |
        python -m pip install --upgrade pip
        pip install pipenv --upgrade-strategy=only-if-needed
        pipenv install --dev
    - name: Run test
      run: |
        pipenv run tests

Workflowの実行状況を確認

作成後、Actionsタブに行くとWorkflowの動作状況を確認できる。何故かTravis CIの状況も表示された、素晴らしい。

バッジの作成方法

Travis CIと同じようにGithub Actionsも状況を確認するためのバッジを作成し、Readmeに貼ることが出来る。下記がバッジのURLである。

https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg

まとめ

とても分かりやすく、特に詰まることなく実行することが出来た。標準サポートになればわざわざ別のCIサービスを使う必要がなくなってくるので、おそらくGithub Actionsが主流になっていくだろう。