Vercel에서 하는 방법을 문서에 제공하고 있습니다.
직접 한번해보겠습니다. 🫨
해보기
시작하기 앞서, 만약 태그로만 배포하려면 커밋 배포는 끄면 됩니다. 프로젝트의 루트 경로에 vercel.json
을 아래 코드로 만들어주세요.
{
"git": {
"deploymentEnabled": {
"main": false
}
}
}
이후 Vercel CLI 설치 및 로그인 그리고 링크를 만들어 줍니다.
brew install vercel-cli or npm i -g vercel
vercel login
cd {project_path} && vercel link
vercel link
를 프로젝트 폴더에서 입력해주시고 오게니제이션과 프로젝트를 설정해주세요.
❯ vercel link
Vercel CLI 32.5.0
? Set up “~/workspaces/side-projects/memozang”? [Y/n] y
? Which scope should contain your project? tolluset
? Found project “tolluset/memozang”. Link to it? [Y/n] y
✅ Linked to tolluset/memozang (created .vercel)
하고나면 .vercel
폴더에 프로젝트와 오게니제이션의 아이디가 있는 json 파일이 생성됩니다.
🧨 (주의) .vercel/project.json
파일은 커밋해서 퍼블릭한곳에 푸쉬하시면 안됩니다! Vercel에서 친절하게 자동으로 .gitignore에 추가해주니까 그대로 두시면 됩니다.
이후에 .vercel/project.json
의 아이디 그리고 Vercel의 액세스 토큰을 아래와 같이 깃헙 시크릿에 추가해줍니다.
// 깃헙 프로젝트 레포에서 Settings > Secrets and variables > Actions > New repository secret
// {시크릿 변수명} = {넣는 값}
// 한개씩 넣어주시면 됩니다.
VERCEL_PROJECT_ID = projectID
VERCEL_ORG_ID = orgID
VERCEL_TOKEN = vercelAccessToken
액세스 토큰은 아래 링크에서 Create Token
섹션에서 토큰 이름, 스코프, 만료 시간을 설정해서 만들어주시면 됩니다. 만들고 나서는 다시 안보여주니까 나오는 토큰 값을 복사주시면 됩니다.
- 액세스 토큰 예시
TOKEN NAME = github_tag_deploy
SCOPE = Full Account // 다른 스코프가 없더라구요..
EXPIRATION = No Expiration // 주기적으로 재발급을 해주실분들은 기간을 짧게 설정해주세요!
그리고 아래 코드를 .github/workflows/prd_tag_deploy.yaml
에 추가해주세요.
name: Production Tag Deployment
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
on:
push:
# Pattern matched against refs/tags
tags:
- '*' # Push events to every tag not containing /
jobs:
Deploy-Production:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Pull Vercel Environment Information
run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
- name: Build Project Artifacts
run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
- name: Deploy Project Artifacts to Vercel
run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}
이후에 태그를 푸쉬해보면 아래와 같이 깃헙 액션과 Vercel에서 잘 동작하는 걸 볼 수 있습니다!
마무리
배포 프리뷰도 똑같이 동작하고 좋네요.
태그주의자들에게 이런 설정에 대한 귀찮음은 감수해야하는 걸까요...