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

92 lines
5.1 KiB
Markdown

---
title: blog-topic / digest-first-java-release-pipeline
source_type: blog-topic
status: raw
related_branches: [feature-build-release-supply-chain-contract]
related_projects: [ca-tmpl]
tags: [blog-topic, ca-tmpl, ci-cd, gradle, docker, supply-chain, reproducible-builds]
created: 2026-06-21
status_label: ready-for-canonical
target_audience: backend-engineer
inspiration_url:
archive_url:
---
# blog-topic: digest-first-java-release-pipeline
> Layer: `raw/blog-topics/` — 실제 Java 21/Gradle 멀티모듈 release pipeline 구현에서 나온 글감 원석.
## Parent / 부모
- [[raw/branch-notes/feature-build-release-supply-chain-contract]] — digest-first build/sign/verify/promotion과 rollback audit를 구현한 작업.
## 트리거 / Trigger
- 트리거 유형: `branch-work`
- 트리거 날짜: 2026-06-21
- 트리거 연결 노트: [[raw/branch-notes/feature-build-release-supply-chain-contract]].
## 글감 / 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 / 근거 후보
- [[raw/branch-notes/feature-build-release-supply-chain-contract]] — 구현 결정 D1~D13과 local evidence.
- [[raw/errors/sandbox-build-verification-boundaries-2026-06-21]] — verification 경계와 안전한 대체.
- [[raw/interviews/digest-first-supply-chain-release-gates]] — 설계 질문과 답변 경계.
- [[raw/official-docs/supply-chain-cosign-keyless-sigstore]] — Cosign keyless 근거.
- [[raw/official-docs/supply-chain-slsa-provenance-framework]] — SLSA provenance 근거.
- [[raw/official-docs/gradle-reproducible-archives-working-with-files]] — reproducible archive 근거.
## 미해결 / 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 성공으로 표현하지 않는다.
## Related / 관련
- 관련 branch: [[raw/branch-notes/feature-build-release-supply-chain-contract]].
- 관련 error: [[raw/errors/sandbox-build-verification-boundaries-2026-06-21]].
- 관련 interview prep: [[raw/interviews/digest-first-supply-chain-release-gates]].
- derived blog: 생성 전.