배포 방식
배포 방법 선택
GitHub Pages로 배포하기 위해 두 가지 방법 중 하나를 선택할 수 있습니다: gh-pages
브랜치를 사용하는 방법과 docs
디렉토리를 사용하는 방법입니다.
배포 방법을 선택할 때 고려할 사항을 요약하면 다음과 같습니다.
- 독립된 브랜치 관리
gh-pages
브랜치를 사용하면 빌드 결과물과 소스 코드를 분리하여 관리할 수 있습니다.- 이는 대규모 프로젝트나 복잡한 배포 파이프라인을 사용하는 경우 유용합니다.
- 간편한 설정
docs
폴더를 사용하는 방법은 설정이 간단하며, 작은 규모의 프로젝트나 개인 블로그와 같은 단순한 사이트에 적합합니다.- 이 방법은 별도의 브랜치를 관리할 필요가 없습니다.
gh-pages
브랜치 방식
gh-pages
브랜치의 의미
gh-pages
브랜치는 GitHub Pages에서 제공하는 기능 중 하나로, 브랜치를 사용하여 웹사이트를 호스팅할 수 있습니다. 이 브랜치를 사용하면 Hugo나 다른 정적 사이트 생성기로 생성된 사이트를 별도의 브랜치로 관리할 수 있습니다.
주요 특징
- 독립된 브랜치
gh-pages
브랜치는 사이트의 빌드 결과물만을 포함하는 독립된 브랜치입니다.- 주 브랜치(master 또는 main)와 분리되어 있어, 원본 소스코드와 빌드 결과물을 명확히 구분할 수 있습니다.
- 자동 배포
- 이 브랜치에 푸시된 내용은 GitHub Pages에서 자동으로 인식하여 배포합니다.
- 별도의 설정 없이 웹사이트가 호스팅됩니다.
- 정리된 파일 구조
- 주 브랜치에는 소스 코드만 남기고, 빌드된 파일은
gh-pages
브랜치로 푸시하여 파일 구조를 깔끔하게 유지할 수 있습니다.
- 주 브랜치에는 소스 코드만 남기고, 빌드된 파일은
gh-pages
브랜치 사용
Git 초기화
- Git을 초기화하고, 원격 저장소를 설정합니다.
# 새로운 Git 저장소 초기화
git init
# 원격 저장소 추가
git remote add origin https://github.com/USER_NAME/USER_NAME.github.io.git
- 필요한 파일들을 커밋하고 원격 저장소에 푸시합니다.
git add .
git commit -m "Initial commit"
git push -u origin master
gh-pages
브랜치 초기화
- 최초 1회만 실행합니다.
gh-pages
브랜치를 생성합니다.- 이 단계에서는
public
디렉토리를 비워두는게 좋습니다.
# gh-pages 브랜치 생성
git checkout --orphan gh-pages
# `.git` 폴더를 제외한 모든 파일 제거
Get-ChildItem -Exclude ".git" | Remove-Item -Recurse -Force
# 빈 커밋 생성
git commit --allow-empty -m "Initialize new gh-pages branch"
git push origin gh-pages
git checkout master
GitHub Actions를 사용한 자동 배포
자동으로 Hugo 사이트를 빌드하고 GitHub Pages로 배포하려면 GitHub Actions를 사용할 수 있습니다.
.github/workflows
디렉토리를 생성하고,deploy.yml
파일을 추가합니다.deploy.yml
파일에 다음 내용을 추가합니다.
name: Deploy Hugo site to GitHub Pages
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.127.0' # 로컬에서 사용하는 Hugo 버전으로 설정
- name: Build
run: hugo --minify --ignoreCache
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
publish_branch: gh-pages
master
브랜치에 커밋이 푸시될 때마다 Hugo 사이트를 빌드하고, 빌드된 결과물을gh-pages
브랜치에 푸시하는 역할을 수행합니다.- 저장소의 코드를 체크아웃합니다.
- 최신 버전의 Hugo를 설정합니다.
- Hugo를 사용하여 사이트를 빌드하고 결과물을
public
디렉토리에 저장합니다. public
디렉토리의 내용을gh-pages
브랜치에 푸시하여 GitHub Pages에 배포합니다.
- 이 파일을 커밋하고 푸시합니다.
git add .github/workflows/deploy.yml
git commit -m "Add GitHub Actions workflow for deploying to GitHub Pages"
git push origin master
GitHub Pages 설정
- GitHub 저장소의 설정(Settings)에서 GitHub Pages 섹션으로 이동하여, Source를
gh-pages
브랜치로 설정합니다.- 저장소의
Settings
로 이동합니다. - 왼쪽 사이드바에서
Pages
를 클릭합니다. Source
드롭다운 메뉴에서Deply from a branch
를 선택합니다.- Branch 메뉴에서
gh-pages
를 선택합니다. Save
버튼을 클릭하여 설정을 저장합니다.
- 저장소의
docs
디렉토리 방식
docs
폴더의 의미와 커밋의 의미
docs
폴더를 사용하여 GitHub Pages로 배포하는 방법은 GitHub 저장소의 루트 디렉토리에 빌드된 파일을 포함하지 않으면서도 GitHub Pages 기능을 활용할 수 있는 방법입니다.
주요 특징
- 루트 디렉토리 외부에 배포
docs
폴더는 저장소의 루트 디렉토리에 위치하지만, GitHub Pages는 이 폴더 내의 파일을 배포합니다.- 이는 주 브랜치(master 또는 main) 내에서 빌드 결과물을 포함할 수 있는 방법입니다.
- 간단한 설정
config.toml
파일에서publishDir
설정을 통해 Hugo가 빌드된 파일을docs
폴더에 저장하도록 할 수 있습니다.- 이를 통해 GitHub Pages 설정에서
docs
폴더를 지정하면 별도의 브랜치를 사용하지 않고도 사이트를 배포할 수 있습니다.
- 커밋의 의미
docs
폴더에 빌드된 파일을 커밋하고 푸시하면, GitHub Pages는 이 폴더의 내용을 인식하여 웹사이트를 업데이트합니다.- 이는
gh-pages
브랜치를 사용하는 것과 동일한 효과를 가집니다.
docs 디렉토리 사용
- Hugo 사이트를
docs
디렉토리에 빌드하도록 설정합니다. config.toml
파일을 수정하여 다음과 같이 설정합니다.
publishDir = "docs"
- Hugo 사이트를 다시 빌드합니다.
hugo
docs
디렉토리를 커밋하고 푸시합니다.
git add docs
git commit -m "Deploy to GitHub Pages using docs directory"
git push origin master
- GitHub 저장소 설정에서 GitHub Pages 설정을
docs
디렉토리로 지정합니다.
GitHub Actions를 사용한 자동 배포
자동으로 Hugo 사이트를 빌드하고 GitHub Pages로 배포하려면 GitHub Actions를 사용할 수 있습니다.
.github/workflows
디렉토리를 생성하고,gh-pages.yml
파일을 추가합니다.
mkdir -p .github/workflows
touch .github/workflows/gh-pages.yml
gh-pages.yml
파일에 다음 내용을 추가합니다.
name: Deploy Hugo site to GitHub Pages
on:
push:
branches:
- master # 또는 메인 브랜치 이름이 다른 경우, 해당 브랜치 이름을 사용하세요
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
- name: Build
run: hugo --destination docs
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs
publish_branch: master
- 이 파일을 커밋하고 푸시합니다.
git add .github/workflows/deploy.yml
git commit -m "Add GitHub Actions workflow for deploying to GitHub Pages"
git push origin master