Files
install-sh/VIBE-WORK/261031/HARDEN-INSTALL-LINKS-IMP-PLAN.md

55 lines
4.1 KiB
Markdown

# 전체 설치 스크립트 다운로드 안정성 강화 계획 (HARDEN-INSTALL-LINKS-IMP-PLAN)
## 1. 개요
외부 오픈소스 저장소의 릴리스 정책 변경(서브 크레이트 태그 발행, 빌드 진행 중 빈 에셋 상태, 파일명 변경) 및 GitHub API Rate Limit(시간당 60회 제한)으로 인해 설치 스크립트가 실패하는 문제를 방지하기 위해 모든 설치 스크립트(`install-*.sh`, `install-*.ps1`)에 **3단계 방어 로직(Asset-aware Lookup + Fallback Tag + URL Fallback)**을 일괄 적용합니다.
```mermaid
flowchart TD
Start([설치 스크립트 실행]) --> API[GitHub Releases API 조회<br/>User-Agent 헤더 포함]
API --> CheckAPI{API 응답 성공?}
CheckAPI -- Yes --> AssetSearch["릴리스 목록에서 현재 플랫폼 에셋이<br/>실제로 존재하는(assets > 0) 최신 릴리스 탐색"]
AssetSearch --> FoundAsset{에셋 URL 발견?}
FoundAsset -- Yes --> DownloadPrimary[1차: 에셋 URL 다운로드 시도]
FoundAsset -- No --> FallbackBuild[2차: FALLBACK_TAG 기반 URL 생성]
CheckAPI -- No (Rate Limit 등) --> FallbackBuild
DownloadPrimary --> CheckDL{다운로드 성공?}
CheckDL -- Yes --> ExtractInstall[압축 해제 및 바이너리 설치]
CheckDL -- No (404 등) --> FallbackBuild
FallbackBuild --> DownloadFallback[FALLBACK_TAG URL로 재시도]
DownloadFallback --> ExtractInstall
ExtractInstall --> Done([설치 완료])
```
## 2. 작업 단계 및 체크리스트
### 단계 1: 실행 계획 수립
- [x] 작업 계획서(`VIBE-WORK/261031/HARDEN-INSTALL-LINKS-IMP-PLAN.md`) 작성
### 단계 2: Unix / macOS용 Bash 설치 스크립트(`.sh`) 방어 로직 적용
- [x] `install-all-smi.sh`: 에셋 존재 검증, User-Agent 헤더, 다운로드 실패 시 `FALLBACK_VERSION` 자동 재시도 적용
- [x] `install-bottom.sh`: `assets` 배열 내 현재 플랫폼 파일(`bottom_${triple}.${ext}`) 존재 여부 확인 및 `FALLBACK_TAG="0.12.3"` / `"nightly"` 폴백 적용
- [x] `install-ctop.sh`: `assets` 존재 여부 필터링 및 `FALLBACK_TAG="v0.7.7"` 폴백 다운로드 적용
- [x] `install-dua.sh`: 다운로드 실패 시 `FALLBACK_TAG="v2.46.0"` 자동 재시도 보강
- [x] `install-helix.sh`: `/releases` 목록에서 `assets`가 존재하는 최신 릴리스 탐색 및 `FALLBACK_TAG="25.07.1"` 폴백 적용
- [x] `install-lazydocker.sh`: `assets` 존재 여부 필터링 및 `FALLBACK_TAG="v0.25.2"` 폴백 다운로드 적용
- [x] `install-lazygit.sh`: `assets` 존재 여부 필터링, 중복 함수 정리 및 `FALLBACK_TAG="v0.61.1"` 폴백 다운로드 적용
- [x] `install-ocr.sh`: 에셋 존재 검증 및 다운로드 실패 시 `FALLBACK_VERSION="v1.3.19"` 자동 재시도 적용
- [x] `install-ttyd.sh`: 에셋 존재 검증 및 `FALLBACK_TAG="1.7.7"` 폴백 다운로드 적용
### 단계 3: Windows용 PowerShell 설치 스크립트(`.ps1`) 방어 로직 적용
- [x] `install-all-smi.ps1`: 에셋 검증 및 다운로드 실패 시 `FALLBACK_VERSION` 자동 재시도 적용
- [x] `install-bottom.ps1`: 에셋 존재 검증 및 `FALLBACK_TAG` 폴백 다운로드 적용
- [x] `install-ctop.ps1`: 에셋 존재 검증 및 `FALLBACK_TAG="v0.7.7"` 폴백 다운로드 적용
- [x] `install-dua.ps1`: 다운로드 실패 시 `FALLBACK_TAG="v2.46.0"` 자동 재시도 보강
- [x] `install-helix.ps1`: API 실패 또는 에셋 미발견 시 `FALLBACK_TAG="25.07.1"` 폴백 다운로드 적용
- [x] `install-lazydocker.ps1`: 에셋 존재 검증 및 `FALLBACK_TAG="v0.25.2"` 폴백 다운로드 적용
- [x] `install-lazygit.ps1`: Git for Windows 및 lazygit 에셋 검증, `FALLBACK_TAG="v0.61.1"` 폴백 다운로드 적용
- [x] `install-ocr.ps1`: 다운로드 실패 시 `FALLBACK_VERSION="v1.3.19"` 자동 재시도 적용
- [x] `install-ttyd.ps1`: API 실패 또는 에셋 미발견 시 `FALLBACK_TAG="1.7.7"` 폴백 다운로드 적용
### 단계 4: 문법 검증, 완료 보고서 작성 및 Git 푸시
- [x] 모든 `.sh` 스크립트 `bash -n` 문법 검사 통과 확인
- [x] 완료 보고서(`VIBE-WORK/261031/HARDEN-INSTALL-LINKS-PHASE01.md`) 작성
- [x] `uv tool run --from graphifyy graphify update .` 실행
- [x] Git commit 및 push