homedocmanager-go を Google Cloud Run にデプロイし、README更新とGitプッシュを実行する完全なワークフロー
このスキルは、homedocmanager-go を Google Cloud Run にデプロイし、ドキュメントを最新化する完全なワークフローを提供します。
homedocmanager-sa@{PROJECT_ID}.iam.gserviceaccount.com 作成済み
以下のシークレットを Secret Manager に登録し、Service Account にアクセス権限を付与してください。
| シークレット名 | 説明 | 生成方法 |
|---|---|---|
ADMIN_TOKEN | 管理APIの認証用 | openssl rand -hex 32 |
DRIVE_WEBHOOK_TOKEN | Drive Webhook検証用 | openssl rand -hex 32 |
GEMINI_API_KEY |
| Gemini API キー |
| Google AI Studio |
OAUTH_REFRESH_TOKEN | OAuth リフレッシュトークン | go run tools/setup_oauth.go |
LINE_CHANNEL_SECRET | LINE Bot チャンネルシークレット(オプション) | LINE Developers |
LINE_CHANNEL_ACCESS_TOKEN | LINE Bot アクセストークン(オプション) | LINE Developers |
シークレット登録例:
ADMIN_TOKEN="$(openssl rand -hex 32)"
DRIVE_WEBHOOK_TOKEN="$(openssl rand -hex 32)"
echo -n "$ADMIN_TOKEN" | gcloud secrets versions add ADMIN_TOKEN --data-file=-
echo -n "$DRIVE_WEBHOOK_TOKEN" | gcloud secrets versions add DRIVE_WEBHOOK_TOKEN --data-file=-
echo -n "YOUR_GEMINI_API_KEY" | gcloud secrets versions add GEMINI_API_KEY --data-file=-
echo -n "YOUR_REFRESH_TOKEN" | gcloud secrets versions add OAUTH_REFRESH_TOKEN --data-file=-
変更をコミットする前に、ビルドが成功することを確認します。
cd cloud-run-go
go build -o /dev/null ./cmd/server
推奨: Cloud Build を使用したデプロイ(Docker不要)
cd cloud-run-go
./deploy-cloudbuild.sh
代替: ローカル Docker ビルド
cd cloud-run-go
export USE_SECRET_MANAGER=1
export ADMIN_AUTH_MODE=required
export LOG_FORMAT=json
./deploy.sh
SERVICE_URL="$(gcloud run services describe homedocmanager-go \
--region asia-northeast1 --format='value(status.url)')"
# ヘルスチェック
curl -sS "$SERVICE_URL/health"
# 管理認証確認
ADMIN_TOKEN="$(gcloud secrets versions access latest --secret=ADMIN_TOKEN)"
curl -i "$SERVICE_URL/admin/ping" -H "Authorization: Bearer $ADMIN_TOKEN"
# Watch 状態確認(自動起動されているはず)
curl -sS "$SERVICE_URL/admin/watch/status" -H "Authorization: Bearer $ADMIN_TOKEN"
コード変更時は必ずREADMEも更新してください。
以下のセクションを確認・更新します:
cd .. # プロジェクトルートに戻る
git add README.md cloud-run-go/
git commit -m "適切なコミットメッセージ
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>"
git push origin feature/cloud-run-go-redeploy
現在のCloud Run設定:
| 項目 | 値 | 説明 |
|---|---|---|
| メモリ | 384Mi | PDF処理とGemini API呼び出しに最適化 |
| CPU | 1 | リクエスト課金 |
| 同時実行数 | 4 | メモリ使用量の予測可能性を確保 |
| 最大インスタンス | 3 | コスト暴走防止 |
| 最小インスタンス | 0 | スケール to ゼロでコスト削減 |
| タイムアウト | 540s | 大量ファイル処理に対応 |
deploy-cloudbuild.sh で自動設定される環境変数:
GCP_PROJECT_ID: GCPプロジェクトIDGCP_REGION: asia-northeast1GCP_PROJECT_NUMBER: プロジェクト番号OAUTH_CLIENT_ID: OAuth 2.0 クライアントID(デフォルト値あり)OAUTH_CLIENT_SECRET: OAuth 2.0 クライアントシークレット(デフォルト値あり)ADMIN_AUTH_MODE: requiredLOG_FORMAT: jsonENABLE_COMBINED_GEMINI: trueSecret Manager から自動マウント:
ADMIN_TOKEN:latestDRIVE_WEBHOOK_TOKEN:latestOAUTH_REFRESH_TOKEN:latestGEMINI_API_KEY:latestLINE_CHANNEL_SECRET:latest (存在する場合)LINE_CHANNEL_ACCESS_TOKEN:latest (存在する場合)デプロイ後、以下のSchedulerジョブが必要です:
gcloud scheduler jobs create http watch-renew-daily \
--schedule="0 12 * * 1,4" \
--time-zone="Asia/Tokyo" \
--uri="${SERVICE_URL}/admin/watch/renew" \
--http-method=POST \
--headers="Content-Type=application/json,Authorization=Bearer ${ADMIN_TOKEN}" \
--location=asia-northeast1 \
--project="${PROJECT_ID}"
gcloud scheduler jobs create http inbox-trigger-hourly \
--schedule="0 * * * *" \
--time-zone="UTC" \
--uri="${SERVICE_URL}/trigger/inbox" \
--http-method=GET \
--headers="Authorization=Bearer ${ADMIN_TOKEN}" \
--location=asia-northeast1 \
--project="${PROJECT_ID}"
file_processed=trueを設定し、複数インスタンスが同時に処理しても重複を防止50_写真・その他と40_子供・教育/03_記録・作品・成績を除く全カテゴリが同期対象原因: OAUTH_CLIENT_ID/SECRET が設定されていない
解決策:
deploy-cloudbuild.sh にデフォルト値が設定されているか確認export OAUTH_CLIENT_ID=...原因: OAuth リフレッシュトークンが設定されておらず、SAで動作している
解決策:
tools/setup_oauth.go でリフレッシュトークンを再取得OAUTH_REFRESH_TOKEN原因: 古いリビジョン(00043以前)を使用している
解決策:
原因: LINE シークレットが登録されていない
解決策:
LINE_CHANNEL_SECRET と LINE_CHANNEL_ACCESS_TOKEN を Secret Manager に登録LINE Bot Webhook registered at /callback を確認デプロイ時に以下を確認してください:
/callback エンドポイントが登録されていることを確認deploy-cloudbuild.sh (推奨), deploy.shWALKTHROUGH.md../README.mdinternal/config/settings.go