GitHub Actions로 Vercel 하루 1회 자동 재배포 설정하기
2025년 7월 4일
GitHub Actions로 Vercel 하루 1회 자동 재배포 설정하기
Notion API와 연동된 블로그를 운영하다 보면, 이미지나 비디오 같은 외부 리소스가 일정 시간이 지나면 깨지는 문제가 생길 수 있음.
이는 Notion API에서 제공하는 리소스 URL이 일정 시간만 유효한 임시 signed URL이기 때문
이 문제를 해결하기 위해 나는 매일 정기적으로 사이트를 재배포하여 새로운 URL을 다시 받아오도록 구현해놓음.
나는 매일 정기적인 재배포를 하기 위해 GitHub Actions와 Vercel의 Deploy Hook을 이용해 자동화 시킴
GitHub Actions 설정 코드
- 아래와 같이 .github/workflows/daily-redeploy.yml 파일 생성
name: Daily Vercel Redeploy
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
redeploy:
runs-on: ubuntu-latest
steps:
- name: Trigger Vercel Deploy Hook
run: |
curl -X POST "${{ secrets.VERCEL_DEPLOY_HOOK }}"
- on: ⇒ 워크플로우가 언제 실행될지를 정의
- schedule: ⇒ cron 표현식을 사용해 매일 00:00 UTC (한국 시간 오전 9시) 에 실행되도록 설정
- workflow_dispatch: ⇒ 수동 실행을 하용하는 옵션, GitHub 웹 UI에서 직접 실행 가능
jobs:
redeploy:
runs-on: ubuntu-latest
- 이 워크플로우는 redeploy라는 이름의 작업(job)을 수행
- ubuntu-latest 환경(리눅스 머신)에서 실행
steps:
- name: Trigger Vercel Deploy Hook
run: |
curl -X POST "${{ secrets.VERCEL_DEPLOY_HOOK }}"
- 실제 실행될 단계(steps)
- name: 단계의 이름
- run: 쉘 명령어를 실행 여기서는 curl 명령을 사용해 Vercel Deploy Hook URL에 POST 요청을 보냄
- 이 URL은 코드에 직접 작성하지 않고, GutHub Actions의 Secrets에 미리 저장된 환경 변수를 사용 (VERCEL_DEPLOY_HOOK)
Vercel Deploy Hook 만들기
- Vercel 프로젝트 대시보드에서 Settings → Git → Deploy Hooks로 이동
- Create Hook 을 눌러 새 Hook을 생성
- 생성된 URL을 복사
GitHub Secrets 등록
- GitHub 저장소 → Settings → Secrets and variables → Actions
- New repository secret 버튼 클릭
- 아래와 같이 입력
- Name : VERCEL_DEPLOY_HOOK (이름)
- Value : 위에 복사한 Hook URL
결과
- 매일 오전 9시 자동으로 실행
- Vercel에 재배포 요청
- 최신 Notion 이미지 URL로 자동 교체되기 때문에, 리소스 깨짐 문제를 해결