들어가며
지난 공모전 출품작 워크인코리아(Work in Korea)는 Vercel을 통하여 배포를 시도하려고 하였습니다. 하지만 Work in Korea는 Organization 저장소에 있어 이를 배포하려면 Vercel 프로 계정이 필요한 상황이었습니다.
Vercel Pro는 2주간 무료이지만 그 이후부터는 요금을 지불해야 했기 때문에 좋은 해결 방법은 아니었습니다. 그러던 도중 개인 public 레포지토리를 이용하면 무료로 배포할 수 있다는 사실이 기억났고 fork한 레포지토리를 vercel과 연동시키면 되는 것이었다.
무료로 하는 것은 성공..! 하지만..
가장 큰 문제점은 master 브랜치에 push를 하면 자동으로 배포가 되면 좋겠지만.. 원본 레포지토리가 변경될 때마다 forked 레포지토리의 sync를 맞춰주어야 하는 불편함이 있었습니다.
실제로 팀원들과 밤샘 작업을 하다가 제가 먼저 자버리는 바람에 Sync Fork를 시켜줄 사람이 없어서 다음날 아침에 확인을 몰아서 하기도 습니다 😅
Sync Fork를 자동화하면?
현재 저에게 필요한 것은 원본 레포지토리에 push가 되면 자동으로 forked된 레포지토리에서 sync를 맞춰주는 것이겠지요! 이를 위해서 Github Action 코드를 작성하였습니다.
name: Sync to Forked Repo
on:
push:
branches:
- develop
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout source repository
uses: actions/checkout@v4
with:
token: ${{ secrets.JIWON_GITHUB_KEY }}
fetch-depth: 0
ref: develop
- name: Configure git
run: |
git remote add forked-repo https://Choi-Jiwon-38:${{ secrets.JIWON_GITHUB_KEY }}@github.com/Choi-Jiwon-38/workinkorea.git
git config user.name "Choi-Jiwon-38"
git config user.email "chlrhwldnjs@naver.com"
- name: Push changes to forked-repo
run: |
git push -f forked-repo develop
- name: Clean up
run: |
git remote remove forked-repo
https://github.com/KMU-WINK/workinkorea/blob/develop/.github/workflows/git-push.yml
실제로 동작이 몇 없어서 어떤 동작을 하는 지 쉽게 파악이 가능할 것입니다. 제 계정에 있는 forked 레포지토리에 강제로 push하는 것이죠(master가 아니라 develop에 변화가 생기면 상용 배포가 되도록 했었네요).
추가로 forked 레포지토리에서는 위 github action을 비활성화 처리해주었습니다.
마치며..
사실 github actions을 처음 사용해보는 것이라 여러 예제가 있었지만 제 상황에 맞추는 것이 오래 걸렸던 기억이 있습니다. 결국 간단하게 forked repo에 force push를 하는 형태이지만 첫 접근을 너무 어렵게 잡았던 탓인 것 같습니다.
그래서 결국 개발이 98퍼센트 정도 완료된 상황에서야 CI/CD가 구축이 완료되었고.. 그 이후로 상용 배포는 한 다섯 번 정도밖에 없었던 기억이 있습니다. 다음 사이드 프로젝트에서는 조금 부족했던 부분을 보완하여 CI/CD 구축 쪽에도 신경을 써보고 싶다는 생각이 들어 오늘 포스팅으로 간단하게 남겨보았습니다.
'Web' 카테고리의 다른 글
[HTML] async, defer 스크립트에 대하여 알아보자 (feat. next/script) (0) | 2025.02.11 |
---|---|
[Pattern] Ealry return pattern에 대하여 알아보자 (0) | 2024.12.04 |
[UX/UI] '마지막으로 로그인한 소셜 계정' 어떻게 관리하는 것일까? (0) | 2024.12.03 |
[Webview] foreground, background 전환 감지하기 (0) | 2024.12.02 |
[Next.js] next/head 안에 next/script를 넣으면 동작하지 않는다? (0) | 2024.11.27 |