들어가며
최근 next.js를 이용하여 프로젝트를 진행하고 있습니다.
진행 과정을 결과물로 기획/디자인 파트에게 공유하고자 하여 시도했던 방법들을 정리해 봅니다.
netlify
워낙에 유명한 서비스죠.
무료로 이용하더라도 꽤 많은 부분을 활용할 수 있고, 깃헙이나 깃랩에 있는 프로젝트를 쉽게 배포할 수 있습니다.
그런데 말입니다.
내 github repository가 아닌 다른 곳의 repository에서 프로젝트를 진행하게 되었습니다.
그러다 보니 netlify에 배포할 레포지토리가 안 나옵니다.
그럼… 비슷한 서비스인 vercel로 해보러 갑니다.
vercel
netlify와 비슷한 서비스입니다.
netlify는 안되는데.. 혹시나 이건 되나? 하는 생각에 프로젝트 생성을 해보았습니다.
역시… 비슷한 서비스는…
초대받은 레포지토리에 대해 권한이 제한적이니 뭔가를 할 수 있는 게 많이 없습니다.
vercel도 실패.
jenkins
회사에서 팀 내에 테스트용으로 사용하는 서버가 있습니다.
웹 퍼블리싱 프로젝트를 할 때에 많이 활용했던 윈도우즈 서버인데요.
여기에 next.js 세팅을 할까? 하는 생각이 들었습니다.
윈도우즈 서버이다 보니 세팅해야 할 것들이 꽤 많았습니다.
- node 설치
- iisnode 설치
- URL rewrite module for IIS
- 서버 폴더에 배포
- IIS 설정
아.. jenkins로 배포를 하려면 또 깃헙 레포지토리 권한이 필요하다..
안되겠다 싶으면 빠르게 다른 방법을 찾아봅니다.
aws amplify
이왕 삽질해 보는 김에 aws를 한번 써보는 건 어떨까? 하는 생각이 들어 마구마구 찝쩍거려봤는데요.
결과적으로는 쓰지 못하겠더라고요.
이것도 깃헙 레포지토리 권한이 필요했고, 그리고 next.js 9, 10, 11버전을 지원합니다.
난 12.x 버전인데..
github
내 레포지토리를 만들어서 옮기면 되잖아?
진작 생각해냈으면 좋았을 것을 삽질 실컷 하고 이런 생각이 들었습니다.
프로젝트를 진행하고 있는 중에 파일들을 복사/붙여넣기 해가며 옮기고 싶진 않았어요.
뭔가 좀 편하게 옮기는 방법이 있지 않을까?
A 레포지토리와 B 레포지토리를 자동으로 싱크를 맞출 수 있는 방법이 있진 않을까?
검색을 하다 보니 레포지토리를 미러링하는 방법이 있었습니다.
다른 위치의 레포지토리를 미러링 하기
원본에서 업데이트를 가져오는 것을 포함하여 다른 위치의 리포지토리를 미러링 하려는 경우 미러를 복제하고 주기적으로 변경 사항을 푸시 할 수 있습니다.
- 레포지토리를 클론 합니다.
$ git clone --mirror https://github.com/exampleuser/repository-to-mirror.git
- 푸시 위치를 미러로 설정합니다.
$ cd repository-to-mirror
$ git remote set-url --push origin https://github.com/exampleuser/mirrored
- 원본을 가져오고, 미러에 푸시 합니다.
$ git fetch -p origin
$ git push --mirror
내 레포지토리로 잘 옮겨져 오네요.
커밋 메시지들까지 모두 미러링 됩니다.
again vercel
내 레포지토리에 모두 옮겨올 수 있으니 netlify와 vercel 모두 사용할 수 있게 되었습니다.
저는 vercel을 선택했어요. 이유는 조금 더 빠른 듯 싶었거든요.
개발 중인 레포지토리에서 내 레포지토리로 자동으로 미러링을 되길 바랐지만
$ git fetch -p origin
$ git push --mirror
이 과정은 수동으로 하고 있어요.
main 브랜치에 푸시가 올라올 때마다 vercel에서 자동으로 배포를 하는데 중간 공유용으로 사용을 하려는 거라 굳이 실시간 빌드가 필요하진 않았어요.
마치며
꽤 여러 가지 삽질들을 하게 되었는데요.
이런저런 서비스들을 다시 한번 둘러보게 되고, 여러 가지를 새롭게 알게 되는 과정이었어요.
레포지토리 미러링 하는 것은 나중에 또 사용할 일이 있을듯하여 기록을 남겨둡니다.
감사합니다.
참고자료
deploy next js on iis web server
Amplify 호스팅을 사용하여 서버 측 렌더링 앱 배포
Duplicating a repository