Pages 켜는 절차
사이트(랜딩 + app · console · widgetbook · golden · docs · app-widgetbook 6표면)는 .github/workflows/pages.yml 이 만든다.
Pages 는 화면이 모두 끝난 뒤에 켠다(오너 지시). 그 전에는 main push 마다 사이트를 빌드 · 검사만 하고 배포와 공개 스모크는
건너뛴다 — 워크플로는 초록이고, 「Pages 설정 확인」 잡의 notice 가 이유를 남긴다. 켜면 워크플로를 더 고치지 않아도
빌드 → 배포 → 공개 스모크로 간다. 이 문서는 절차만 정한다(켜도 되는 시점의 판단은 오너 몫).
REPO="$(gh repo view --json nameWithOwner --jq .nameWithOwner)" # 이 저장소 (예: <조직>/<저장소>)
1. 지금 상태
gh api "repos/$REPO/pages" --jq .build_type # 404 = 꺼짐 · workflow = 켜짐 · legacy = 잘못 켜짐(아래 6)
2. 켜기 (저장소 관리자)
gh api -X POST "repos/$REPO/pages" -f build_type=workflow
build_type=workflow(Source = GitHub Actions)만 쓴다. cname 은 넣지 않는다(아래 6).
3. 첫 배포
gh workflow run pages.yml --ref main -f evidence=true
gh run list --workflow pages.yml --limit 1 # run id 확인 → gh run watch <id>
켠 뒤 첫 main push 도 같다(위 명령은 push 를 기다리지 않고 지금 돌린다).
4. 확인
- 잡이 이 순서로 모두 초록이다:
사이트 빌드→Pages 설정 확인(「Pages 켜짐」) →배포 (GitHub Pages)→공개 스모크.공개 스모크가 같은 커밋의 배포본을 실제로 열어 6표면 200 · 콘솔 오류 0 · 바깥 요청 0 · 새로고침 · 첫 프레임 전 상태 · iframe 실시간 전환을 판정한다 — 이 잡의 성공이 배포됐다는 증거다(사이트 빌드의 성공은 아니다). - 랜딩과 카드 6개가 모두 열린다(사이트 주소는 Pages 설정에서 읽는다):
SITE="$(gh api "repos/$REPO/pages" --jq .html_url)" # 끝에 / 가 붙은 주소 (S-17: 조직 Pages 사이트 아래)
for s in "" app/ console/ widgetbook/ golden/ docs/ app-widgetbook/; do
curl -s -o /dev/null -w "%{http_code} ${SITE}${s}\n" "${SITE}${s}"
done
반영이 늦으면(처음 몇 분) 404 가 나올 수 있다 — 공개 스모크가 최대 10분 기다린다.
5. 되돌리기
gh api -X DELETE "repos/$REPO/pages"
사이트가 내려가고(공개 주소 404), 다음 main push 부터 「Pages 설정 확인」이 배포를 건너뛴다 — 워크플로는 계속 초록이다. 다시 켜면(2) 돌아온다.
6. 주의
- 커스텀 도메인을 걸지 않는다(S-17). 사이트 주소(
<조직 사이트 도메인>/<저장소>/)는 조직 Pages 사이트가 자동으로 붙여 준다.cname이 걸려 있으면 워크플로가 경고한다. - 사이트는 공개다(비공개 저장소도). 실제 개인정보 · 민감한 화면을 싣지 않는다 — 데모 데이터는 가상 인물(
co_faker)만 쓴다. - 자격 증명 스캔(S-16): 배포 전에 산출물 전체를
tool/pages/check_no_credentials.py가 훑는다 — 토큰 모양이 하나라도 있으면 빌드가 실패한다. 저장소 주소는tool/pages/repo_url.sh로만 만든다(git remote get-url금지). - Source 가
legacy(브랜치 배포)로 켜졌으면 「Pages 설정 확인」이 실패한다 →gh api -X PUT "repos/$REPO/pages" -f build_type=workflow. - 「Pages 설정 확인」이
has_pages=true인데 404 라며 실패하면 토큰 권한 문제다(잡의permissions.pages: read) — 켜진 사이트의 배포를 조용히 건너뛰지 않으려고 일부러 실패로 둔다. - 러너 디스크 여유가 20 GiB 미만이면 사이트 빌드는 시작하지 않고 바로 실패한다(러너 호스트 디스크를 비운 뒤
gh run rerun <id> --failed).