기능승인과 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 firstreason은 선택이다. 거부에는 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의 기록 읽기