プロジェクトをデプロイする

English | 日本語

AI Teams は、既存の GitHub Actions ワークフローによるデプロイを管理し、 途中で中断した操作を再開できます。配備済み・公開済み・検証済みを別々に 表示します。検証済みは対象環境の正常性を確認した状態であり、製品の目標が 達成されたことまでは意味しません。

この機能は任意で、AI Teams Plugin 自体の更新とは別です。事前にレビューした ワークフロー、実行権限を持つ GitHub CLI の認証、操作ごとの承認が必要です。 ワークフローの導入、環境の設定、認証情報のコピーは行いません。

デプロイ要求を用意する

リポジトリの外に、所有者だけがアクセスできるディレクトリを用意し、 Control Lite の SQLite データベース、要求、承認を保存します。再開時にも 同じデータベースを使ってください。削除すると、GitHub に送信済みの操作の 記録を失うおそれがあります。

英語版の要求例に、次の値を設定します。

  • 対象リポジトリ、Issue 番号、環境、今回の要求を識別する request_id
  • 配備する成果物のコミットと SHA-256 ダイジェスト、公開範囲
  • 復旧先となる以前の成果物と公開範囲
  • レビュー済みワークフローの数値 ID、ブランチまたはタグ、コミット

インストール済み Plugin の skills/ai-teams/scripts/project_deployment.py を、 対応する Python で実行します。以下では、その正確なパスを project_deployment.py と略記しています。

python3 project_deployment.py start --database control.sqlite --request request.json
python3 project_deployment.py status --database control.sqlite --request request.json

start はローカルに要求を保存し、request_digest を返します。 デプロイは送信しません。同じ識別子の要求を書き換えることはできません。 新しい要求は、以前の環境操作が終了し、結果を確認してから作成します。

承認して実行し、結果を確認する

承認ファイルには、schema: ai-teams-project-deployment-approval/v1、 start が返した正確な request_digest、対象の operation、所有者の実際の 判断を示す approval_ref、タイムゾーン付きの有効期限 expires_at を設定します。 識別子をコピーしたり JSON を生成したりするだけで、承認を得たことにはなりません。

python3 project_deployment.py dispatch --database control.sqlite --request request.json --approval approval.json
python3 project_deployment.py resume --database control.sqlite --request request.json

最初は deploy(配備)を承認します。結果を確認した後に expose(公開)、 続いて verify(正常性の検証)をそれぞれ承認します。dispatch は次の段階を 選び、ワークフローを一度だけ起動します。検証もワークフローを起動するため、 承認が必要です。

resume は実行状態を一度読み取り、処理中ならその状態を返します。 必要な時点で再度確認してください。常駐の監視や自動再試行は追加しません。

送信結果が不明な場合は、GitHub の実行を確認して resume --run-id NUMBER を 使います。対象リポジトリ、ワークフロー、コミット、実行回数、今回の操作を示す 実行名を照合してから再開します。dispatch を繰り返しても、送信予約済みの 操作は再送しません。環境操作の重複を防ぐため、ワークフローの再実行は拒否します。

復旧する

処理中のワークフローが終了した後、rollback の承認を別途用意します。

python3 project_deployment.py rollback --database control.sqlite --request request.json --approval rollback-approval.json
python3 project_deployment.py resume --database control.sqlite --request request.json

以前の成果物と公開範囲が正確に復元され、正常性も確認できた場合だけ復旧完了に なります。不明または失敗した復旧は未解決として残り、新しいデプロイを開始しません。 古い要求から、新しいデプロイを上書きする復旧もできません。ソース変更、実行失敗、 Issue の終了だけでは、本番環境の復旧権限は得られません。

ワークフローと接続する

レビュー済みワークフローは、workflow_dispatch の文字列入力 deployment を 受け取り、実行名に ${{ fromJSON(inputs.deployment).attempt_id }} を使います。 環境を変更する前に、ワークフローのコミットと成果物のダイジェストを確認し、 環境側の承認、操作識別子による重複防止、環境ごとの直列実行を行ってください。 実行中のデプロイを中断してはいけません。

操作後は環境から状態を取得し、result.json を ai-teams-deployment-${{ fromJSON(inputs.deployment).attempt_id }} という名前の 成果物として保存します。入力値をそのまま観測結果として返してはいけません。 要求、操作、成果物、環境、公開範囲、正常性の情報が欠けている場合や一致しない 場合、正常に完了したとは判定しません。

完全な結果形式と制限は、デプロイ契約 にあります。接続先は GitHub.com の API バージョン 2026-03-10 で、実行 ID を 含む起動応答が必要です。接続仕様はローカル試験で検証していますが、実際の対象 環境では、別途レビューしたワークフローとの接続試験が必要です。