"배포 입문 (3/7) — GitHub로 배포하기: repository, Pages, Actions의 역할 구분"

GitHub는 저장소이기도 하고, 정적 사이트 호스팅 지점이기도 하고, 자동화 엔진이기도 하다. 이 셋을 섞어 이해하면 배포 흐름이 흐려진다.


핵심 요약

  • GitHub의 기본 역할은 원격 저장소다. 코드를 보관하고 브랜치, PR, 이력을 관리한다.
  • GitHub Pages는 정적 사이트 배포 기능이다. HTML/CSS/JS 결과물을 공개 주소로 보여 준다.
  • GitHub Actions는 CI/CD 자동화 엔진이다. .github/workflows 안의 YAML로 빌드, 테스트, 배포를 실행한다.
  • 정적 사이트라면 Pages만으로 충분할 수 있지만, 검증 단계나 다른 플랫폼 배포까지 다루려면 Actions가 필요해진다.

1. Repository: 소스 오브 트루스

GitHub repository는 배포 결과물이 아니라 배포의 출발점이다. 어떤 브랜치가 기준인지, 어떤 PR이 머지됐는지, 어떤 태그가 릴리스인지가 모두 여기서 정해진다.

이 레이어가 중요한 이유는 배포 플랫폼이 거의 항상 GitHub를 바라보기 때문이다. Vercel도, Railway도, Streamlit Community Cloud도 대개 GitHub 저장소와 브랜치를 연결해 자동 배포를 시작한다.

2. GitHub Pages: 정적 결과물을 공개하는 기능

GitHub Pages는 문서 사이트, 포트폴리오, 간단한 소개 페이지처럼 정적 파일만으로 동작하는 사이트에 적합하다.

공식 문서 기준으로 Pages는 두 방식으로 발행할 수 있다.

  • 특정 브랜치나 /docs 폴더를 발행 소스로 지정
  • GitHub Actions 기반의 커스텀 워크플로로 빌드 후 배포

여기서 핵심은 Pages가 "앱 서버를 계속 띄워 두는 서비스"가 아니라는 점이다. 백엔드 API, 장시간 실행 프로세스, 데이터베이스 연결 같은 것은 Pages의 역할이 아니다.

3. GitHub Actions: 자동화 엔진

GitHub Actions는 GitHub 안에서 돌아가는 CI/CD 플랫폼이다. 공식 문서 기준으로 워크플로는 .github/workflows 아래의 YAML 파일로 정의되며, push, pull_request, workflow_dispatch 같은 이벤트에 반응한다.

아래 같은 흐름이 가장 흔하다.

on:
  pull_request:
    branches: [main]
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npm test

이 워크플로 자체가 배포를 하지는 않더라도, 배포 전에 검증해야 하는 기준선을 만들어 준다.

4. Pages와 Actions는 어떻게 다를까

둘은 경쟁 관계가 아니라 역할이 다르다.

항목 GitHub Pages GitHub Actions
역할 정적 사이트 공개 빌드·테스트·배포 자동화
입력 정적 결과물 워크플로 정의
적합한 용도 문서, 블로그, 포트폴리오 CI, 배포, 릴리스, 검증
단독 사용 가능성 높음 플랫폼과 함께 쓰는 경우 많음

즉, "Pages로 보여 주고, Actions로 검증하고, 필요하면 다른 플랫폼으로 배포한다"는 조합도 충분히 가능하다.

5. 언제 GitHub만으로 충분할까

아래 조건이면 GitHub만으로도 시작하기 좋다.

  • 정적 페이지다
  • 서버 프로세스가 필요 없다
  • 공개 URL이 하나면 충분하다
  • 복잡한 빌드 인프라가 필요 없다

반대로 아래 조건이면 다른 플랫폼까지 고려해야 한다.

  • 프론트엔드 미리보기 배포가 중요하다
  • Python 앱이나 Node 서버를 실제로 실행해야 한다
  • 환경 변수와 런타임 차이가 크다
  • 배포 로그, 재시작, 장시간 프로세스 운영이 필요하다

6. 초보자가 가장 많이 헷갈리는 질문

GitHub에 올렸는데 왜 사이트가 안 열리나요?

저장소 업로드와 공개 배포는 다른 단계다. repository만 만들었다고 URL이 생기지 않는다.

Actions가 있으면 Pages가 필요 없나요?

아니다. Actions는 자동화 엔진이고, Pages는 정적 사이트 발행 지점이다.

Pages는 무료인가요?

GitHub Docs 기준으로 GitHub Pages는 public repository에서 GitHub Free로 사용할 수 있다. private 저장소까지 포함한 세부 사용 범위는 계정 플랜에 따라 달라질 수 있다.

참고 자료

  • GitHub Docs, Understanding GitHub Actions — https://docs.github.com/en/actions/get-started/understand-github-actions
  • GitHub Docs, Deploying with GitHub Actions — https://docs.github.com/en/actions/how-tos/deploy/configure-and-manage-deployments/control-deployments
  • GitHub Docs, Configuring a publishing source for your GitHub Pages site — https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site
  • GitHub Docs, Using custom workflows with GitHub Pages — https://docs.github.com/pages/getting-started-with-github-pages/using-custom-workflows-with-github-pages

이 글은 배포 입문 시리즈의 3/7 편입니다. 다음 편: Vercel로 프론트엔드 자동 배포하기.

댓글

이 블로그의 인기 게시물

"LLM 핵심 학습 (1/6) — 기본: 토큰화·임베딩·어텐션·위치 인코딩"

"LLM 핵심 학습 (2/6) — 파인튜닝: LoRA·QLoRA·증류·Adapter"

"ML 기초 학습 (1/9) — 머신러닝과 sklearn: 학습의 좌표계"