Skip to content

Commit 2d95a91

Browse files
jayychoiclaude
andcommitted
배포 트리거 워크플로우 추가 및 콘텐츠 업데이트
- trigger-deploy.yml 추가 (content push 시 main 배포 트리거) - 고아 브랜치 블로그 글에 트리거 워크플로우 설명 추가 - 프로젝트 소개 업데이트 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 024f144 commit 2d95a91

File tree

3 files changed

+54
-19
lines changed

3 files changed

+54
-19
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: Trigger deploy
2+
3+
on:
4+
push:
5+
6+
permissions:
7+
actions: write
8+
9+
jobs:
10+
trigger:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- run: gh workflow run deploy-pages.yml --ref main -R ${{ github.repository }}
14+
env:
15+
GH_TOKEN: ${{ github.token }}

posts/blog2/21-content-orphan-branch.md

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,21 +122,41 @@ import("velite").then((m) => m.build({ watch: isDev, clean: !isDev }));
122122
123123
`content` 브랜치에 push하면 배포가 트리거되도록 설정했다. 이 경우 Next.js 소스 코드는 바뀌지 않았으므로, 캐시를 최대한 활용하고 싶었다.
124124

125-
### 두 브랜치 모두 트리거
125+
### content 브랜치에서 배포 트리거
126+
127+
처음에는 단순히 `branches: ["main", "content"]`로 두 브랜치 모두 트리거하려 했지만, 작동하지 않았다. GitHub Actions의 `push` 트리거는 **push된 브랜치에 워크플로우 파일이 있어야** 작동하기 때문이다. `content` 브랜치는 Markdown만 있고 `.github/workflows/`가 없으니 트리거되지 않는다.
128+
129+
해결 방법은 `content` 브랜치에 작은 트리거 전용 워크플로우를 두는 것이다. `content` 브랜치에 push하면 이 워크플로우가 `gh workflow run`으로 `main`의 배포 워크플로우를 호출한다.
126130

127131
```yaml
132+
# content 브랜치: .github/workflows/trigger-deploy.yml
133+
name: Trigger deploy
134+
128135
on:
129136
push:
130-
branches: ["main", "content"]
137+
138+
permissions:
139+
actions: write
140+
141+
jobs:
142+
trigger:
143+
runs-on: ubuntu-latest
144+
steps:
145+
- run: gh workflow run deploy-pages.yml --ref main -R ${{ github.repository }}
146+
env:
147+
GH_TOKEN: ${{ github.token }}
131148
```
132149

133-
`content` 브랜치 push로 트리거될 때 기본 checkout이 `content` 브랜치를 가져오는 문제가 있다. 코드는 항상 `main`에서 가져와야 하므로 `ref`를 명시한다.
150+
`GITHUB_TOKEN`은 `workflow_dispatch`와 `repository_dispatch` 이벤트를 트리거할 수 있으므로, 별도의 Personal Access Token 없이도 동작한다.
151+
152+
`main`의 배포 워크플로우는 `push`와 `workflow_dispatch` 두 가지로 트리거된다.
134153

135154
```yaml
136-
- name: Checkout
137-
uses: actions/checkout@v4
138-
with:
139-
ref: main
155+
# main 브랜치: .github/workflows/deploy-pages.yml
156+
on:
157+
push:
158+
branches: ["main"]
159+
workflow_dispatch:
140160
```
141161

142162
### Velite 캐시

projects/personal-blog.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,28 @@ github: https://github.com/jayychoi/jayychoi.github.io
1717
url: https://jayychoi.github.io
1818
---
1919

20-
공부한 것들을 기록하고 정리하기 위해 직접 만든 블로그예요. 벨로그나 티스토리 같은 플랫폼도 있지만, 내 손으로 만들고 원하는 대로 고칠 수 있는 블로그를 갖고 싶어서 처음부터 직접 만들었어요. 지금 보고 계신 이 사이트가 바로 그 결과물입니다.
20+
공부한 것들을 기록하고 정리하기 위해 직접 만든 블로그입니다. 벨로그나 티스토리 같은 플랫폼도 있지만, 직접 만들고 원하는 대로 수정할 수 있는 블로그를 갖고 싶어서 처음부터 개발했습니다. 지금 보고 계신 이 사이트가 그 결과물입니다.
2121

2222
## 어떻게 만들었나요?
2323

24-
Next.js 16의 App Router와 정적 빌드(`output: "export"`)를 사용해서, 서버 없이 GitHub Pages에서 바로 돌아가요. 글은 Markdown으로 작성하고, Velite가 이걸 JSON으로 변환해서 Next.js가 빌드할 때 사용합니다. 별도의 데이터베이스나 CMS 없이 Markdown 파일만으로 모든 콘텐츠를 관리할 수 있어요.
24+
Next.js 16의 App Router와 정적 빌드(`output: "export"`)를 사용하여, 서버 없이 GitHub Pages에서 동작합니다. 글은 Markdown으로 작성하고, Velite가 JSON으로 변환하여 Next.js 빌드 시 사용합니다. 별도의 데이터베이스나 CMS 없이 Markdown 파일만으로 모든 콘텐츠를 관리할 수 있습니다.
2525

