fix(sbom-ci): auth docker.getcollate.io (Docker Hub proxy) + raise trivy timeout
openmetadata 실패의 진짜 원인은 참조 오류가 아니라 docker.getcollate.io(Docker Hub 프록시)의 익명 pull rate limit(TOOMANYREQUESTS)였음. 인증 config 에 getcollate 를 추가(Docker Hub 자격증명)하고, 대용량 이미지 분석을 위해 trivy 타임아웃 기본값을 10m→15m(TRIVY_TIMEOUT). 로컬 검증: 인증+타임아웃으로 openmetadata server SBOM 생성 성공(655 comp). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
# RETRIES 실패 이미지 재시도 횟수 (기본 1)
|
||||
# LIMIT 대상 이미지 수 상한 (기본 0 = 전체)
|
||||
# TRIVY_CACHE_DIR trivy 캐시 디렉토리 (미설정 시 trivy 기본 ~/.cache/trivy)
|
||||
# TRIVY_TIMEOUT 이미지당 분석 타임아웃 (기본 15m — 대용량 이미지 여유)
|
||||
# MERGE=1 cyclonedx CLI 가 있으면 catalog.cdx.json 병합 생성 (선택)
|
||||
# 사설 레지스트리 인증: trivy 네이티브 방식 사용 —
|
||||
# - 단일 레지스트리: TRIVY_USERNAME / TRIVY_PASSWORD
|
||||
@@ -44,6 +45,7 @@ PARALLEL="${PARALLEL:-3}"
|
||||
RETRY_PARALLEL="${RETRY_PARALLEL:-1}"
|
||||
RETRIES="${RETRIES:-1}"
|
||||
LIMIT="${LIMIT:-0}"
|
||||
TRIVY_TIMEOUT="${TRIVY_TIMEOUT:-15m}" # 대용량 이미지(예: openmetadata) 분석 여유
|
||||
[ -n "${TRIVY_CACHE_DIR:-}" ] && export TRIVY_CACHE_DIR # trivy 가 네이티브로 인식
|
||||
|
||||
ts() { date -u +%Y-%m-%dT%H:%M:%SZ; }
|
||||
@@ -58,7 +60,7 @@ if [ "${1:-}" = "--gen-one" ]; then
|
||||
# --cache-backend memory : 분석 캐시를 메모리에 두어 공유 캐시 디렉토리의 bolt 잠금 충돌 방지(병렬 안전).
|
||||
# --skip-db-update : DB 는 메인 모드에서 1회 워밍했으므로 읽기만.
|
||||
if trivy image --quiet --cache-backend memory --skip-db-update \
|
||||
--format cyclonedx --timeout 10m --output "$out" "$img" 2>"$out.err"; then
|
||||
--format cyclonedx --timeout "$TRIVY_TIMEOUT" --output "$out" "$img" 2>"$out.err"; then
|
||||
dur=$(( $(date +%s) - t0 ))
|
||||
if [ -s "$out" ]; then line="$(printf '%s\tOK\t%s\t%s' "$img" "$dur" "$out")"
|
||||
else rm -f "$out"; line="$(printf '%s\tERROR:empty-sbom\t%s\t' "$img" "$dur")"; fi
|
||||
|
||||
Reference in New Issue
Block a user