Astro 사이트를 Github Pages에 배포하세요
GitHub Pages를 사용하면 GitHub Actions를 사용하여 GitHub.com의 리포지토리에서 직접 미리 렌더링된 정적 Astro 웹사이트를 호스팅할 수 있습니다.
배포 방법
섹션 제목: “배포 방법”Astro는 아주 적은 구성으로 프로젝트를 GitHub Pages에 배포할 수 있는 공식 Astro GitHub Action을 유지 관리하며, 이는 권장되는 배포 방법입니다.
아래 지침에 따라 GitHub Action을 사용하여 Astro 사이트를 GitHub Pages에 배포하세요. 이렇게 하면 GitHub URL (예: https://<username>.github.io/<my-repo>
)의 리포지토리에서 웹사이트가 만들어집니다. 배포가 완료되면 선택적으로 사용자 정의 도메인을 구성하여 원하는 도메인 (예: https://example.com
)에 GitHub Pages 사이트를 배포할 수 있습니다.
-
프로젝트의
.github/workflows/deploy.yml
에 새 파일을 만들고 아래 YAML에 붙여넣습니다.deploy.yml name: Deploy to GitHub Pageson:# 'main' 브랜치로 푸시할 때마다 워크플로를 트리거합니다.# 다른 브랜치 이름을 사용하시나요? `main`을 브랜치 이름으로 바꾸세요.push:branches: [ main ]# GitHub의 Actions 탭에서 이 워크플로를 수동으로 실행할 수 있습니다.workflow_dispatch:# 이 작업이 리포지토리를 복제하고 페이지 배포를 생성하도록 허용합니다.permissions:contents: readpages: writeid-token: writejobs:build:runs-on: ubuntu-lateststeps:- name: Checkout your repository using gituses: actions/checkout@v4- name: Install, build, and upload your siteuses: withastro/action@v3# with:# path: . # 저장소 내 Astro 프로젝트의 루트 위치입니다. (선택 사항)# node-version: 20 # 사이트를 빌드하는 데 사용해야 하는 특정 버전의 Node입니다. 기본값은 20입니다. (선택 사항)# package-manager: pnpm@latest # 종속성을 설치하고 사이트를 빌드하는 데 사용해야 하는 노드 패키지 관리자입니다. lockfile을 기반으로 자동으로 감지됩니다. (선택 사항)# env:# PUBLIC_POKEAPI: 'https://pokeapi.co/api/v2' # 변수 값에는 작은따옴표를 사용합니다. (선택 사항)deploy:needs: buildruns-on: ubuntu-latestenvironment:name: github-pagesurl: ${{ steps.deployment.outputs.page_url }}steps:- name: Deploy to GitHub Pagesid: deploymentuses: actions/deploy-pages@v4선택적 입력으로 Astro 액션을 구성할 수 있습니다. 사용하려는 입력과
with:
줄의 주석을 해제하여 입력값을 제공하세요.사이트에 공개 환경 변수가 필요한 경우
env:
줄의 주석을 해제하고 여기에 값을 추가하세요. (비공개 환경 변수를 추가하는 방법은 비밀 설정에 대한 GitHub 문서를 참조하세요.)공식 Astro action은 lockfile을 검색하여 선호하는 패키지 관리자(
npm
,yarn
,pnpm
,bun
)를 감지합니다. 패키지 관리자가 자동으로 생성한package-lock.json
,yarn.lock
,pnpm-lock.yaml
,bun.lockb
파일을 저장소에 커밋해야 합니다. -
Astro 구성 파일에서
site
를 배포한 사이트의 GitHub URL로 설정합니다.astro.config.mjs import { defineConfig } from 'astro/config'export default defineConfig({site: 'https://astronaut.github.io',})site
값은 다음 중 하나여야 합니다.- 사용자 이름을 기반으로 하는 URL:
https://<username>.github.io
- GitHub 조직의 비공개 페이지에 사용할 수 있는 자동 생성된 임의의 URL:
https://<random-string>.pages.github.io/
- 사용자 이름을 기반으로 하는 URL:
-
astro.config.mjs
에서base
값을 구성합니다. (일반적으로 필수)GitHub Pages는 사용자 이름과 리포지토리 이름에 따라 달라지는 주소 (예:
https://<username>/github.io/<my-repo>/
)에 웹사이트를 게시합니다. 웹사이트의 리포지토리를 지정하는base
값을 설정합니다. 이는 Astro에게 웹사이트의 루트가 기본값인/
가 아닌/my-repo
임을 알려주기 위한 것입니다. 리포지토리 이름이<username>.github.io
패턴 (예:https://github.com/username/username.github.io/
)과 일치하는 경우 이 단계를 건너뛸 수 있습니다.base
를 슬래시 (예:/my-repo
)로 시작하는 리포지토리의 이름으로 구성합니다.astro.config.mjs import { defineConfig } from 'astro/config'export default defineConfig({site: 'https://astronaut.github.io',base: '/my-repo',})이 값을 구성하면 모든 내부 페이지 링크 앞에
base
값을 붙여야 합니다.<a href="/my-repo/about">About</a>base
값 구성에 대해 자세히 알아보세요. -
GitHub에서 리포지토리의 Settings 탭으로 이동하여 Pages 섹션을 찾습니다.
-
사이트의 Source로 GitHub Actions를 선택합니다.
Astro 프로젝트의 리포지토리에 변경 사항을 푸시하면 GitHub Action이 자동으로 GitHub URL에 배포합니다.
Github URL을 사용자 정의 도메인으로 변경하기
섹션 제목: “Github URL을 사용자 정의 도메인으로 변경하기”이전 지침에 따라 Astro 프로젝트가 GitHub URL의 GitHub Pages에 배포되면 사용자 정의 도메인을 구성할 수 있습니다. 즉, 사용자는 https://<username>.github.io
대신 사용자 정의 도메인인 https://example.com
에서 사이트를 방문할 수 있습니다.
-
프로젝트에
./public/CNAME
레코드를 추가합니다.public/
폴더에 사용자 정의 도메인을 지정하는 한 줄의 텍스트가 포함된 다음 파일을 만듭니다.public/CNAME sub.example.com이렇게 하면
user.github.io
대신 사용자 정의 도메인에 사이트를 배포합니다. -
Astro 구성에서
site
값을 사용자 정의 도메인으로 업데이트합니다.base
값은 설정하지 말고, 이미 존재한다면 제거하세요.astro.config.mjs import { defineConfig } from 'astro/config'export default defineConfig({site: 'https://example.com',base: '/my-repo'}) -
필요한 경우 모든 페이지 내부 링크를 업데이트하여
base
접두사를 제거합니다.<a href="/my-repo/about">About</a>
- Github Pages 배포 시작 템플릿
- Starlight Flexoki 테마 (프로덕션 사이트)
- Expressive Code Color Chips (프로덕션 사이트)
- Starlight Markdown Blocks (프로덕션 사이트)