GitHub에서 제공하는 CI/CD(Continuous Integration and Continuous Deployment) 플랫폼입니다. 이를 통해 개발자들은 자동화된 워크플로우를 생성하여, 코드 변경 시 자동으로 빌드, 테스트, 배포 등의 작업을 수행할 수 있습니다.
GitHub Actions는 단순한 DevOps를 넘어 리포지토리에서 다른 이벤트가 발생할 때 워크플로를 실행할 수 있도록 합니다.
코드 저장소의 이벤트(예: 푸시, PR 생성, 이슈 생성 등)를 트리거로 하여 다양한 작업을 자동으로 실행할 수 있습니다.
코드를 푸시하거나 PR을 생성할 때, 자동으로 빌드, 테스트, 린트, 배포 등의 작업을 수행할 수 있습니다.
버셀의 배포는 Production과 Preview가 있습니다. 프로덕션(Production) 배포는 main, master 브랜치와 같은 기본 브랜치의 변경 사항이 배포됩니다.
프리뷰(Preview) 배포는 기능 브랜치의 push, PR, merge 등의 상황에 생성되며 임시 도메인을 가집니다.
main 브랜치로 PR이나 merge가 있을 때만 배포되는 줄 알았는데, 그렇지 않았습니다. PR이 생성되면 Vercel이 PR 브랜치를 배포합니다. 그래서 CI가 실패했는데도 Vercel에서 PR 브랜치가 Preview 배포가 이루어진 것입니다.
일단 버셀의 자동배포를 끄면 되지 않을까 싶었지만 그런 설정은 버셀에 없었습니다.
github actions ci/cd Vercel 로 검색해보니 버셀의 문서가 있습니다.
https://vercel.com/guides/how-can-i-use-github-actions-with-vercel
위 문서를 따라 CD 워크플로우를 추가해보겠습니다.
name: Vercel Production Deployment
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
on:
push:
branches:
- main
jobs:
Deploy-Production:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Vercel CLI
run: npm install --global vercel@latest
- 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 }}
npm i -g vercel
vercel login
vercel link
.vercel/project.json
폴더와 파일이 생깁니다.Github Repository의 Secrets은 환경 변수를 암호화해서 저장할 수 있습니다. 해당 기능은 Actions를 트리거할 때, 환경 변수를 가져오기 위해 사용할 수 있으며 로컬의 .env 파일과 같은 기능입니다.`
Settings -> Secrets and variables -> Actions
에서 Secret 등록하기- vercel link로 생긴 파일의 값으로
VERCEL_ORG_ID
&VERCEL_PROJECT_ID
등록하기- 버셀 토큰 발급한 것도
VERCEL_TOKEN
으로 등록하기
이제 CI 과정을 거쳐서 CD가 이뤄지고, main에 push가 발생하면 자동으로 배포를 합니다.