Skip to content

chore(build): 빌드·테스트 클래스패스 bouncycastle 하한을 1.84 로 상향 (closes 921, 983, 984) [base: develop] - #922

Merged
OnlyReadOneBook merged 6 commits into
developfrom
chore/921
Aug 24, 2026
Merged

OnlyReadOneBook merged 6 commits into
developfrom
chore/921

Conversation

@OnlyReadOneBook

@OnlyReadOneBook OnlyReadOneBook commented Aug 23, 2026 •

Copy link
Copy Markdown
Collaborator

변경 요약

릴리스 PR #916 dependency-review 가 지적한 critical(GHSA-574f-3g2m-x479, bcprov 1.80)을 포함해, 빌드·테스트 클래스패스의 bouncycastle 을 constraint 로 1.84 이상 보장한다. 유입 경로 실측·정정(#916 코멘트의 foojay 귀속은 오진 — 실제는 Robolectric 4.15.1 → bcprov 1.80, AGP 9.2.1 → 1.79·bcpkix·bcutil, 관련 GHSA 3건 모두 1.84 패치)은 #921 에 기록돼 있다.

  • gradle/libs.versions.toml — bouncycastle = "1.84" 하한 버전
  • build.gradle.kts
    • 최상단 buildscript 블록: 루트 buildscript classpath constraint. 본문 시점엔 루트 classpath 리졸브가 끝나 있어 여기만 가능하고, buildscript 블록은 카탈로그 accessor 미지원이라 리터럴+주석으로 둔다.
    • allprojects: declarable 전용 bouncycastleConstraints configuration 에 constraint 를 담고 모든 resolvable configuration 이 extendsFrom — Gradle 9 가 compileClasspath·archives 등 non-declarable 에 constraint 선언을 금지해 채택한 구조로, androidLintTool·UTP 같은 AGP 내부 configuration 까지 이름 하드코딩 없이 커버한다(consumable 은 extend 하지 않아 variant 메타데이터 무영향).
    • subprojects: buildscript classpath 에 직접 constraint(buildscript 컨테이너엔 configuration 추가가 금지).
  • build-logic/build.gradle.kts — 동일 constraint(별도 빌드라 루트 선언이 미치지 않음)

require 시맨틱이라 추후 AGP·Robolectric 상류가 1.84 이상을 선언하면 그쪽이 이긴다. APK 산출물에는 영향이 없다 — releaseRuntimeClasspath 에 bouncycastle 0건.

검증

  • 전 프로젝트·전 resolvable configuration 강제 리졸브 재실측(CI dependency-submission 과 동일 조건): 검출 지점 전원 1.84 정렬(bcprov 91곳·bcpkix 82곳·bcutil 82곳 — 기존 1.79×82+1.80×9 와 개수 구조 일치), 1.79/1.80 잔존 0건
  • build-logic dependencyInsight --configuration runtimeClasspath: 1.79 -> 1.84 (constraint 사유 표기 확인)
  • compileDebugUnitTestKotlin(전 모듈 게이트) + :core:ui:testDebugUnitTest(실패 0) + :core:model:lintDebug + :app:assembleDebug — BUILD SUCCESSFUL(651 태스크, FAILED 0). 서명된 debug APK 산출로 apksig↔BC 1.84 바이너리 호환까지 확인
  • ktlint 1.8.0 standalone(pre-commit 동일 바이너리) 위반 0건
  • 시각 검증·QA·시안 대조: 해당 없음 — 빌드 스크립트·버전 카탈로그만 변경, Compose 본문·디자인 토큰·리소스 무변경. 에뮬 실측도 생략(런타임 클래스패스 무영향 — APK 에 bouncycastle 자체가 없음)

리뷰어에게

Closes #921
Closes #983
Closes #984

Robolectric 4.15.1(bcprov 1.80)·AGP 9.2.1(1.79) 전이 의존성이
GHSA-574f-3g2m-x479(critical) 영향권이라 constraint 로 1.84 를 보장한다.
APK 산출물에는 bouncycastle 이 포함되지 않는다. #921
@OnlyReadOneBook OnlyReadOneBook changed the title chore(build): 빌드·테스트 클래스패스 bouncycastle 하한을 1.84 로 상향 chore(build): 빌드·테스트 클래스패스 bouncycastle 하한을 1.84 로 상향 (closes 921, 983, 984) [base: develop] Aug 24, 2026
@OnlyReadOneBook
OnlyReadOneBook merged commit ca69737 into develop Aug 24, 2026
13 checks passed
@OnlyReadOneBook
OnlyReadOneBook deleted the chore/921 branch August 24, 2026 09:16
@github-actions

Copy link
Copy Markdown
Contributor

🚀 QA 배포 권장

QA 포인트

이 판단은 배포를 자동 실행하지 않습니다. deploy일 때 Release Distribution을 수동 실행하세요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants