사이드프로젝트를 위한 git action 템플릿

MM·2025년 3월 27일
post-thumbnail

새 프로젝트 할때마다 ci/cd세팅하기 귀찮아 죽겠다

그냥 하나 템플릿 뽑아 놓고 복사해다 쓰자.

넣을 것

pr시 build 체크하기

이번 프로젝트에서는 어차피 fe가 나 하나라 pr을 일일이 만드는 것도 좀 웃기긴 하지만..
범용적으로 만드려고 쓰는 거니까 넣어두자.
다른 프로젝트에서 이 설정을 꽤 후반에 넣었는데, 진작 넣을걸 후회했다.
build하고 나서야 확인되는 에러가 간혹 있는데 그런 걸 잡을 때 유용했음.

배포한 레포지토리하고 테스트할 레포지토리가 다르면 버셀 환경을 못 가져온다고 한다..
vercel.json만들어서 매칭해주는 방법도 있지만, 수정사항이 있을 때마다 수동으로 매칭해줘야 하니 오히려 에러 위험이 있을 것 같음.
-> 그냥 로컬빌드 해주자.

허스키 비활성화

삽질할 때 했던 건데, 허스키 설정을 깃허브 액션에서 제대로 못 잡는 경우가 많고.. 허스키 버전에 따라 또 다르게 설정을 해줘야 해서 정말.. 귀찮았다.
결론적으로, 어차피 커밋할 때 허스키 다 통과했을테니 깃허브 액션에서는 허스키를 비활성화해서 해결했다.
가뜩이나 빌드 돌리느라 느리니 과감하게 비활성화해주자.

다만 프로젝트마다 허스키를 쓸 수도, 안 쓸 수도 있으니 분기처리를 추가하기.

organization 자동 fork를 통한 vercel 배포

오가니제이션에서는 버셀 배포가 유료라 개인 레포로 포크떠와서 배포하는 꼼수를 자동화했던 적이 있다.
이건 문서가 구글하면 많이 나와서 몇 개 참조함.

결론

pr-check.yml

name: PR CHECK

on:
  push:
    branches:
      - develop
  pull_request:
    branches:
      - develop

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      HUSKY: 0

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install dependencies
        run: npm install

      - name: Run Next.js Build
        run: npm run build

      - name: Check Build Success
        if: success()
        run: echo "✅ Build successful!"

      - name: Fail on Build Error
        if: failure()
        run: |
          echo "❌ Build failed!"
          exit 1

//pr시 더 테스트할게 생기면 여기 계속 추가..

deploy.yml

커밋 메시지는 배포 시간으로 넣어줬다.
-> 시간이 뭔가 이상하다 했더니 깃허브 서버시간대로 들어간다.. 서울로 바꿔줌.

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: Get current date and time
        id: get_date
        run: |
          export TZ="Asia/Seoul"  # 서울 시간대로 설정
          DATE=$(date '+%Y-%m-%d %H:%M:%S') 
          echo "date=$DATE" >> $GITHUB_ENV 
          echo "::set-output name=date::$DATE"
      - name: Pushes to another repository
        id: push_directory
        uses: cpina/github-action-push-to-another-repository@main
        env:
          API_TOKEN_GITHUB: ${{ secrets.GIT_TOKEN }}
        with:
          source-directory: "output"
          destination-github-username: ${{ secrets.USER_NAME}}
          destination-repository-name: ${{ secrets.REPO_NAME}}
          user-email: ${{ secrets.GIT_EMAIL }}
          commit-message: ${{ steps.get_date.outputs.date }}
          target-branch: main
      - name: Vercel Deploy
        run: echo $DESTINATION_CLONED_DIRECTORY

deploy.yml 포크 싱크 버전

굳이 커밋 안넣고 메인 업데이트될 때마다 포크싱크만 해줘도 되지 않나?
-> 10번쯤 실패하고 성공.🙃

참조 문서

profile
중요한 건 꺾여도 그냥 하는 마음

0개의 댓글