5.1 KiB
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 |
|
|
|
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 / 부모
- 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.
- 경험 후보:
dependenciesreport가 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
- Tag-only release의 빈틈 — mutable tag와 재빌드가 검증 대상/배포 대상의 동일성을 깨뜨린다.
- Build contract — strict dependency locks, SemVer+sha, reproducible archives, pinned JDK/base digest로 입력을 닫는다.
- Evidence DAG — High/Critical scan, SPDX SBOM, Cosign identity, SLSA exact builder를 promotion 전에 fan-in한다.
- Promotion과 rollback — 검증된 digest를 재빌드 없이 tag하고 manifest/SBOM/GHCR digest retention을 audit한다.
- 검증의 정직한 경계 — 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: 생성 전.