# CloudNativePG 오퍼레이터 — 소스 컴파일형 자체 빌드 (유일한 변종) # # build-hardened-image.sh 가 source 한다. BUILD_ARGS 에 나열한 이름만 --build-arg 로 넘어간다. # 이 이미지는 소스를 직접 컴파일하므로 "베이스 OS" 선택지가 없다 — BASE_OS=source 로 호출한다: # IMAGE=cloudnative-pg BASE_OS=source bash scripts/build/build-hardened-image.sh # # 왜 자체 빌드하는가·CVE 근거 → README.md # 결정 → doc/decisions/0002-cloudnative-pg-operator-self-build.md DOCKERFILE=source.Dockerfile TARGET=final TAG_SLUG=security # build-hardened-image.sh 가 태그·verify.sh 전달용으로 요구하는 범용 필수값. # 스톡 1.30.0 과는 태그 슬러그(TAG_SLUG=security)로 구분되므로 버전 문자열 자체는 그대로 둔다. APP_VERSION=1.30.0 # release-1.30 브랜치 HEAD, 2026-07-30 확인 — CVE-2026-39822(stdlib)·CVE-2026-56852(x/text)· # GHSA-hrxh-6v49-42gf(grpc) 가 모두 이 커밋에 백포트돼 있다. 갱신할 때는 release-1.30 의 # 최신 커밋으로 사람이 다시 고른다(자동 추적하지 않음 — cnpg-postgresql 의 PGDG 버전처럼 # 사람이 트리거해야 하는 갱신 축). SOURCE_COMMIT=4463551204bc5cdb5af05b2c60a2d6b58ce9ff6a # go.mod 의 `go 1.26.5` 요구를 만족하는 공식 golang 이미지 태그. 이 이미지는 builder # 스테이지에서만 쓰이고 최종 이미지에는 남지 않는다. # # 값은 go.mod 최소 요구가 아니라 **stdlib 차단 CVE 를 해소하는 지점**으로 정한다 — 소스를 # 안 바꿔도 CVE 데이터가 갱신되면 여기가 올라간다. 손으로 고르지 않는다: # python3 scripts/build/suggest-go-upgrades.py --reports --image cloudnative-pg GO_BUILDER_TAG=1.26.6-trixie # 최종 런타임 베이스 — 카탈로그는 SUSE BCI 하나만 쓴다(decisions/0001). bci-base 대신 # 가장 가벼운 bci-micro 를 쓴다(패키지 매니저 없음, bash·coreutils 는 있음). RUNTIME_BASE=registry.suse.com/bci/bci-micro:15.7 BUILD_ARGS="SOURCE_COMMIT GO_BUILDER_TAG APP_VERSION RUNTIME_BASE"