前回までの記事
https://qiita.com/yuichiro-kawabata-fg/items/d14e8b73c71a86d442a6
作成したKeyを使用して、Github Actionsを使用してCloud Runへのデプロイを目指します。
Python FlaskのHello worldや、Github ActionsのYamlなどは
Codexさんに作ってもらう
まず最初に、Gitfubのリポジトリ作成
その後、抽出したKey.jsonの情報をSecret部分に入れていく
シークレットの作成方法:
https://docs.github.com/ja/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions
シークレットキー
Secret名 | 内容 |
---|---|
GCP_SA_KEY |
key.jsonの内容 |
GCP_PROJECT |
GCPのプロジェクトID(例: %PROJECT_ID% ) |
GCP_REGION |
デプロイするリージョン(例: asia-northeast1 ) |
SERVICE_NAME |
Cloud Runサービス名(例: hello-flask ) |
事前準備は完了!
ここから、いよいよCodexにCICDまで作らせてみる
・まずCodexにログインして、上記リポジトリを紐付けた環境を作る
・プロンプトを与えてタスク実行
プロンプト
### Role
経験豊富なPython Flask開発者兼DevOpsエンジニアとして行動してください。
### Task
FlaskのHello Worldアプリ(ボタン押下で「ア アラララァ ア アァ!」を表示する機能付き)を作成し、GitHub Actionsを用いてGCP Cloud Runにデプロイする。
### Context
- Repository scope: プロジェクト全体
- Relevant files / functions:
- `app.py`: Flaskアプリ本体。
- `requirements.txt`: Pythonの依存関係。
- `Dockerfile`: Flaskアプリ用のDockerイメージをビルドするファイル。
- `.github/workflows/deploy.yml`: GitHub ActionsによるCloud Runデプロイ用ワークフロー。
- `README.md`: デプロイ後のサービスURLを記載。
- Known constraints:
- Cloud Run環境は構築済み。
- Cloud Runのキー情報はGitHub Actionsシークレットキーに保存済み。
- GCPプロジェクトやリージョン、サービス名もシークレットとして保存済み。
- 外部ネットワークコールは禁止(デプロイに必要なコマンドは除く)。
### Expected Output
- Flaskアプリの以下のファイル一式:
- `app.py`
- `requirements.txt`
- `Dockerfile`
- `.github/workflows/deploy.yml`
- `README.md`にサービスURLを記載。
- GitHub Actionsで以下を実現:
1. GCP認証。
2. Dockerビルド & GCRにプッシュ。
3. Cloud Runにデプロイ。
- `README.md`にはサービスURLを自動追記する。
- テストとして、Flaskアプリが正しくデプロイされているか(`Hello net`とボタン押下の挙動)を確認する仕組みも含める。
### Guidance for Codex
1. Think step-by-step using **Structured CoT** (plan → code).
2. Run a **self-critique loop**: generate → review → improve once.
3. Use clarifying questions whenever inputs are missing.
4. Output ≤ 500 new lines to avoid token overflow.
5. Never expose API keys, secrets or user PII.
### Setup Script (if needed)
```bash
# Pythonの依存関係インストール
pip install -r requirements.txt
# GCP CLIインストール
curl https://sdk.cloud.google.com | bash
gcloud components install beta
・タスクを入れてコードボタンで実行
以下の通りタスクが実行され、deploy用のYamlを作成してくれていることがわかる。