Files
llm-wiki/raw/blog-topics/digest-first-java-release-pipeline-2026-06-21.md
T

5.1 KiB

title, source_type, status, related_branches, related_projects, tags, created, status_label, target_audience, inspiration_url, archive_url
title source_type status related_branches related_projects tags created status_label target_audience inspiration_url archive_url
blog-topic / digest-first-java-release-pipeline blog-topic raw
feature-build-release-supply-chain-contract
ca-tmpl
blog-topic
ca-tmpl
ci-cd
gradle
docker
supply-chain
reproducible-builds
2026-06-21 ready-for-canonical backend-engineer

blog-topic: digest-first-java-release-pipeline

Layer: raw/blog-topics/ — 실제 Java 21/Gradle 멀티모듈 release pipeline 구현에서 나온 글감 원석.

Parent / 부모

트리거 / Trigger

글감 / Topic seed

  • 한 문장 요지: 재현 가능한 JAR부터 digest-bound SBOM·Cosign·SLSA 검증과 rollback manifest까지 하나의 release-blocking DAG로 묶어야 mutable tag가 공급망 SSOT가 되는 일을 막을 수 있다.
  • 예상 제목 후보:
    • Java 릴리스를 태그가 아니라 Digest로 승격하는 공급망 파이프라인
    • Gradle Lock부터 SLSA까지: 재빌드 없는 컨테이너 릴리스 설계

핵심 주장 후보 / Claim candidates

  • 사실 후보:
    • Gradle archive timestamp/order/mode와 JDK pin을 고정한 두 clean build에서 같은 SHA-256을 얻었다. 근거: raw/branch-notes/feature-build-release-supply-chain-contract D10, §구현 결과.
    • Cosign signer identity/issuer와 SLSA exact builder ID 검증을 통과한 digest만 version tag로 promotion하도록 DAG를 배선했다. 근거: 같은 branch D4, D7, D12, D13.
  • 경험 후보:
    • dependencies report가 lock 누락을 출력하고도 exit 0인 fail-open을 발견해 실제 resolution task와 negative lock-drift test로 교체했다. 근거: 같은 branch §마주친 문제.
    • rollback audit가 release asset 이름뿐 아니라 manifest의 source revision/image digest와 GHCR digest 일치까지 검증하도록 보강했다. 근거: 같은 branch D11, §구현 결과.
  • 의견/해석 후보:
    • 공급망 파이프라인의 핵심은 도구 수가 아니라, immutable identity가 모든 gate와 rollback 경로를 관통하도록 만드는 것이다.

Outline seed

  1. Tag-only release의 빈틈 — mutable tag와 재빌드가 검증 대상/배포 대상의 동일성을 깨뜨린다.
  2. Build contract — strict dependency locks, SemVer+sha, reproducible archives, pinned JDK/base digest로 입력을 닫는다.
  3. Evidence DAG — High/Critical scan, SPDX SBOM, Cosign identity, SLSA exact builder를 promotion 전에 fan-in한다.
  4. Promotion과 rollback — 검증된 digest를 재빌드 없이 tag하고 manifest/SBOM/GHCR digest retention을 audit한다.
  5. 검증의 정직한 경계 — local fixture와 live GitHub OIDC/Rekor/GHCR 증거를 분리한다.

Canonical 전환 후보 / Canonical extraction candidates

  • wiki/projects/ca-tmpl/build-release-supply-chain.md 후보:
    • ca-tmpl에 실제 적용된 release DAG, lock task, manifest/retention audit.
  • wiki/concepts/digest-first-release-promotion.md 후보:
    • immutable digest 중심 verification/promotion/rollback 일반 패턴.
  • 필요한 추가 검증:
    • GitHub release candidate tag로 OIDC/Rekor/GHCR live pipeline 실행.
    • generated SBOM과 Gradle resolved dependency 비교.

Sources / 근거 후보

미해결 / Unknown

  • 아직 확인해야 할 사실: GitHub-hosted live provenance payload, Rekor entry, GHCR referrer retention.
  • 과장하면 안 되는 부분: local workflow/static/fixture 검증을 production release 성공으로 표현하지 않는다.
  • 블로그로 쓰기 전에 필요한 canonical 정제: branch 결과를 project/concept canonical로 승격하고 live CI evidence를 별도 등급으로 병합한다.

Decision / 처리 결정

  • 액션: promote-to-canonical
  • 이유: wiki/projects/ca-tmpl/devops-ci-supply-chain-dx.md 에 digest-first release pipeline / supply-chain DAG 글감으로 반영한다.
  • 다음 단계: live release evidence 확보 전까지 production release 성공으로 표현하지 않는다.