26-
스타일링은 Tailwind CSS 4와 Shadcn/ui를 사용했고, 코드 블록은 Shiki로 하이라이팅해요. 라이트/다크 테마 둘 다 지원하고, 코드 블록도 테마에 맞게 자동으로 색상이 바뀝니다.
26+
스타일링은 Tailwind CSS 4와 Shadcn/ui를 사용했고, 코드 블록은 Shiki로 하이라이팅합니다. 라이트/다크 테마를 모두 지원하며, 코드 블록도 테마에 맞게 자동으로 색상이 전환됩니다.
2727

2828
## 주요 기능
2929

30-
- **카테고리 · 태그 · 시리즈** — 글을 다양한 기준으로 분류하고 탐색할 수 있어요
31-
- **전문 검색 (`⌘K`)** — Fuse.js 기반 퍼지 검색으로, 제목과 본문에서 원하는 글을 빠르게 찾을 수 있어요
32-
- **활동 히트맵** — GitHub 잔디처럼 글 작성 활동을 한눈에 있어요
33-
- **다크 모드** — 시스템 설정에 따라 자동 전환되고, 수동으로도 토글할 수 있어요
34-
- **코드 하이라이팅** — Shiki의 듀얼 테마(github-light / github-dark)로 깔끔하게 코드를 보여줘요
35-
- **목차(TOC)** — 게시글 옆에 자동 생성되는 목차로 긴 글도 쉽게 탐색할 수 있어요
36-
- **댓글** — Giscus를 연동해서 GitHub Discussions 기반으로 댓글을 남길 수 있어요
30+
- **카테고리 · 태그 · 시리즈** — 글을 다양한 기준으로 분류하고 탐색할 수 있습니다
31+
- **전문 검색 (`⌘K`)** — Fuse.js 기반 퍼지 검색으로, 제목과 본문에서 원하는 글을 빠르게 찾을 수 있습니다
32+
- **활동 히트맵** — GitHub 잔디처럼 글 작성 활동을 한눈에 확인할있습니다
33+
- **다크 모드** — 시스템 설정에 따라 자동 전환되며, 수동으로도 토글할 수 있습니다
34+
- **코드 하이라이팅** — Shiki의 듀얼 테마(github-light / github-dark)로 코드를 표시합니다
35+
- **목차(TOC)** — 게시글 옆에 자동 생성되는 목차로 긴 글도 쉽게 탐색할 수 있습니다
36+
- **댓글** — Giscus를 연동하여 GitHub Discussions 기반으로 댓글을 남길 수 있습니다
3737

3838
## 콘텐츠 관리 방식
3939

40-
재미있는 점은 블로그 코드와 콘텐츠를 같은 리포지토리에서 관리하면서도 완전히 분리했다는 거예요. Git의 고아 브랜치(orphan branch)를 활용해서, `main` 브랜치에는 앱 코드가, `content` 브랜치에는 Markdown 게시글이 들어있어요. 로컬에서는 `git worktree`로 두 브랜치를 동시에 작업할 수 있고, 어느 브랜치에 push하든 GitHub Actions가 자동으로 빌드하고 배포합니다.
40+
블로그 코드와 콘텐츠를 같은 리포지토리에서 관리하면서도 완전히 분리한 것이 특징입니다. Git의 고아 브랜치(orphan branch)를 활용하여, `main` 브랜치에는 앱 코드를, `content` 브랜치에는 Markdown 게시글을 두었습니다. 로컬에서는 `git worktree`로 두 브랜치를 동시에 작업할 수 있습니다. `main`에 push하면 직접 배포가 실행되고, `content`에 push하면 트리거 워크플로우가 `main`의 배포를 호출하여 자동으로 빌드하고 배포합니다.
4141

4242
## 배포
4343

44-
`main` 또는 `content` 브랜치에 push하면 GitHub Actions가 자동으로 정적 사이트를 빌드해서 GitHub Pages에 배포해요. 소스 코드만 바뀌었을 때는 Velite 캐시를, 콘텐츠만 바뀌었을 때는 Next.js 컴파일 캐시를 활용해서 빌드 시간을 줄였어요.
44+
`main` 또는 `content` 브랜치에 push하면 GitHub Actions가 자동으로 정적 사이트를 빌드하여 GitHub Pages에 배포합니다. 소스 코드만 변경되었을 때는 Velite 캐시를, 콘텐츠만 변경되었을 때는 Next.js 컴파일 캐시를 활용하여 빌드 시간을 최소화했습니다.

0 commit comments

Comments
 (0)