機能承認と push

拒否

push リクエストを拒否する。拒否した後に新しくリクエストできる

送り出してはいけない commit なら拒否する。承認と同じ sessions:approve が必要である。セッションごとに開いているリクエストは 1 つなので、直す点があれば、拒否してセッションに次のメッセージを送った後、新しくリクエストする。リクエストのセッション(SDK は sessionId、HTTP API は SID)を使う。前のリクエストは終了しているので、新しいリクエストを作る。

拒否する

const second = await werft.sessions.pushRequests.create(sessionId);
const rejected = await werft.sessions.pushRequests.reject(sessionId, second.id, {
  git_commit: second.git_commit,
  reason: "needs tests first",
});
console.log(rejected.state, rejected.resolution_reason);
rejected needs tests first

reason は省略できる。拒否では、commit が変わったかどうかは検査しない。

承認・拒否は 1 回

すでに承認または拒否したリクエストを再び承認または拒否すると、409 PUSH_REQUEST_RESOLVED になる。その試行も receipt として残る。

import { isApiError } from "@werft-ai/sdk";

try {
  await werft.sessions.pushRequests.approve(sessionId, second.id, {
    git_commit: second.git_commit,
  });
} catch (error) {
  if (!isApiError(error, "PUSH_REQUEST_RESOLVED")) throw error;
  console.log(error.code);
  const receiptId = (error.details as { receipt_id?: string } | null)?.receipt_id;
  if (receiptId) {
    const receipt = await werft.receipts.get(receiptId);
    const result = receipt.result as { refusal?: string | null } | null;
    console.log(receipt.operation, receipt.status, result?.refusal);
  }
}
PUSH_REQUEST_RESOLVED
resolve_push failed already_resolved

次のステップ

  • receipt: リクエスト・承認・拒否・push の記録を読む

このページ