- GitHub Actionsを用いた、PythonのCI/CD環境を構築すること
- Mac OS Ventura 13.4
- Visual Studio Code 1.88.1
- サンプルアプリ
- パッケージ管理
- linter & formatter
- Unit Test
- Integration Test
- 自分の作業ログとして残します。最新のインストール方法等は公式を参考にしてください。
- 主にryeのインストール手順を残す。他のライブラリはrye経由で追加
- パッケージ管理ツールの選択時に、
uv
を選択
$ curl -sSf https://rye-up.com/get | bash
$ echo 'source "$HOME/.rye/env"' >> ~/.bashrc
$ source ~/.bashrc
$ rye init (YOUR_WORKFOLDER_PATH)
$ rye pin (PYTHON_VERSION)
$ rye sync
$ rye add (LIBRARY)
- FastAPIの実行確認用のスクリプトを作る
- formatter, linterの実行
$ rye run ruff format --check # 配下のファイルのフォーマットチェック
$ rye run ruff format . # (エラーが起きた場合)フォーマット実行
$ rye run ruff check . --fix # リンターチェックと、エラー時の修正
- GitHub Actionsの設定
- トリガーを設定し、Marketplaceにあるrye・ruff用のワークフローを挿入する
steps:
- uses: actions/checkout@v4
# ryeのセットアップ
- uses: sksat/setup-rye@v0.22.0
# ruffのセットアップ
- uses: chartboost/ruff-action@v1
with:
args: 'format --check'
- name: Sync Rye
run: rye sync
- name: Run Pytest
run: rye run python -m pytest
- locustの実行
- uvicornを使った検証としたため、nohupによるバックグラウンド実行を行い、シャットダウンする形に
- name: Run uvicorn
run: |-
cd src
nohup rye run uvicorn main:app --host=0.0.0.0 --port=8000 > uvicorn.log 2>&1 & echo $! > ../uvicorn_pid.txt
- name: Run locust
run: rye run locust --host=http://0.0.0.0:8000 --headless -u 1 --run-time 10
- name: Shutdown uvicorn
run: kill -9 `cat uvicorn_pid.txt`