Files
service-catalog/scripts/pipeline/Dockerfile
T
wbsong111 7d36f4fddb SBOM_PIPELINE_IMAGE 를 docker.io/paasup 으로 옮긴다 (#30)
파이프라인 실행 이미지가 개인 네임스페이스(docker.io/wbsong111)를 가리키고 있었다. 카탈로그의
다른 자체 빌드 이미지는 2026-08-03 에 전부 docker.io/paasup 으로 이전됐는데 이것만 남아 있었다 —
"카탈로그가 배포하는 이미지가 아니라 CI 도구" 라 이전 대상에서 빠졌던 것이다.

  before  docker.io/wbsong111/sbom-pipeline:latest
  after   docker.io/paasup/sbom-pipeline:20260820

롤링 태그를 쓰지 않는다
---------------------
:latest 를 유지하지 않고 날짜 태그로 갔다. 이 Dockerfile 은 helm/trivy 를 **빌드 시점 최신으로
설치**하므로 같은 파일이 매번 다른 이미지를 낸다 — 태그가 "무엇으로 스캔했는지" 의 기록이어야
한다. Repo Variable 이 전체 ref 를 담으므로 고정 태그를 써도 워크플로 수정이 필요 없다.

이번 이미지가 담은 것: helm v3.21.4 · trivy 0.74.0 · python 3.13.5 · git 2.47.3

검증
----
  push        docker.io/paasup/sbom-pipeline:20260820 (linux/amd64)
  변수 갱신    gh variable set SBOM_PIPELINE_IMAGE
  CI 실제 동작 helm-catalog-sbom limit=3 실행 → 전체 success
              (Preflight 도구 확인 · 인벤토리 추출 · SBOM · 스캔 · 게이트 판정 전부 통과)

문서의 낡은 참조 4곳(doc/sbom-pipeline.md)과 Dockerfile 헤더 절차, sbom.yml 주석 예시를 고쳤다.
Dockerfile 헤더에는 왜 :latest 를 쓰지 않는지도 적었다.

Closes #30

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 16:55:55 +09:00

40 lines
1.9 KiB
Docker

# =============================================================================
# SBOM 파이프라인 실행 이미지
#
# .github/workflows/sbom.yml 의 `container:` (Repo Variable SBOM_PIPELINE_IMAGE)
# 로 사용되는 이미지. scripts/pipeline/*.sh 를 컨테이너 내부에서 직접 실행한다.
# 상세: doc/sbom-pipeline.md
#
# 도구: helm(v3) + trivy + python3 + bash + git
# 베이스: debian(glibc) — GitHub Actions container 안에서 node 기반 액션
# (actions/checkout, upload-artifact)이 동작하려면 glibc 필요.
# (alpine/musl 은 node 실행 실패 가능 → debian 사용)
#
# 빌드 & 푸시 (amd64 필수 — GitHub 러너가 amd64):
# docker buildx build --platform linux/amd64 \
# -t docker.io/paasup/sbom-pipeline:$(date -u +%Y%m%d) -f scripts/pipeline/Dockerfile --push scripts/pipeline
# # 이후: gh variable set SBOM_PIPELINE_IMAGE --body docker.io/paasup/sbom-pipeline:<태그>
#
# 롤링 태그(:latest)를 쓰지 않는다 — helm/trivy 를 빌드 시점 최신으로 설치하므로 같은
# Dockerfile 이 매번 다른 이미지를 낸다. 날짜 태그가 "무엇으로 스캔했는지" 의 기록이다.
# 변수가 전체 ref 를 담으므로 고정 태그를 써도 워크플로 수정이 필요 없다.
# =============================================================================
FROM debian:stable-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
curl ca-certificates git python3 bash \
&& rm -rf /var/lib/apt/lists/*
# helm v3
RUN curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# trivy (최신)
RUN curl -fsSL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh \
| sh -s -- -b /usr/local/bin
# 설치 확인 (빌드 시 도구 누락 조기 감지)
RUN helm version --short && trivy --version | head -1 && python3 --version && git --version
ENTRYPOINT []
CMD ["bash"]