2.2 KiB
2.2 KiB
전체 설치 스크립트 다운로드 안정성 강화 완료 보고서 (HARDEN-INSTALL-LINKS-PHASE01)
1. 개요
외부 오픈소스 저장소들의 릴리스 정책 변화(서브 크레이트 릴리스 혼재, CI 빌드 중 빈 에셋 상태, 파일명 변경)나 GitHub API Rate Limit(시간당 60회 제한)이 발생하더라도 모든 설치 스크립트가 중단 없이 정상 설치되도록 3단계 방어 로직을 전체 스크립트(install-*.sh, install-*.ps1)에 일괄 적용하였습니다.
flowchart LR
Step1["1단계: 에셋 존재 검증<br/>(assets 배열이 비어있지 않은<br/>릴리스만 선택)"] --> Step2["2단계: API 폴백<br/>(API Rate Limit/오류 시<br/>검증된 FALLBACK_TAG 사용)"]
Step2 --> Step3["3단계: 다운로드 폴백<br/>(최신 URL 404/실패 시<br/>FALLBACK_TAG URL로 자동 재시도)"]
2. 도구별 적용 내역 및 Fallback 버전
| 도구 | 대상 스크립트 | 에셋 필터링 조건 | 검증된 Fallback 태그 |
|---|---|---|---|
| all-smi | install-all-smi.{sh,ps1} |
assets.length > 0 |
v0.25.0 |
| bottom | install-bottom.{sh,ps1} |
assets.length > 0 (Nightly & Stable) |
0.12.3 |
| ctop | install-ctop.{sh,ps1} |
prerelease == false && assets.length > 0 |
v0.7.7 |
| dua | install-dua.{sh,ps1} |
prerelease == false && startswith("v") && assets.length > 0 |
v2.46.0 |
| Helix | install-helix.{sh,ps1} |
prerelease == false && assets.length > 0 |
25.07.1 |
| lazydocker | install-lazydocker.{sh,ps1} |
prerelease == false && assets.length > 0 |
v0.25.2 |
| lazygit | install-lazygit.{sh,ps1} |
prerelease == false && assets.length > 0 |
v0.61.1 |
| ocr | install-ocr.{sh,ps1} |
assets.length > 0 |
v1.3.19 |
| ttyd | install-ttyd.{sh,ps1} |
assets.length > 0 |
1.7.7 |
3. 추가 개선 사항
jq와python3가 모두 없는 최소 리눅스 컨테이너 환경에서도grep/sed폴백 및FALLBACK_TAG를 통해 설치가 중단되지 않도록 개선했습니다.- 모든 GitHub API 요청에
User-Agent헤더와 타임아웃(--connect-timeout 10/-TimeoutSec 15)을 명시하여 무한 대기 현상을 방지했습니다.