기획서: prego-saas-app → prego_saas 레포·앱 이름 변경에 따른 CI/CD 연동 업데이트
목적: prego-saas-app 레포가 prego_saas로 변경된 상태에서, prego-docker의 Docker 이미지 빌드 트리거 및 관련 설정을 새 레포·앱 이름에 맞게 업데이트하기 위한 기획을 정리한다.
코드 생성 없음 — 기획·영향 범위·변경 항목·검증 절차만 명세.
1. 변경 배경
| 구분 | 변경 전 | 변경 후 |
|---|
| 레포 이름 | Pregoi/prego-saas-app | Pregoi/prego_saas |
| 앱 폴더명 | prego_saas_app | prego_saas |
| 앱 표시명 | Prego SaaS App | Prego SaaS |
- prego-saas-app은 Frappe custom app이며, 레포·앱 이름이 prego_saas로 통일된 상태.
- prego-docker는 기존에 prego-saas-app 레포의 push/tag 시
repository_dispatch로 이미지 빌드를 트리거하는 구조로 설정되어 있었음.
- 레포·앱 이름 변경으로 인해 prego-docker, prego_saas, 문서·스크립트 전반에 걸쳐 참조를 업데이트해야 함.
2. 영향 범위 요약
| 대상 | 영향 내용 |
|---|
| prego-docker | apps.json, build.yml, Dockerfile, 스크립트, docs |
| prego_saas | notify-image-rebuild 워크플로, Secrets |
| Prego 문서 | runbook, planning 문서 내 prego-saas-app 참조 |
| GitHub Secrets | Secret 이름 변경 여부(선택), 레포별 Secret 등록 위치 |
3. prego-docker 변경 항목
3.1 apps.json
| 항목 | 변경 전 | 변경 후 |
|---|
| url | https://github.com/Pregoi/prego-saas-app | https://github.com/Pregoi/prego_saas |
| branch | v1.0.0 (태그 예시) | 동일 정책 유지 (태그 또는 version-16 등) |
branch 필드는 태그 기반 pinning 정책 유지. 필요 시 version-16 등 브랜치로 변경 가능.
3.2 .github/workflows/build.yml
| 단계/항목 | 변경 전 | 변경 후 |
|---|
| 주석 | Triggered only by repository_dispatch (prego-saas-app) | Triggered only by repository_dispatch (prego_saas) |
| Validate 단계 | select(.url | test("prego-saas-app")) | select(.url | test("prego_saas")) |
| 에러 메시지 | apps.json has no prego-saas-app entry | apps.json has no prego_saas entry |
| API URL | Pregoi/prego-saas-app | Pregoi/prego_saas |
| 에러 메시지 | Pregoi/prego-saas-app | Pregoi/prego_saas |
| Secret 설명 | PREGO_SAAS_APP_CLONE_TOKEN | 동일 유지 또는 PREGO_SAAS_CLONE_TOKEN (선택) |
| Verify image apps | prego_saas_app | prego_saas |
| for app in | frappe erpnext hrms crm drive prego_saas_app | frappe erpnext hrms crm drive prego_saas |
- Verify 단계: bench init 후 생성되는 앱 폴더명이
prego_saas이므로 검증 대상 앱명 수정 필요.
3.3 Dockerfile
| 위치 | 변경 전 | 변경 후 |
|---|
| 주석 (line 97) | When prego-saas-app is private | When prego_saas is private |
| Python 치환 로직 | "prego-saas-app" in e.get("url","") | "prego_saas" in e.get("url","") 또는 URL 패턴으로 prego_saas 레포 식별 |
| clone URL | Pregoi/prego-saas-app.git | Pregoi/prego_saas.git |
| 디버그 출력 (line 122) | prego_saas_app | prego_saas |
| setup.py 경로 | prego_saas_app/setup.py | prego_saas/setup.py |
- apps.json의 url이
Pregoi/prego_saas로 변경되므로, Python 치환 로직에서 prego_saas 또는 Pregoi/prego_saas를 검사하도록 수정.
3.4 scripts/test-clone-prego-saas-app.sh
| 항목 | 변경 전 | 변경 후 |
|---|
| 파일명 | test-clone-prego-saas-app.sh | test-clone-prego-saas.sh (선택) |
| REPO | Pregoi/prego-saas-app | Pregoi/prego_saas |
| 환경변수 | PREGO_SAAS_APP_CLONE_TOKEN | 동일 유지 또는 PREGO_SAAS_CLONE_TOKEN |
| 주석/에러 메시지 | prego-saas-app | prego_saas |
3.5 docs/prego-saas-app-notify-workflow.yml
| 항목 | 변경 전 | 변경 후 |
|---|
| Copy 대상 주석 | Pregoi/prego-saas-app/.github/workflows/ | Pregoi/prego_saas/.github/workflows/ |
| Secret 설명 | PREGODOCKER_DISPATCH_PAT | 동일 (prego-docker 호출용) |
| README 참조 | ”Setting up prego-saas-app" | "Setting up prego_saas” |
- 파일 내용(API URL, event_type 등)은 prego-docker를 대상으로 하므로 변경 없음. 주석만 업데이트.
4. prego_saas 레포 변경 항목
4.1 notify-image-rebuild 워크플로
| 항목 | 내용 |
|---|
| 위치 | Pregoi/prego_saas/.github/workflows/notify-image-rebuild.yml |
| 소스 | prego-docker의 docs/prego-saas-app-notify-workflow.yml 복사 후 배치 |
| 트리거 | push: main, staging, develop / tags: v*.. |
| 동작 | repository_dispatch → Pregoi/prego-docker (event_type: custom_app_updated) |
| 변경 필요 | 워크플로 로직은 동일. prego_saas 레포에 해당 파일이 없으면 신규 추가 필요. |
- prego-saas-app 레포가 prego_saas로 변경/이전된 경우, prego_saas 레포에 notify 워크플로가 있어야 함.
- 기존 prego-saas-app 레포가 아카이브·삭제되었다면, prego_saas 레포에 워크플로를 새로 설정.
4.2 GitHub Secret (prego_saas)
| Secret | 용도 |
|---|
| PREGODOCKER_DISPATCH_PAT | prego-docker 레포로 repository_dispatch 호출 시 인증. prego-docker가 private이면 repo scope 필요. |
- Secret 이름 변경 없음. prego_saas 레포 Settings → Secrets에 동일 이름으로 등록.
5. prego-docker GitHub Secrets
| Secret | 용도 | 변경 |
|---|
| DOCKERHUB_USERNAME | Docker Hub 로그인 | 없음 |
| DOCKERHUB_TOKEN | Docker Hub 푸시 | 없음 |
| PREGO_SAAS_APP_CLONE_TOKEN | prego_saas(private) clone 시 인증 | 이름 유지 권장. 기존 Secret 값은 prego_saas 레포 읽기 권한으로 갱신 필요. |
- prego_saas가 private이면, PAT에 Pregoi/prego_saas 레포 Contents 읽기 권한이 있어야 함.
- 기존 PAT가 prego-saas-app만 대상으로 했다면, prego_saas 레포 권한으로 재발급·갱신.
6. Prego 문서 업데이트
6.1 docs/runbook/prego-saas-app-trigger-prego-docker.md
| 항목 | 변경 |
|---|
| 제목 | prego_saas → prego-docker 이미지 재빌드 트리거 설정 (선택) |
| 레포 참조 | prego-saas-app → prego_saas |
| Secret 설명 | PREGODOCKER_DISPATCH_PAT: prego_saas 레포에 등록 |
| 복사 대상 | prego_saas/.github/workflows/notify-image-rebuild.yml |
| prego-docker Secret | PREGO_SAAS_APP_CLONE_TOKEN: prego_saas private 시 prego_saas 읽기 권한 |
6.2 docs/planning/IMPLEMENTATION_INDEX.md
| 항목 | 변경 |
|---|
| prego-saas-app 트리거 | prego_saas 트리거로 문구 수정 |
| prego-saas-app 프로비저너 | prego_saas 프로비저너 등 관련 문서 경로·이름 일괄 검토 |
6.3 기타 planning 문서
prego-docker-implementation-plan.md, prego-saas-app-event-to-docker-image-build-plan.md 등에서 prego-saas-app → prego_saas 참조 업데이트. (선택: 문서 정합성 유지 시)
7. 구현 순서 제안
| 순서 | 작업 | 대상 |
|---|
| 1 | apps.json url·branch 확인 및 수정 | prego-docker |
| 2 | build.yml Validate·Verify 단계 수정 | prego-docker |
| 3 | Dockerfile clone URL·디버그 경로 수정 | prego-docker |
| 4 | docs/prego-saas-app-notify-workflow.yml 주석 수정 | prego-docker |
| 5 | scripts/test-clone-*.sh 수정 (또는 신규 스크립트) | prego-docker |
| 6 | notify-image-rebuild.yml을 prego_saas 레포에 배치 | prego_saas |
| 7 | prego_saas에 PREGODOCKER_DISPATCH_PAT Secret 등록 | GitHub (prego_saas) |
| 8 | prego-docker PREGO_SAAS_APP_CLONE_TOKEN 갱신 (prego_saas 권한) | GitHub (prego-docker) |
| 9 | Runbook·planning 문서 업데이트 | Prego |
| 10 | 통합 검증 (push → dispatch → build → Verify) | 수동 |
8. 검증 체크리스트
| 단계 | 확인 항목 |
|---|
| 1. prego_saas push | prego_saas의 main/staging/develop 또는 v*.. tag push 시 notify-image-rebuild 워크플로 실행 |
| 2. repository_dispatch | prego-docker Actions에 custom_app_updated 이벤트 수신·build-and-push 실행 |
| 3. Validate tag | apps.json의 prego_saas 태그가 Pregoi/prego_saas에 존재하는지 GitHub API 검증 통과 |
| 4. Docker 빌드 | bench init 시 prego_saas clone·설치 성공, 이미지 빌드 완료 |
| 5. Verify image apps | ls apps/ 결과에 frappe, erpnext, hrms, crm, drive, prego_saas 포함 |
| 6. Docker Hub | iamfork/prego-repo:latest 등 태그 푸시 확인 |
9. 리스크·주의사항
| 항목 | 내용 |
|---|
| 레포 URL 불일치 | GitHub 레포가 Pregoi/prego_saas인지, Pregoi/prego-saas인지 확인 필요. 하이픈·언더스코어 구분. |
| 앱 폴더명 | bench get-app 시 생성되는 폴더명이 prego_saas인지 pyproject.toml/setup.py에서 확인. Verify 단계와 일치해야 함. |
| 기존 prego-saas-app 레포 | 아카이브·삭제 시 기존 notify 워크플로는 더 이상 동작하지 않음. prego_saas로 완전 이전 후 새 워크플로 설정 필수. |
| Secret 갱신 | PAT 만료·권한 변경 시 빌드·dispatch 실패. 정기 점검 권장. |
10. 요약
- prego-saas-app → prego_saas 변경에 따라 prego-docker의 apps.json, build.yml, Dockerfile, 스크립트, 문서를 prego_saas 기준으로 수정.
- prego_saas 레포에 notify-image-rebuild 워크플로 배치 및 PREGODOCKER_DISPATCH_PAT Secret 등록.
- prego-docker의 PREGO_SAAS_APP_CLONE_TOKEN은 prego_saas 레포 읽기 권한으로 갱신.
- 문서 (runbook, planning) 내 prego-saas-app 참조를 prego_saas로 업데이트.
- 검증: prego_saas push → prego-docker 빌드 → 이미지 푸시 → Verify image apps 통과까지 전 구간 확인.
다음 단계: 본 기획서 승인 후, §7 구현 순서에 따라 코드·설정·문서를 수정한다.