비사이드의 407 포텐데이에 참여하면서 백엔드 개발자 분과 같은 프로젝트를 관리하기 용이하게 Github Organization를 만들어 Repository를 관리를 진행했다.
문제는 깃허브에서 Organization 레포지토리에서 작업을 할 시 vercel 로 배포를 하려면 프로 계정을 사용하여 무료로 사용하기 위해 방법을 찾게 되었다.
해결 방법
깃허브 액션으로 vercel 자동 배포
개인 계정으로 fork
배포할 Organization 레포지토리 내 계정에 fork 후 vercel 에 해당 레포지토리를 연동
secret Token 발급
개인 github 설정에서 Developer Settings > Personal access tokens (classic) 에 들어가 Token을 하나 만든다
repo 권한에 모 체크 후 ghp_로 시작하는 토큰은 다시 안 나오니 잘 복사해 둔다.
build.sh 파일 생성
Organization 레포지토리에 있는 프로젝트 루트에 build.sh 파일을 생성 후 아래 코드 입력
team-repo-name 부분에는 Organization 레포지토리에 있는 프로젝트 이름을 입력
*team-repo-name에 [], ‘’ 이런 거 빼고 명만 바꾸기 (안 뺴고 올렸다가… 에러가 남…)
#!/bin/sh cd ../ mkdir output cp -R ./team-repo-name/* ./output cp -R ./output ./team-repo-name/
secret 변수를 등록
Organization 레포지토리에 있는 프로젝트 settings > Secrets and Varibles 에 있는 Actions 에 들어가서 New repository secret 에 들어가 secret 변수를 등록
위에서 발급 받은 토큰(ghp_ 로 시작하는 토큰)을 AUTO_ACTIONS 에 저장하고, 본인 깃 허브 계정 이메일을 EMAIL 에 저장
GitHub Action 코드(deploy.yml)
Organization 레포지토리에 있는 프로젝트 루트에 .github/workflows/deploy.yml 폴더 파일 생성후 deploy.yml 에 코드를 작성 [내 깃 허브 계정 이름]은 내 깃 허브 계정 명이고 [배포한 내 레포지토리 이름] 은 vercel 에 연동한 내 레포지토리 이름이다
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@v4 - 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.AUTO_ACTIONS }} //시크릿 변수 이름 with: source-directory: 'output' destination-github-username: 내 깃허브 계정 이름 destination-repository-name: 배포한 내 레포지토리 이름 user-email: ${{ secrets.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
GitHub Action 테스트
위에서 작성한 코드를 main 에 올리고 Actions 탭에 들어가 확인을 하면 정상적으로 배포 여부 확인
참고