futarin-api を開発するにあたっての注意事項を記述していく。
futarin-api の開発方針について
本リポジトリでは、GitHub Flow を採用しています。
プルリクエストは基本的にmain
ブランチへマージされます。
main
ブランチは常にリリース可能な状態が保証されます。
参考:https://docs.github.com/ja/get-started/using-github/github-flow
開発時は必ずmainからブランチをきってください。mainに直接pushすることがないように! ブランチ名の例:"feat/#1_hoge"
- feat: ブランチの特徴
- 新機能:feat
- 修正:fix
- /#1_hoge
- issue番号
- memo
git checkout main
git pull
git checkout -b feat/#1_hoge
全てのコード変更はプルリクエストを介して行います。
以下の手順で作成します。
- 環境構築
- リポジトリをクローンする
- ブランチを切る ブランチ戦略参照
- コードを編集する
- 静的解析を実行する
- コードのテストを行う
- リモートへプッシュして、
main
ブランチへのプルリクエストを作成する
開発環境はすべてdocker compose
で完結するよう実装されています。
git clone git@github.com:futaringoto/futarin-api.git
cd futarin-api
touch .env
echo "VOICEVOX_API_KEY=[voicevox api key]" >> .env
echo "OPENAI_API_KEY=[openAI api key]" >> .env
echo "MYSQL_ROOT_PASSWORD=password" >> .env
環境変数を設定してください。詳しくはREADMEへ
sudo make build
Important
Dockerfileを更新した際は、キャッシュが使われないよう、make build-no-cache
でビルドしましょう
sudo make run-dev
Tip
ホットリロードを採用しています。pythonファイルの変更が保存されると再度自動でビルドが走ります
パッケージ管理にpoetry
を採用しています。
docker compose run --entrypoint "poetry add `パッケージ名`" api
docker compose run --entrypoint "poetry add --group dev `パッケージ名`" api # 開発依存の追加
docker compose run --entrypoint "poetry update" api
自動リントと自動整形を採用しています。
安全性の向上のため、リンターのflake8
を導入しています。
sudo make lint
可読性の向上のため、フォーマッタのblack
とisort
を導入しています。
sudo make format
自動テストを採用しています。テストランナーはpytest
です。
sudo make test
- .env に本番環境の情報を追加
echo "DB_USERNAME=[username]" >> .env
echo "DB_PASSWORD=[password]" >> .env
echo "DB_HOST=[host]" >> .env
echo "DB_NAME=[database name]" >> .env
- SSL証明書(
DigiCertGlobalRootCA.crt.pem
)の配置- Download the public SSL certificate - Azure Database for MySQL - Flexible Server | Microsoft Learn から証明書を取得する。
DigiCertGlobalRootCA.crt.pem
を/api
に含める。
- テーブルの更新
docker compose exec api alembic revision --autogenerate -m "update tables"
- テーブルの更新を反映
alembic upgrade head
- ci.yml
- pull request時に起動
- 静的解析(flake8)とテスト(pytest)を行う
- deploy.yml
- workflow_dispatch(手動トリガー)で実行
- イメージの作成とAzure Container Registryへのプッシュ、App Serviceへのデプロイを行う
name | description |
---|---|
LOGIN_SERVER | Azure Container Registry(ACR) サーバURL |
OPENAI_ASSISTANT_ID | テスト用 OpenAI Assistant のAssistant ID |
OPENAI_THREAD_ID | テスト用 OpenAI Assistant のThread ID |
name | description |
---|---|
REGISTRY_USERNAME | ACR ユーザ名 |
REGISTRY_PASSWORD | ACR パスワード |
AZURE_WEBAPP_PUBLISH_PROFILE | Azure 認証情報 |
DB_SSL_CERT | Azure Database for MySQL SSL証明書 |
OPENAI_API_KEY | OpenAI Platform APIキー(テスト用) |
VOICEVOX_API_KEY | VOICEVOX API APIキー(テスト用) |
不具合の報告、機能要望は、Issueに報告してください。
本リポジトリはMITライセンスです。(LICENSE参照)ただし、一部apache-2.0
やLGPL v3
のライブラリを採用しています。それらに関してはそちらのライセンス内容を遵守してください。