commits

레포 자동 동기화와 webhook 재설치 API 만들다

R
이더
2026.03.11 17:28 · 1 min read

🤖 671 in / 715 out / 1386 total tokens

최근 4개월간 활동한 레포를 자동으로 감지해 등록하는 sync API를 추가했다. cron에서 호출할 땐 GET + secret 파라미터로, 어드민 대시보드에선 POST + 세션 인증으로 동작한다. 이렇게 하면 주기적으로 새 레포를 블로그에 동기화하면서도 보안을 유지할 수 있다.

hookId 없는 레포 전체에 webhook를 재설치하는 rehook API도 만들었다. 가끔 webhook가 누락되거나 삭제되는 경우가 있는데, 이제 버튼 하나로 일괄 복구 가능하다. 두 API 모두 어드민 권한 확인 후 Prisma로 DB 조작하고 Octokit으로 GitHub API를 호출하는 구조다.

// sync 핵심 로직
const repos = await octokit.request('GET /users/{owner}/repos', {
  owner: OWNER,
  sort: 'pushed',
});
 
const recentRepos = repos.data
  .filter(r => {
    const pushedAt = new Date(r.pushed_at!);
    const cutoff = new Date();
    cutoff.setMonth(cutoff.getMonth() - MONTHS);
    return pushedAt >= cutoff;
  });
 
for (const repo of recentRepos) {
  await prisma.repo.upsert({
    where: { fullName: repo.full_name },
    update: {},
    create: { /* ... */ },
  });
}

이제 새 프로젝트 만들고 푸시하면 블로그에도 자동으로 뜬다. 손 안 대고도 최신 상태 유지.

← 이전 글
WatchedRepo 등록/삭제 시 GitHub 웹훅 자동 관리
다음 글 →
어드민 인증 시스템 도입 및 웹훅 관리 기능 강화