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

4.1 KiB

전체 설치 스크립트 다운로드 안정성 강화 계획 (HARDEN-INSTALL-LINKS-IMP-PLAN)

1. 개요

외부 오픈소스 저장소의 릴리스 정책 변경(서브 크레이트 태그 발행, 빌드 진행 중 빈 에셋 상태, 파일명 변경) 및 GitHub API Rate Limit(시간당 60회 제한)으로 인해 설치 스크립트가 실패하는 문제를 방지하기 위해 모든 설치 스크립트(install-*.sh, install-*.ps1)에 **3단계 방어 로직(Asset-aware Lookup + Fallback Tag + URL Fallback)**을 일괄 적용합니다.

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: 실행 계획 수립

  • 작업 계획서(VIBE-WORK/261031/HARDEN-INSTALL-LINKS-IMP-PLAN.md) 작성

단계 2: Unix / macOS용 Bash 설치 스크립트(.sh) 방어 로직 적용

  • install-all-smi.sh: 에셋 존재 검증, User-Agent 헤더, 다운로드 실패 시 FALLBACK_VERSION 자동 재시도 적용
  • install-bottom.sh: assets 배열 내 현재 플랫폼 파일(bottom_${triple}.${ext}) 존재 여부 확인 및 FALLBACK_TAG="0.12.3" / "nightly" 폴백 적용
  • install-ctop.sh: assets 존재 여부 필터링 및 FALLBACK_TAG="v0.7.7" 폴백 다운로드 적용
  • install-dua.sh: 다운로드 실패 시 FALLBACK_TAG="v2.46.0" 자동 재시도 보강
  • install-helix.sh: /releases 목록에서 assets가 존재하는 최신 릴리스 탐색 및 FALLBACK_TAG="25.07.1" 폴백 적용
  • install-lazydocker.sh: assets 존재 여부 필터링 및 FALLBACK_TAG="v0.25.2" 폴백 다운로드 적용
  • install-lazygit.sh: assets 존재 여부 필터링, 중복 함수 정리 및 FALLBACK_TAG="v0.61.1" 폴백 다운로드 적용
  • install-ocr.sh: 에셋 존재 검증 및 다운로드 실패 시 FALLBACK_VERSION="v1.3.19" 자동 재시도 적용
  • install-ttyd.sh: 에셋 존재 검증 및 FALLBACK_TAG="1.7.7" 폴백 다운로드 적용

단계 3: Windows용 PowerShell 설치 스크립트(.ps1) 방어 로직 적용

  • install-all-smi.ps1: 에셋 검증 및 다운로드 실패 시 FALLBACK_VERSION 자동 재시도 적용
  • install-bottom.ps1: 에셋 존재 검증 및 FALLBACK_TAG 폴백 다운로드 적용
  • install-ctop.ps1: 에셋 존재 검증 및 FALLBACK_TAG="v0.7.7" 폴백 다운로드 적용
  • install-dua.ps1: 다운로드 실패 시 FALLBACK_TAG="v2.46.0" 자동 재시도 보강
  • install-helix.ps1: API 실패 또는 에셋 미발견 시 FALLBACK_TAG="25.07.1" 폴백 다운로드 적용
  • install-lazydocker.ps1: 에셋 존재 검증 및 FALLBACK_TAG="v0.25.2" 폴백 다운로드 적용
  • install-lazygit.ps1: Git for Windows 및 lazygit 에셋 검증, FALLBACK_TAG="v0.61.1" 폴백 다운로드 적용
  • install-ocr.ps1: 다운로드 실패 시 FALLBACK_VERSION="v1.3.19" 자동 재시도 적용
  • install-ttyd.ps1: API 실패 또는 에셋 미발견 시 FALLBACK_TAG="1.7.7" 폴백 다운로드 적용

단계 4: 문법 검증, 완료 보고서 작성 및 Git 푸시

  • 모든 .sh 스크립트 bash -n 문법 검사 통과 확인
  • 완료 보고서(VIBE-WORK/261031/HARDEN-INSTALL-LINKS-PHASE01.md) 작성
  • uv tool run --from graphifyy graphify update . 실행
  • Git commit 및 push