# Conflicts: # docs/RELEASE-NOTES.md # frontend/src/common/components/map/MapView.tsx # frontend/src/tabs/incidents/components/DischargeZonePanel.tsx # frontend/src/tabs/incidents/components/IncidentsView.tsx
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
import https from 'https';
|
|
|
|
const prNumber = 161;
|
|
const giteaToken = process.env.GITEA_TOKEN;
|
|
const botToken = process.env.CLAUDE_BOT_TOKEN;
|
|
|
|
function req(method, path, token, body) {
|
|
return new Promise((resolve, reject) => {
|
|
const data = body ? JSON.stringify(body) : '';
|
|
const r = https.request({
|
|
hostname: 'gitea.gc-si.dev',
|
|
path,
|
|
method,
|
|
headers: {
|
|
'Authorization': `token ${token}`,
|
|
'Content-Type': 'application/json',
|
|
'Content-Length': Buffer.byteLength(data),
|
|
},
|
|
}, (res) => {
|
|
let buf = '';
|
|
res.on('data', (c) => buf += c);
|
|
res.on('end', () => resolve({ status: res.statusCode, body: buf }));
|
|
});
|
|
r.on('error', reject);
|
|
if (data) r.write(data);
|
|
r.end();
|
|
});
|
|
}
|
|
|
|
(async () => {
|
|
if (!botToken) {
|
|
console.log('NO_BOT_TOKEN: skipping approval/merge');
|
|
process.exit(0);
|
|
}
|
|
// 1. approve
|
|
const ap = await req('POST', `/api/v1/repos/gc/wing-ops/pulls/${prNumber}/reviews`, botToken, {
|
|
event: 'APPROVED',
|
|
body: 'MR 승인 (via /mr skill)',
|
|
});
|
|
console.log(`APPROVE_STATUS=${ap.status}`);
|
|
if (ap.status >= 300) { console.error(ap.body); process.exit(1); }
|
|
|
|
// 2. merge
|
|
const mg = await req('POST', `/api/v1/repos/gc/wing-ops/pulls/${prNumber}/merge`, giteaToken, {
|
|
Do: 'merge',
|
|
merge_message_field: 'feat(design): 디자인 시스템 토큰 적용 및 Float 카탈로그 추가',
|
|
delete_branch_after_merge: true,
|
|
});
|
|
console.log(`MERGE_STATUS=${mg.status}`);
|
|
if (mg.status >= 300) { console.error(mg.body); process.exit(1); }
|
|
console.log('MERGE_DONE');
|
|
})();
|