Forgejo 자체 러너 3대(windows/linux-builder/macos, 모두 host 모드)용 릴리스 CI 신설 — .forgejo/workflows/release.yml: 태그 v* → test 관문(전체 xUnit) → Windows 설치자(x64/arm64)·Android APK·linux/mac tar.gz(각 2 RID) 병렬 빌드 → draft 릴리스에 자산 직접 업로드. host 러너에 Node 불필요하도록 uses: 액션 없이 순수 run: 스텝(체크아웃도 git 직접), workflow_dispatch 리허설은 ci-rehearsal draft prerelease. build/ci/upload-release-asset.{ps1,sh}: draft 릴리스 확보(병렬 경합 대응)+동명 자산 교체 멱등 — Git Bash CRLF 로 자산 id 가 오염되어 삭제가 조용히 실패하던 결함 수정, 실 Forgejo API 대상 2회 실행 검증 완료. RELEASE_TOKEN 시크릿(PAT write:repository) 등록, 유령 Inno Setup 재설치(ALPACA-HOME), DEPLOYMENT_PLAN §5-bis 문서화
This commit is contained in:
parent
39a85ceb36
commit
7d9bc73cad
4 changed files with 325 additions and 1 deletions
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
> **범위**: Windows · macOS · Linux 데스크톱 + Android · iOS 모바일의 **빌드→서명→패키징→배포→업데이트** 전 체계.
|
||||
> GitHub Releases 를 단일 배포 소스로, GitHub Actions 로 전 아티팩트 자동 빌드.
|
||||
> **현행 운영(2026-08-17~)**: 자체 Forgejo + 자체 러너 3대가 주 채널 — §5-bis. GitHub 는 공개 시 백업 채널.
|
||||
>
|
||||
> **작성일**: 2026-08-15 · **관련 문서**: `BROWSER_FEATURES_PLAN.md`(v2) · `MOBILE_PLAN.md`(v1)
|
||||
> **조사 근거**: 전문 조사팀 20회 검색 + GitHub Releases API 로 툴체인 바이너리 실물 검증 (2026-08 기준)
|
||||
|
|
@ -31,7 +32,8 @@ GitHub Actions 대신(또는 보완으로) **사용자 소유 빌드머신 2대*
|
|||
- **빌드 명령**: `bash build/remote/build-remote.sh [linux|mac|all]` — git HEAD 소스를 머신에 전송 → Cli+Avalonia RID별 self-contained publish → 산출물 tar.gz 수집(`out/remote/<rid>/`).
|
||||
- **검증(2026-08-15)**: linux-x64·osx-arm64 양쪽 4산출물 생성(ELF/Mach-O arm64 매직 확인), **양 머신에서 네이티브 실행 E2E 통과** — HLS 테스트 스트림 64세그먼트 다운로드+병합 EXIT=0.
|
||||
- **운영 지식**: Avalonia 12.1 게터는 .NET 10 SDK 필요(8만 있으면 CS0103). 빌드머신 절전 시 SSH 끊김 → 재연결 감지 폴러 패턴으로 자동 재개 검증됨. Mac 무헤드 운용 시 "네트워크 접근 시 깨우기" 활성화 권장.
|
||||
- GitHub Actions(§5)는 리포지토리 공개 시 **자동 백업 채널**로 병행.
|
||||
- GitHub Actions(§5)는 리포지토리 공개 시 **자동 백업 채널**로 병행. 두 머신 모두 2026-08-17 부터
|
||||
Forgejo 러너(host 모드)로도 등록되어 CI 잡을 직접 수행한다(§5-bis).
|
||||
|
||||
## 1. 제품 × 아티팩트 매트릭스
|
||||
|
||||
|
|
@ -152,6 +154,31 @@ jobs:
|
|||
- 공개 저장소 기준 러너 무료(macOS 포함). 비공개 전환 시 macOS 10× 과금 유의.
|
||||
- QA 통과 후 Draft → Publish 수동 승격.
|
||||
|
||||
## 5-bis. CI/CD 현행 채널 — Forgejo Actions 자체 러너 (2026-08-17 가동)
|
||||
|
||||
저장소가 자체 Forgejo(`https://git.chanpaca.net/Video-Downloader/client`)로 이관되고 org 러너 3대가
|
||||
등록되어, §5(GitHub) 대신 **자체 러너로 전 아티팩트를 빌드·배포**한다. §5 는 저장소 GitHub 공개 시
|
||||
백업 채널로 유지(`.github/workflows/release.yml` 존치).
|
||||
|
||||
| 러너 | 머신 | 라벨(모두 host 모드) | 담당 잡 |
|
||||
|---|---|---|---|
|
||||
| `yunchan-win` | ALPACA-HOME (Windows 11, 개발 PC) | `windows`, `windows-amd64` | test 관문 · Windows 설치자(x64/arm64) · Android APK |
|
||||
| `kd-desktop` | ChanpacaLaptop (§0.5 `vd-linux`) | `linux-builder` | linux-x64/arm64 tar.gz |
|
||||
| `yunchan-mac` | Mac mini M2 (§0.5 `vd-mac`) | `macos`, `macos-arm64` | osx-arm64/x64 tar.gz |
|
||||
|
||||
- **워크플로**: `.forgejo/workflows/release.yml` — 태그 `v*` 푸시 → test(전체 xUnit) 관문 → 빌드 잡 병렬
|
||||
→ 각 잡이 draft 릴리스에 자산을 직접 업로드. host 러너에 Node 가 없어도 되도록 `uses:` 액션 없이
|
||||
순수 `run:` 스텝으로만 구성(체크아웃도 git 직접).
|
||||
- **업로드 헬퍼**: `build/ci/upload-release-asset.ps1`/`.sh` — draft 릴리스 확보(병렬 잡 경합 대응) +
|
||||
동명 자산 교체(재실행 멱등). Windows Git Bash 의 CRLF 오염 방지 처리 포함.
|
||||
- **리허설**: workflow_dispatch → `ci-rehearsal` draft prerelease 로 태그 없이 전 파이프라인 검증.
|
||||
- **시크릿**: `RELEASE_TOKEN`(Forgejo PAT, `write:repository`) — 릴리스 생성·자산 업로드. 체크아웃은 잡
|
||||
자동 토큰(`github.token`). `ANDROID_KEYSTORE/ALIAS/PASS` 등록 전까지 APK 는 디버그 서명.
|
||||
- **머신 전제**: win = SDK 8/10 + `maui-android` 워크로드 + JDK 17 + Inno Setup 6 ·
|
||||
linux/mac = `~/.dotnet` SDK 8.0.424 + 10.0.400 (§0.5).
|
||||
- **갭**: §6 자동 업데이트 v1(`UpdateChecker`)은 GitHub Releases API 를 폴링하므로 GitHub 공개 전까지
|
||||
미동작 — Forgejo Releases API(`/repos/{owner}/{repo}/releases/latest`, 동일 형태) 대응은 후속 항목.
|
||||
|
||||
## 6. 업데이트 체계
|
||||
|
||||
| 대상 | 방식 |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue