GitHub Organization 개인프로젝트 synk 자동으로 맞춰 배포하기 : github actions

5o_hyun·2024년 11월 12일
0
post-thumbnail

버셀은 무료버전은 개인 연습용 프로젝트만 지원하기때문에, organization 레포지토리는 무료버전으로 배포할 수 없다.
그런데 사이드프로젝트같은것을 하다보면 organization으로 팀을 결속하여 다같이 소스를 공유하기때문에 연습용인데도 불구하고 무료버전을 사용하지못한다.
이럴때는 개인 repo로 우회하여 사용할 수 있지만, 팀repo에서 어떤값을 커밋하면 개인 repo로 계속 synk를 맞춰줘야하기때문에 번거롭다.
따라서 이를 CI/CD 구축으로 github action을 사용할 수 있다.
CI/CD가 거창한 이름인거같은데, 내가 생각하기엔 그냥 자동으로 배포를 하게끔 파이프라인을 연결해주는 방법이라고 생각하면 편하다.

개인 repo 설정

1. 팀 레포지토리 fork 및 버셀에 올리기

팀 레포의 해당 fork 버튼으로 fork하고, 버셀에는 내 깃허브에 fork된 소스로 올리면 무료로 배포할 수 있다.

2. secrets token 발급

https://github.com/settings/tokens 에서 secrets token 발급

권한은 repo에만 체크해주면 된다.

그럼 아래와같이 ghp토큰이 발생한다. 복사해놓고 다른데에 꼭 저장하자.

팀 repo 설정

1. 팀 repo setting에 토큰을 시크릿변수로 등록

팀 repo setting -> security -> actions의 Repository secrests 선택

아까 개인계정에서 만든 키 값을 넣어주면

저장완료

깃허브 개인계정도 이메일로 넣어준다
SOHYUN_GITHUB_EMAIL thgus7424@naver.com

2. 팀 repo 루트에 build.sh 파일 생성

최상위 경로에 그냥 build.sh 파일을 추가 해주면 된다. 여기서는 팀 레포의 이름을 넣어주어야한다.

// ./build.sh


#!/bin/sh
cd ../
mkdir output
cp -R ./dodoesdid-client/* ./output
cp -R ./output ./dodoesdid-client/

3. 팀 레포지토리의 Actions 에서 새로운 workflow를 생성하고 yml 파일을 생성

Actions -> new workflow -> set up a workflow yourself 클릭

yml 파일을 아래와 같이 생성한다.

  • API_TOKEN_GITHUB : 시크릿 변수에 등록한 토큰 변수명
  • destination-github-username : 개인 깃헙 username (프로필에서 굵고 진한 이름말고 바로 아래 있는거!)
  • destination-repository-name : fork 해 온 개인 레포 이름
  • user-email : 시크릿 변수에 등록한 개인 이메일 변수명
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.SOHYUN_GITHUB_KEY }}
        with:
          source-directory: 'output'
          destination-github-username: 5o-hyun
          destination-repository-name: dodoesdid-client
          user-email: ${{ secrets.SOHYUN_GITHUB_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

이렇게하면 설정이 완료되었다.

결과 및 테스트

방금 yml파일을 팀레포지토리에서 만들었는데 vercel에 접속하여 배포가 되었는지 확인해보자

잘 동작하는것을 확인 할 수있다.
추가로 테스트 해보려면 팀 레포지토리에서 수정사항을 입력후 커밋시 버셀 deployments에 잘 들어오는지 확인해면 된다.


레퍼런스
https://velog.io/@newjin46/Next.js-Vercel%EB%A1%9C-GitHub-Organization-%EB%AC%B4%EB%A3%8C-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0-with-github-actions

profile
학생 점심 좀 차려

0개의 댓글