ステージング環境で毎晩 E2E テストを実行する
Devin に、毎晩ステージング環境に対してエンドツーエンドテストスイートを実行させ、失敗時にはチケットを自動で起票するようスケジュールします。このガイドでは、v3 API を使用したスケジュール管理について説明します。これは自動化やInfrastructure as Codeワークフローに役立ちます。APIの設定なしに、Devin UI から直接スケジュールを作成・管理することもできます。
APIアクセス用のサービスユーザーをセットアップする
API 経由で作成されたスケジュール済みセッションには、適切な権限を持つサービスユーザーが必要です。最初に 1 つ設定しておけば、以降のすべての呼び出しでその APIキー を使用できます。このガイドに記載されているコマンドがそのまま動作するように、両方の値をエクスポートしてください:サービスユーザーおよび権限の詳細については、API 認証に関するドキュメントを参照してください。
- app.devin.ai > Settings > Service Users に移動し、Create Service User をクリックします
ManageOrgSchedules権限を含むロールを割り当てます- 作成後に表示される APIキー を保存しておきます。表示されるのは一度きりで、その後は
Bearerトークンとして使用します
テスト実行のためのプレイブックを作成します
スケジュールを作成する前に、E2E スイートをどのように実行し、結果をどのように扱うかを Devin に正確に指示するプレイブックを用意します。Settings > Playbooks に移動して新しいプレイブックを作成するか、Advanced Devin を使って、テストワークフローの説明から自動生成させてください。以下は Playwright スイート向けの例です:保存後はプレイブック ID を控えておいてください。API 呼び出しで必要になります。プレイブックを表示しているときの URL (
app.devin.ai/.../playbooks/{playbook_id}) から確認できます。API でナイトリースケジュールを作成する
次に、レスポンスには、このスケジュールを後で管理する際に使用する
なぜ午前 2 時なのでしょうか?テストは、その日の最後のデプロイがステージング環境で安定した後で、かつエンジニアが業務を開始したときに不具合が見えるよう、十分早い時間に実行したいからです。チームのタイムゾーンとデプロイのサイクルに合わせて調整してください。利用可能なすべてのフィールドについては、Create schedule エンドポイントのドキュメントを参照してください。
POST /v3/organizations/{org_id}/schedules エンドポイントを使ってスケジュールを登録します。次の例では、毎晩午前 2 時(UTC)に実行されます。schedule_id が含まれています。保存しておきます:frequency フィールドは標準的な cron 構文を使用します。以下にいくつか便利な例を示します:| Pattern | When it runs |
|---|---|
0 2 * * * | 毎日午前 2 時 (UTC) |
0 2 * * 1-5 | 平日のみ (月〜金) |
0 6 * * 1 | 毎週月曜日の午前 6 時 (UTC) |
初回実行を検証し、プロンプトを最適化する
スケジュールが最初に実行されたら、セッションを確認して、Devin がテストを正しく実行し、出力が期待どおりになっていることを確かめます。
- Devin のダッシュボードを開き、Past Sessions の中から対象のセッションを探します — スケジュール名のタグが付いています
- Playwright のテストスイートは実行されましたか? 実際の不具合(フレークテストではないもの)に対して Linear チケットが作成されましたか?
#qa-resultsSlack チャンネルでサマリーメッセージを確認します
- Devin がステージングにアクセスできない: ステージング環境変数(
STAGING_API_KEYやDATABASE_URLなど)を organization secrets として追加し、すべてのスケジュールされたセッションで利用できるようにします - フレークテストからのチケットが多すぎる: プレイブックにリトライを追加します: 「チケットを起票する前に、失敗したテストはすべて 1 回再実行する。2 回失敗したテストに対してのみチケットを起票する。」
- テストに時間がかかりすぎる: スイートの対象範囲を絞ります — 例: 「
tests/critical/とtests/smoke/のテストだけを実行する」— またはセッションのタイムアウトを延長します
スケジュールをコードで管理する
ナイトリーの実行が安定したら、他のスケジュールと同様に管理したくなるはずです。デプロイフリーズ中は一時停止したり、テストスイートが変わったらプロンプトを更新したり、別の環境用に 2 つ目のスケジュールを作成したりできます。デプロイフリーズやメンテナンスウィンドウの間は、スケジュールを一時停止 します。凍結が解除されたら再度有効化してください:稼働中のものを監査するには、すべてのスケジュールを一覧表示します:複数のスケジュールを管理しているチームは、YAML 設定ファイルからスケジュール定義を同期する CLI の作成を Devin に依頼することで、テスト設定と同様にスケジュールもバージョン管理できます。
