기능승인과 push

거부

push 요청을 거부한다. 거부한 뒤에 새로 요청할 수 있다

내보내면 안 되는 commit이면 거부한다. 승인과 같은 sessions:approve가 필요하다. 세션마다 열린 요청은 하나라서, 고칠 것이 있으면 거부하고 세션에 다음 메시지를 보낸 뒤 새로 요청한다. 요청의 세션(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이 바뀌었는지 검사하지 않는다.

승인·거부는 한 번

이미 승인하거나 거부한 요청을 다시 승인하거나 거부하면 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의 기록 읽기

이 페이지