image

깃허브 Organization 레포지토리 vercel 자동 배포(Github Action)

태그
Dev
상세설명깃허브 Organization 레포지토리 vercel 자동 배포(Github Action)
작성일자2024.07.22

비사이드의 407 포텐데이에 참여하면서 백엔드 개발자 분과 같은 프로젝트를 관리하기 용이하게 Github Organization를 만들어 Repository를 관리를 진행했다.

문제는 깃허브에서 Organization 레포지토리에서 작업을 할 시 vercel 로 배포를 하려면 프로 계정을 사용하여 무료로 사용하기 위해 방법을 찾게 되었다.

해결 방법

  • Organization 레포지토리에 있는 걸 내 계정 레포지토리로 fork 해서 배포
  • Organization 레포지토리와 내 계정 레포지토리 sync 필요 - 깃허브 액션(github action) 을 사용
  • 깃허브 액션으로 vercel 자동 배포

    개인 계정으로 fork

    배포할 Organization 레포지토리 내 계정에 fork 후 vercel 에 해당 레포지토리를 연동

    image

    secret Token 발급

    개인 github 설정에서 Developer Settings > Personal access tokens (classic) 에 들어가 Token을 하나 만든다

    image

    repo 권한에 모 체크 후 ghp_로 시작하는 토큰은 다시 안 나오니 잘 복사해 둔다.

    image

    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 에 저장

    image

     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 탭에 들어가 확인을 하면 정상적으로 배포 여부 확인

    image

    참고

    https://jjang-j.tistory.com/93