HonKit DevLog Pipeline Stabilization
작성일: 2025-11-12
작성자: Claude AI Assistant
카테고리: System / DevOps
심각도: Medium
📋 목차
1. 문제 개요
1.1 증상
- 현상: DevLog/Meeting 기준 HonKit 빌드가
docs브랜치를 체크아웃하려다 실패하며 특히gh-pages푸시 단계에서 리모트 커밋 불일치 에러가 발생하여 최신 페이지가 배포되지 않음. - 재현: Daily/Weekly report 자동 생성 →
honkit-builddispatch → deploy job에서peaceiris/actions-gh-pages@v3가cannot lock ref 'refs/heads/gh-pages'에러 출력. - 영향: Discord 알림과 HonKit 빌드는 돌아가나 실제 gh-pages 사이트는 이전 상태로 남음, 시니어/주니어/PM 모두 오늘의 산출물 확인 불가능.
1.2 관련 시스템
- GitHub Actions:
.github/workflows/daily-report.yml,.github/workflows/weekly-report.yml,.github/workflows/honkit.yml - Metrics generation:
.github/scripts/devlog/generate_daily.py - HonKit pipeline:
.github/scripts/devlog/update_devlog.py+Documents/DevLog - Deployment:
peaceiris/actions-gh-pages@v3
2. 시스템 아키텍처
2.1 Pipeline 구조
Metrics JSON → update_devlog.py → Daily/Weekly MD update
↓ ↓
Meeting keywords GPT prompts
↘ HonKit build → gh-pages deploy → Discord notify
이 파이프라인은 main 브랜치 상태를 기준으로 하며, Daily/Weekly 워크플로가 metrics 기반 update_devlog.py를 먼저 실행하고 그 결과를 HonKit으로 빌드, gh-pages로 배포한 뒤 Discord로 “갱신 섹션” 알림을 보냅니다.
3. 문제 원인 분석
3.1 핵심 문제
docs 브랜치 동기화 때문에 deploy 단계가 겹쳐지고 푸시 충돌이 생겨 매번 배포가 실패, 결과적으로 리포트가 실시간으로 확인되지 않음.
3.2 상세 분석
3.2.1 브랜치 관리
- 워크플로에서
.github/workflows/honkit.yml은 이전에git checkout docs를 수행; capture stage에서 Honorsdocs와main간 커밋 불일치로 푸시가 거부됨.
3.2.2 deployment conflict
peaceiris/actions-gh-pages@v3기본은 원격 브랜치의 latest를 기준으로 업데이트: 예상 SHA(7affefc…)와 실제 원격(84fe…)가 달라cannot lock ref에러 발생.
3.2.3 DevLog 문서 동기화
- Daily/Weekly report scripts는
docs브랜치에 커밋하고 dispatch를 보냈지만 honkit workflow는 다른 브랜치(main)을 기준으로 했기 때문에, 실제 Docs 결과는 다시 불일치.
4. 해결 방안
4.1 해결 전략
docs브랜치 의존 제거 → 모든 자동화는main경유,gh-pages는 HonKit 빌드 결과만을 push.update_devlog.py로 metrics/meeting 기반 자동 갱신 + GPT 보충.
4.2 해결 로직
- Daily & Weekly workflows에서
git pull origin main후 metrics JSON을 업데이트. .github/scripts/devlog/update_devlog.py는 sections만 교체(update_in_place)하고 GPT 프롬프트 템플릿(👍)을 통해 “왜 중요한가” 문장을 채웁니다.meeting-broadcast.yml은latest_file포함 dispatch → notify job이 회의용 webhook 사용하여 “회의록 @{file}”을 알림.
4.3 해결 후 플로우
- Daily: metrics JSON + meeting note + GPT →
Documents/DevLog/Daily/.md. - Weekly: 7일간 aggregated metrics → `Documents/DevLog/Weekly/function range(start, stop, step) {
}.md`.if (typeof stop === 'undefined') { stop = start; start = 0; step = 1; } else if (!step) { step = 1; } var arr = []; if (step > 0) { for (var i = start; i < stop; i += step) { arr.push(i); } } else { for (var _i = start; _i > stop; _i += step) { // eslint-disable-line for-direction arr.push(_i); } } return arr; - HonKit: build → gh-pages main deploy → notify with section names.
5. 코드 수정 내역
5.1 수정 파일
.github/scripts/devlog/update_devlog.py.github/scripts/devlog/prompt_templates/*.txt.github/workflows/{daily-report,weekly-report,honkit}.ymlDocuments/meeting/guide*.md
5.2 수정 위치
- Daily workflow:
Update Daily DevLog...step - Weekly workflow:
Update Weekly DevLog...step - HonKit workflow: removed docs checkout, added notify job
5.3 수정 전 코드
honkit.yml은 git fetch origin docs → git checkout docs, meeting-broadcast payload lacked latest_file, daily/weekly workflows built on docs branch.
5.4 수정 후 코드
- Workflows target
main, callupdate_devlog.pybefore HonKit build.- Script implements GPT prompts and meeting linking.
5.5 핵심 변경 사항
- Metrics→GPT integration before deploying.
- Docs branch removed from pipeline, main-only flow.
- Meeting note template + prompt bridging with DevLog sections.
6. 테스트 가이드
6.1 테스트 시나리오
- Local metrics generation +
python update_devlog.py --mode daily --date 2025-11-12→ verifyDocuments/DevLog/Daily/2025-11-12.mdsections updated. - Run daily workflow via
workflow_dispatch→ checkgh-pagesdeploy log for new commit. - Modify meeting template, run update script, ensure
## 3. 회의 연계 분석reflects keywords.
6.2 디버깅 로그 체크리스트
update_devlog.pyconsole output:Updated Documents/DevLog/...- Workflow log: HonKit build success,
notifyjob mentions updated sections.
6.3 Output Log 필터링
honkit.ymlnotify job prints containedMSG.Discord notifymessage indicates which section (Mermaid, 회의 연계) changed.
7. 학습 포인트
7.1 자동화와 의미
Metrics 수치만 넣는 자동화는 소음이지만, GPT 요약 + 기존 마크다운 유지 방식은 실제 human-readable 회고를 만들 수 있습니다.
7.2 회의 연결
회의록 키워드와 metrics의 교집합을 GPT가 설명하면 “회의 → 코드 → 리포트” 라는 팀 피드백 루프가 실현됩니다.
8. 결론
8.1 요약
- 문제: docs branch 충돌로 gh-pages deploy 실패.
- 원인: 워크플로 의존 명확하지 않고 Discord/meeting 흐름이 분리됨.
- 해결: main branch 기반 파이프라인, update_devlog.py + meeting link.
- 효과: 수치+GPT+회의 로그가 자동 갱신된 DevLog로 팀 리포트 성과 개선.
8.2 핵심 교훈
- 브랜치를 줄이면 파이프라인 안정성은 급격히 올라간다.
- 자동화는 “의미를 갱신”해야 팀이 읽는다.
문서 버전: 1.0
최종 수정일: 2025-11-12
참조 파일:
.github/scripts/devlog/update_devlog.py.github/workflows/daily-report.ymlDocuments/meeting/guide.template.md