CircleCIのPythonOrbsを使って、CIでテストを実行させるものを作ります。
作業リポジトリ
やったこと
Pipfileを用意
今回はmypyとpytestとpycodestyleを使います。
[[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] [dev-packages] mypy = "*" pytest = "*" pycodestyle = "*" [requires] python_version = "3.8"
サンプルを用意
# app.py def greeting(name: str) -> str: return 'hello ' + name print(greeting('name'))
テストファイルを用意
# test_app.py import app def test_greeting(): assert app.greeting('name') == 'hello name'
ファイルを用意したら pushします。
CircleCIの準備
CircleCIにアクセスして、左メニューのProjectsからリポジトリを選択してセットアップします。
(ブラウザ上で .circleci/config.yml
を編集できるの便利)
デフォルトでセットされている
orbs: python: circleci/python@0.2.1
はorbのバージョンは結構古いので、Orbsのページを見て最新バージョンに書き換えます(2021/03/31時点では 1.3.3
が最新)
https://circleci.com/developer/orbs/orb/circleci/python
steps内にある load-cache
, save-cache
は今は1.3.3では使えない(ライブラリのインストール時に自動でキャッシュしてくれる)ので削除します。
ライブラリのインストールは、今回作ったサンプルではpipenvを使うのでネストさせた要素の pkg-manager:
に pipenv
を書きます(CI環境なので引数に --dev
を付けます)。
Usage Examplesには、テストを実行させるために python/test
を使うような記述がありますが、stepsでは使わずにjobsに直接指定します。
できあがった .circleci/config.yml
が以下です。
# .circleci/config.yml version: 2.1 orbs: python: circleci/python@1.3.3 jobs: build-and-test: executor: python/default steps: - checkout - python/install-packages: args: --dev pkg-manager: pipenv - run: name: mypy command: pipenv run mypy . - run: name: pycodestyle command: pipenv run pycodestyle . workflows: main: jobs: - build-and-test - python/test: args: --dev test-tool: pytest pkg-manager: pipenv
テストを実行する部分で python/install-packages
とほぼ同じ記述になってしまうのはどうにかしたい部分はあります。。
Top comments (0)