-
Notifications
You must be signed in to change notification settings - Fork 0
Publishing Posts
이 문서에서 해결하는 것: blog-posts에서 작성한 글을 production에 게시하는 방법을 설명합니다.
이미 blog-posts에 글을 push했다면, blog 저장소에서 아래 명령만 실행하면 됩니다.
cd /Users/koo/Desktop/dev/blog
git -C content-source/posts pull --ff-only origin main
git status
git add content-source/posts
git commit -m "Update posts"
git push origin main이 흐름은 blog-posts의 최신 글 커밋을 content-source/posts submodule에 가져온 뒤, blog 저장소가 바라보는 submodule pointer를 갱신해 배포를 트리거합니다.
blog-posts는 글을 쓰는 공간입니다.
blog는 어떤 글 버전을 production에 올릴지 결정하는 공간입니다.
즉, blog-posts에 push만 해서는 공개되지 않습니다. blog 저장소의 submodule pointer가 그 글 커밋을 가리켜야 공개됩니다.
content-source/posts로 이동합니다.
cd content-source/posts새 .mdx 글을 작성하거나 기존 글을 수정합니다.
git status
git add .
git commit -m "Add new post"
git push origin maincd ../..로컬 content-source/posts가 아직 원격 최신 커밋을 가져오지 않았다면 먼저 업데이트합니다.
git -C content-source/posts pull --ff-only origin main이제 blog 저장소 입장에서는 content-source/posts submodule pointer가 변경된 상태입니다.
확인합니다.
git status정상이라면 아래처럼 submodule 경로가 변경된 것으로 보입니다.
M content-source/postsgit add content-source/posts
git commit -m "Publish posts"이 커밋은 글 파일 전체를 복사하는 커밋이 아닙니다. blog 저장소가 사용할 blog-posts 커밋 SHA를 갱신하는 커밋입니다.
git push origin mainmain에 push되면 GitHub Actions가 실행됩니다.
GitHub에서 아래 경로를 확인합니다.
Actions → Deploy to Vercel성공하면 Vercel production에 반영됩니다.
blog-posts에 새 글 building-my-blog-with-nextjs-mdx.mdx를 push한 뒤, blog 저장소에서 다음 작업을 진행했습니다.
-
content-source/posts를origin/main최신 커밋으로 fast-forward했습니다. -
blog저장소에서content-source/postssubmodule pointer 변경을 커밋했습니다. -
blog저장소의main에 push해 GitHub Actions 배포를 트리거했습니다.
이때 만들어진 blog 저장소 커밋 메시지는 아래처럼 단순하게 작성하면 됩니다.
Update postsCI는 blog-posts의 최신 main을 자동으로 따라가지 않습니다.
항상 blog 저장소에 커밋된 submodule pointer가 가리키는 글 커밋만 배포합니다.
이 규칙 덕분에 private 저장소에서 초안을 자유롭게 수정해도, 명시적으로 게시하기 전까지 production이 바뀌지 않습니다.