QR Talk というアプリケーションを開発しているのですが、最近リリース作業を AI にやらせています。
QR Talk について気になる人はお問い合わせください。
QR Talk は AWS の ECS にデプロイされています。リリース作業の流れは以下です。
- git コマンドまたは GitHub 上で tag を打つ
- GitHub Actions が起動して Docker をビルドして AWS ECR に push
- AWS CDK を使って ECS のタスク定義を更新
aws ecs execute-commandで DB マイグレーションを実行- 自動 UI Test を実行
- リリース完了を Slack に報告
この一連の流れを skills に定義して、全てのプロセスをノンストップで AI にやらせています。人間がこの作業をやろうとすると、
- Docker ビルド完了を待つ必要があるので、その間に他の作業をしていたらビルド完了に気づかなかった
- DB マイグレーション時に ECS のタスク ID を調べるのが地味に面倒
などがありますが、全てをノンストップで AI にやらせることでリリース作業中に他の作業をすることができるようになりました。また、どんな差分がリリースされるかも AI が勝手に調べてくれるのでミスも減ったと思います。
各ステップについて、どうやって AI にやらせているのか説明します。
tag を打つ
tag を打つと Docker のビルドが走って ECR に Push されるようになっています。必ず tag を打つ必要があるので、前回のリリースとの差分が出しやすくなります。git コマンドでタグを打ってもらっていますが、gh コマンドで release を作成することもできると思います。
ビルド
tag を打つとビルドが始まりますが、ビルド完了を待つ必要があります。 gh コマンドを入れておけば GitHub Actions の job の状態を確認することができるので、AI に定期的に確認してもらい、ジョブが成功したら次のステップに進むようにしています。
デプロイ
ECS のタスク定義にある Docker Image のタグを更新して、 cdk deploy コマンドを叩くだけです。ECS のデプロイが成功して初めて cdk deploy コマンドも成功となるため、デプロイが終わったあと何かを待つ必要はありません。
DB マイグレーション
DB マイグレーションは ECS 上で動作している Docker コンテナの中に入り migrate コマンドを叩きます。コンテナのシェルに接続するために ECS Exec という機能を利用しています。 ECS Exec をするためには Fargate の設定で enableExecuteCommand: true にしておく必要があります。
ECS Exec するために必要な情報(Task ID)は aws ecs list-tasks コマンドを叩けば取得できるので、マイグレーション作業も全部 AI に実行させることができます。
自動 UI テスト
リリースを自動的に完了させるために動作確認も自動で実施する必要があるので、 Playwright で自動 UI テストを実装しています。他にもユニットテストや、API テストなどを用意していて、必要なケースは網羅できるようになっています。
QR Talk はほとんど Codex に実装してもらいましたが、「ある機能を実装していると他の機能が壊れる」ことは生成 AI でも普通に起こり得ます。必ずテストは実施します。音声認識が正しくできているかなど、どうしても自動テストが難しい部分はあるのでそこは手動で確認しますが、基本的に自動 UI テストが通ったら次のステップに進みます。
リリース完了を Slack に報告する
Codex と Slack を MCP で接続し、リリース完了を Slack に報告します。
前回のタグと今回のタグからリリース内容をまとめ、リファクタリングなど機能に影響のないものは省いた上で Slack に投下します。内容は組織やアプリによって調整するのが良いでしょう。ここまででリリースは完了です。
必要な設定
- git コマンド
- gh コマンドをインストールしてログインしておく
- aws コマンドをインストールして credentials を設定しておく
- Slack 連携(MCP)を設定しておく
git gh aws コマンドは、 credential 設定しておけばコマンドの利用者は credential がなくても叩けるので、認証情報の流出という観点から言えば心配することなく AI に作業をお任せできます。しかし、 git コマンドと gh コマンドは権限がかなり強いので注意して利用する必要があります。 aws コマンドについては設定されているアカウントの権限を最低限にするように気をつけましょう。
QR Talk
QR Talk、使ってみたい人がいればお問い合わせください。