feat(tdd): implement SSOT canon, AGENTS.md, ultra-strict design audit, E2E scenarios, and Forgejo release pipeline
Some checks are pending
Forgejo Release / build-and-release (push) Waiting to run
Some checks are pending
Forgejo Release / build-and-release (push) Waiting to run
This commit is contained in:
parent
24aa70ae32
commit
4cd9c678c0
25 changed files with 1684 additions and 238 deletions
83
docs/tdd/05_RELEASE_AND_DEPLOYMENT.md
Normal file
83
docs/tdd/05_RELEASE_AND_DEPLOYMENT.md
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
# 05. 릴리즈 엔지니어링 & 배포 체계 (Release & Deployment to git.chanpaca.net)
|
||||
|
||||
이 문서는 **Everything2Everything**의 무결점 배포를 위한 **릴리즈 엔지니어링, 시맨틱 버전 태깅, 그리고 Forgejo(`git.chanpaca.net`) 배포 파이프라인 규약**을 정의한다.
|
||||
|
||||
---
|
||||
|
||||
## 1. 배포 인프라 및 아키텍처 개요
|
||||
|
||||
### 1.1 대상 저장소 (Target Remote)
|
||||
* **플랫폼**: Forgejo (자체 호스팅 Git 서버)
|
||||
* **도메인**: `https://git.chanpaca.net`
|
||||
* **원격 저장소 경로**: `https://git.chanpaca.net/yunchan/Everything2Everything.git`
|
||||
* **SSH 경로**: `ssh://git@git.chanpaca.net:2222/yunchan/Everything2Everything.git`
|
||||
* **인증 방식**: Windows Credential Manager에 등록된 `yunchan` 계정 자격증명 및 API 토큰.
|
||||
|
||||
### 1.2 배포 산출물 (Dual Binary Deliverables)
|
||||
1. **Portable EXE (`publish/Everything2Everything.exe`)**:
|
||||
- .NET 9 프레임워크 의존형 x64 단일 실행 파일.
|
||||
- 우클릭 컨텍스트 메뉴 자체 등록/해제 (`.\Everything2Everything.exe register`) 지원.
|
||||
- 무설치 초경량 배포용.
|
||||
2. **MSIX 패키지 (`packaging/dist/Everything2Everything-x64.msix`)**:
|
||||
- Windows 11 Fluent 2 메인 메뉴(Shift 없이 바로 노출) 지원용 IExplorerCommand DLL 동봉 패키지.
|
||||
- 개발자 인증서 서명 패키지.
|
||||
|
||||
---
|
||||
|
||||
## 2. 릴리즈 게이트 (Release Gates)
|
||||
|
||||
배포 스크립트 실행 시 다음 4단계 게이트를 하나라도 통과하지 못하면 릴리즈는 즉각 중단(Aborted)된다:
|
||||
|
||||
```
|
||||
[ Gate 1: Test Suite 100% Pass ]
|
||||
│ dotnet test Everything2Everything.Tests.csproj (실패 0개, 경고 0개)
|
||||
▼
|
||||
[ Gate 2: Version Synchronization ]
|
||||
│ Package.appxmanifest, App.csproj, Git Tag 버전 일치 확인 (예: 1.0.6.0 <-> v1.0.6)
|
||||
▼
|
||||
[ Gate 3: Release Build & Artifacts ]
|
||||
│ dotnet publish (Release win-x64) + BuildMsix.ps1 산출물 생성 확인
|
||||
▼
|
||||
[ Gate 4: Git Tag & Forgejo Release ]
|
||||
│ git tag 생성 -> git.chanpaca.net 푸시 -> Forgejo API 릴리즈 등록 및 바이너리 첨부
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 시맨틱 버저닝 (Semantic Versioning 2.0.0)
|
||||
|
||||
모든 릴리즈 태그는 `vMAJOR.MINOR.PATCH` 형식을 엄격히 준수한다:
|
||||
* **MAJOR**: 아키텍처 전면 개편 또는 호환되지 않는 CLI/매트릭스 변경.
|
||||
* **MINOR**: 신규 변환 프로바이더 추가, 새로운 GUI 기능 추가.
|
||||
* **PATCH**: 버그 수정, 디자인/정렬 결함 패치, 성능 최적화.
|
||||
|
||||
### 버전 동기화 대상 파일
|
||||
1. `packaging/Package.appxmanifest`: `<Identity Version="1.0.6.0" ... />`
|
||||
2. `src/Everything2Everything.App/Everything2Everything.App.csproj`: `<Version>1.0.6</Version>`
|
||||
3. `docs/ssot/_data/meta.json` 또는 릴리즈 노트
|
||||
|
||||
---
|
||||
|
||||
## 4. 자동화 배포 스크립트 (`tools/Publish-Release.ps1`)
|
||||
|
||||
릴리즈 엔지니어링은 단 1줄의 PowerShell 스크립트로 전자동 수행된다:
|
||||
|
||||
```powershell
|
||||
# 사용법 예시: 버전 1.0.6 릴리즈 배포
|
||||
pwsh tools/Publish-Release.ps1 -Version "1.0.6" -ReleaseNotes "디자인 감사 TDD 적용 및 UI 수직 정렬/패딩 결함 수정"
|
||||
```
|
||||
|
||||
스크립트의 동작 절차:
|
||||
1. `git status` 작업 디렉터리 청결 상태 확인.
|
||||
2. `dotnet test` 전체 테스트 스위트 실행.
|
||||
3. 버전 번호 자동 동기화 (`1.0.6.0` / `1.0.6`).
|
||||
4. Portable EXE 빌드 및 MSIX 패키징.
|
||||
5. 로컬 커밋 및 Git 태그 `v1.0.6` 생성.
|
||||
6. `origin`(GitHub) 및 `forgejo`(`https://git.chanpaca.net/yunchan/Everything2Everything.git`) 양방향 푸시.
|
||||
7. Forgejo REST API를 호출하여 태그 기반 정식 릴리즈 생성 및 바이너리 업로드.
|
||||
|
||||
---
|
||||
|
||||
## 5. Forgejo Actions 워크플로 (`.forgejo/workflows/release.yaml`)
|
||||
|
||||
원격 서버 자체 CI/CD를 위한 워크플로를 구성하여, 태그 푸시(`v*`) 시 원격 러너에서도 자동으로 빌드와 검증이 수행되도록 보장한다.
|
||||
Loading…
Add table
Add a link
Reference in a new issue