vercel
에서 github organization의 팀 프로젝트를 배포하려고 했는데, 이 경우에는 유료인 team plan에서만 가능했다.(14일 무료체험은 가능…)
최종 개발이 완료될 때까지 임시 방편으로 배포된 환경이 필요해서 무료로 할 수 있는 방법이 없을까 찾아보니….
💡 팀 프로젝트를 개인 레포지토리에 포크해서 개인 플랜으로 배포하는 방법이 있었다.
💡 또한 github actions을 통해 팀 레포에 PR이 되면, 개인 레포에 push가 자동으로 이루어지게 만들면 워크플로우도 문제가 없게 할 수 있다.
Add New
- project
탭 -> fork
한 개인 레포를 import
한다.
환경변수가 있다면 여기서 등록해주면된다. 후에 settings에서도 추가, 수정이 가능하다.
권한은 repo에만 체크해주면 된다.
build.sh
파일 생성하기최상위 경로에 그냥 build.sh
파일을 추가 해주면 된다. 여기서는 팀 레포의 이름을 넣어주어야한다.
// ./build.sh
#!/bin/sh
cd ../
mkdir output
cp -R ./team-repository-name/* ./output
cp -R ./output ./team-repository-name/
.github/workflows/git-push.yml
파일을 생성하기 set up a workflow yourself를 눌러서 만들 수 있다.
여기서는 개인 레포 이름을 넣어주면 된다.
name: git push into another repo to deploy to vercel
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
container: pandoc/latex
steps:
- uses: actions/checkout@v2
- name: Install mustache (to update the date)
run: apk add ruby && gem install mustache
- name: creates output
run: sh ./build.sh
- name: Pushes to another repository
id: push_directory
uses: cpina/github-action-push-to-another-repository@main
env:
API_TOKEN_GITHUB: ${{ secrets.YOUR_GITHUB_KEY }}
with:
source-directory: 'output'
destination-github-username: your-github-username
destination-repository-name: your-github-repository-name
user-email: ${{ secrets.YOUR_ACCOUNT_EMAIL }}
commit-message: ${{ github.event.commits[0].message }}
target-branch: main
- name: Test get variable exported by push-to-another-repository
run: echo $DESTINATION_CLONED_DIRECTORY
시크릿 변수로 등록해준 토큰과 이메일의 이름, 개인 계정 username, 개인 레포 이름들을 잘 확인하고 넣어주자.
위 과정을 마무리한 후 팀 레포지토리 main 브랜치에 commit이나 PR이 되면 github actions이 동작하면서 자동으로 포크한 개인 레포에 push해준다.
포크한 개인 레포에서도 잘 push 된 것을 확인할 수 있다.
원래 production 배포와 개발 중인 dev의 배포를 나누기 위해 vercel의 브랜치 별 배포 기능을 사용했었는데 이 방법을 사용하면 어떻게 해야하는지 고민이다. 똑같이 dev브랜치에도 github actions를 사용하면 될거 같은데, 다음에 테스트 해봐야겠다.
참고자료
GitHub Organization 프로젝트를 vercel 무료로 연동하기 (+git actions)
vercel에 팀 프로젝트 배포하기
안녕하세요! 저도 이 방법으로 따라하다가 문제점이 하나 생겼는데 build.sh파일 생성후 저 명령어를 입력하면 output폴더의 용량이 너무 커서 깃허브에 푸쉬가 안되던데 혹시 이런 문제는 안겪으셨나요?