Files
HolodoriCalc/docs/github-pages-deployment.md
T
dal4segno c0f4060dec
Publish GitHub Pages output / publish (push) Successful in 34s
feat: apply feedback updates and streamline online delivery
2026-09-01 22:21:45 +09:00

3.6 KiB

GitHub Pages 배포

원본 저장소와 전체 게임 데이터는 개인 Git 서버에만 보관합니다. 공개 GitHub 저장소 DD4SN/DD4SN.github.io에는 공개 데이터 검증을 통과한 pages-dist 산출물과 Pages 배포 워크플로만 전송합니다.

공개 데이터 게이트

pages/publication-policy.json은 Pages에 공개해도 되는 HolodoriDB 마스터 데이터 버전과 최초 공개 가능 시각을 고정합니다.

  • 카드, 보드, 메모리 데이터 버전이 승인 버전과 다르면 빌드를 중단합니다.
  • 공개 시각이 지나지 않았거나 공개 시각이 없는 악곡 채보가 있으면 빌드를 중단합니다.
  • 시작 시각이 지나지 않았거나 시작 시각이 없는 이벤트가 있으면 빌드를 중단합니다.
  • Pages 빌드는 서버 시간 API를 호출하지 않고 브라우저 시각을 사용합니다.

새 마스터 데이터를 수집한 뒤에는 포함된 카드, 보드와 메모리 정보가 모두 공개 가능한지 검토한 후에만 정책의 approvedMasterDataVersion과 approvedNotBefore를 갱신합니다. 한 마스터 버전에 서로 다른 공개 시각의 데이터가 함께 있으면 가장 늦은 공개 시각까지 전체 Pages 빌드가 차단됩니다.

검증과 정적 빌드:

npm run check:pages-data
npm run build:pages

테스트에서만 PAGES_PUBLICATION_TIME에 ISO-8601 시각을 지정할 수 있습니다. 실제 배포에서는 설정하지 않아 신뢰할 수 있는 CI 실행 시각을 사용합니다.

배포

npm run deploy:pages

배포 스크립트는 다음 순서로 동작합니다.

  1. 공개 데이터 검증과 pages-dist 빌드
  2. 임시 디렉터리에 DD4SN/DD4SN.github.io 저장소 복제
  3. 저장소 최상위에 index.html, assets/, icons/ 등 정적 산출물 복사
  4. .github/workflows/deploy.yml 갱신
  5. 배포 저장소의 main 브랜치에 산출물 커밋과 푸시

최초 배포 전에 저장소의 Pages 소스를 GitHub Actions 방식으로 한 번 활성화해야 합니다.

개인 Git 서버의 예약 작업에서 실행할 때는 GitHub 저장소에만 쓰기 가능한 최소 권한 자격증명을 사용합니다. 원본 저장소를 GitHub 원격으로 추가하거나 원본 Git 이력을 Pages 저장소로 푸시하지 않습니다.

Gitea 예약 배포

.gitea/workflows/deploy-pages.yml은 main 갱신, 수동 실행, 5분 간격 예약 실행에서 공개 가능 여부를 확인합니다. 공개 시각 전이면 정상적으로 배포를 건너뛰고, 승인 버전 불일치나 날짜 누락 같은 정책 오류는 실패로 처리합니다. 검증을 통과하면 정적 사이트를 만든 뒤 생성 파일만 GitHub Pages 저장소 최상위에 커밋합니다.

이 워크플로는 서버용 빌드나 별도의 오프라인 배포물을 만들지 않고 GitHub Pages용 build:pages만 실행합니다.

사전 준비:

  1. Gitea에 ubuntu-latest 레이블을 처리할 수 있는 Actions runner를 연결합니다.
  2. GitHub에서 DD4SN/DD4SN.github.io 저장소의 Contents 읽기/쓰기만 허용하는 fine-grained PAT를 발급합니다.
  3. 개인 Gitea 저장소의 Actions secret PAGES_GITHUB_TOKEN에 PAT를 등록합니다. Gitea는 secret 이름의 GITHUB_ 접두사를 허용하지 않습니다.

토큰은 원본 저장소 파일, 로그, 생성 사이트에 기록하지 않습니다. 자동 게시에서는 기존 .github 설정을 변경하지 않으므로 PAT에 Workflows 권한이 필요하지 않습니다. GitHub Pages 저장소에 정적 파일 변경이 없으면 새 커밋을 만들지 않습니다.