Skip to content

🔧 chore: Renovate 오픈 PR 5건 통합 승격 (pdfbox·httpclient5·hibernate·temurin·actions) - #413

Merged
GulSauce merged 1 commit into
developfrom
chore/deps-renovate-2026-07-27
Jul 27, 2026
Merged

🔧 chore: Renovate 오픈 PR 5건 통합 승격 (pdfbox·httpclient5·hibernate·temurin·actions)#413
GulSauce merged 1 commit into
developfrom
chore/deps-renovate-2026-07-27

Conversation

@GulSauce

Copy link
Copy Markdown
Member

개요

오픈 Renovate PR 5건(#405, #404, #309, #406, #307)을 dependency-upgrade-cycle 절차로 판정·통합한 단일 커밋. 전건 PATCH/다이제스트 핀 수준으로 MAJOR 없음 → 스파이크 생략, 계단식 실패 0회.

이 PR이 develop에 병합되면 위 Renovate PR 5건은 봇이 superseded로 자동 close한다 (수동 close 금지 — Renovate가 rejection으로 해석).

반영 버전 요약

컴포넌트 이전 신규 Semver Renovate PR
org.apache.pdfbox:pdfbox (+fontbox, pdfbox-io) 3.0.7 3.0.8 PATCH #405
org.apache.httpcomponents.client5:httpclient5 5.6.1 5.6.2 PATCH #404
httpcore5 / httpcore5-h2 (httpclient5 전이) 5.4.2 5.4.3 PATCH #404
commons-logging (전이, 런타임) 1.3.6 1.4.0 MINOR #405 전이
org.hibernate.orm (Gradle 플러그인 + platform) 7.4.4.Final 7.4.5.Final PATCH #309
eclipse-temurin 베이스 이미지 25.0.2_10-jdk-noble 25.0.3_9-jdk-noble PATCH #406
actions/checkout (v7 유지) digest 9c091bb digest 3d3c42e digest #307
actions/setup-java (v5 유지) digest 0f481fc digest 03ad4de digest #307
anthropics/claude-code-action (v1 유지) digest af0559e digest be7b93b digest #307
CI mysql 서비스 (ci-pii-coverage) mysql:8.0 (무핀) mysql:8.4 (sha256 핀) MINOR+핀 #307

병합 방식: gradle 3건(#405·#404·#309)은 lockfile 상호 충돌 때문에 카탈로그 libs.versions.toml 직접 편집 + resolveAndLockAll --write-locks 재생성으로 동등 결과 구성. #406·#307은 gh pr diff | git apply로 원 diff 그대로 적용.

컴포넌트별 판단 근거 (릴리즈 노트 실인용)

pdfbox 3.0.8 — 3.0.7 회귀 수정판

  • PDFBOX-6203 (Splitter.split() corrupts result PDFs), PDFBOX-6209 (3.0.7 회귀 — Splitter 추출 페이지의 텍스트가 심볼로 변환), PDFBOX-6202 (다중 PDF 결합 회귀). 현재 쓰는 3.0.7에 페이지 분할·병합 회귀가 있었으므로 이 승격은 잠재 결함 제거.
  • PDFBOX-6210: CJK 공유 글리프 텍스트 추출 정확도 — 한국어 문서 처리에 유관.
  • 검증: PdfUtilsTest(3-page PDF 생성 → extractPages 계약) GREEN.

httpclient5 5.6.2

  • HttpCore 5.4.3 승격 + HTTPCLIENT-2422: lazy content decompression 복원(응답 본문을 읽을 때까지 압축해제 스트림 생성 지연).

hibernate-orm 7.4.5.Final

  • 유지보수 릴리즈 (변경 목록).
  • quiz-set-impl 바이트코드 인핸스먼트 플러그인이 같은 버전 값에 묶여 함께 이동 — 빌드 후 javap -p ProblemSet.class에서 $$_hibernate_ 멤버 54개 확인, 인핸스먼트 계속 적용됨.

temurin 25.0.3_9 / GitHub Actions 핀

  • Dockerfile FROM만 변경, 이미지 빌드는 별도 인프라 파이프라인.
  • actions는 메이저 라인 유지·다이제스트만 갱신. CI mysql은 무핀 8.0 → sha256 핀 8.4 LTS (운영 compose는 mysql:latest라 정합 문제 없음, 오히려 개선).

Breaking change 해소

  • 없음 (전건 PATCH/핀 수준, 계단식 실패 0회).

회귀 세이프티 넷

  • 기존 ApplicationContextBootTest(MOCK 부팅 + 핵심 Bean)·PdfUtilsTest 재사용 — 신규 테스트 불필요 (Constitution I).

검증

  • 승격 전 기준선: ./gradlew test spotlessCheck GREEN
  • 승격 후: ./gradlew clean build spotlessCheck GREEN (테스트 포함 128 태스크)
  • resolveAndLockAll 재생성 diff 검사 — 예상 밖 버전 드리프트 없음 (전이 변화는 httpcore5 5.4.3, commons-logging 1.4.0뿐)
  • pre-commit 훅(spotlessCheck + lockfile 동기화 + secrets 암호화 검증) 통과

배포 후 관찰이 필요한 잔여 조건

  • httpclient5 지연 압축해제 복원: OCI SDK 등 소비 경로에서 응답 스트림을 읽지 않고 버리는 코드가 있으면 5.6.1과 타이밍이 달라질 수 있음 → 배포 후 OCI 업로드/다운로드 대시보드 확인.
  • temurin 25.0.3: 베이스 이미지 재빌드 시 컨테이너 기동 스모크.
  • CI mysql 8.4: ci-pii-coverage 첫 실행 GREEN 확인.

남은 후속 티켓 후보

  • 운영 infra/mysql/docker-compose.ymlmysql:latest 무핀 — CI(8.4 sha256 핀)와 핀 정책 통일 검토.
  • infra/base-image/Dockerfile 상단 주석의 버전 문자열 하드코딩(Renovate가 FROM만 갱신해 주석이 낡음) 정리 검토.

🤖 Generated with Claude Code

…n·actions)

## 반영된 버전 승격
- org.apache.pdfbox:pdfbox 3.0.7 → 3.0.8 (PATCH, 3.0.7 Splitter 회귀 PDFBOX-6203/6209 수정판)
- org.apache.httpcomponents.client5:httpclient5 5.6.1 → 5.6.2 (PATCH, HttpCore 5.4.3 + 지연 압축해제 복원)
- org.hibernate.orm 7.4.4.Final → 7.4.5.Final (PATCH, 플러그인+platform 동시)
- eclipse-temurin 베이스 이미지 25.0.2_10 → 25.0.3_9-jdk-noble (JDK PATCH)
- GitHub Actions 다이제스트 핀 갱신 (checkout/setup-java/claude-code-action) + CI MySQL 8.0 → 8.4 핀

## Breaking change 해소
- 없음 (전건 PATCH/핀 수준, 계단식 실패 0회)

## 회귀 세이프티 넷
- 기존 ApplicationContextBootTest·PdfUtilsTest 재사용 (신규 테스트 불필요)
- quiz-set-impl 바이트코드 인핸스먼트 javap 검증 ($$_hibernate_ 멤버 54개 유지)

## 검증
- ./gradlew clean build spotlessCheck GREEN (테스트 포함 128 태스크)
- resolveAndLockAll 재생성 — 예상 밖 버전 드리프트 없음 (전이: httpcore5 5.4.3, commons-logging 1.4.0)

## 처리한 Renovate PR
- #405(pdfbox), #404(httpclient5), #309(hibernate), #406(temurin), #307(actions)
- develop 도달 시 Renovate가 superseded로 자동 close

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@GulSauce
GulSauce merged commit 7ac9fee into develop Jul 27, 2026
2 checks passed
@GulSauce
GulSauce deleted the chore/deps-renovate-2026-07-27 branch July 27, 2026 06:44
GulSauce added a commit that referenced this pull request Jul 28, 2026
temurin 25 승격(#413) 이후 앱 클래스가 Java 25(class file 69)로 빌드되는데,
문서 액션만 setup-java 21 런타임으로 jar를 직접 실행해
UnsupportedClassVersionError로 실패했다 (gradle 경유 워크플로들은
toolchain이 JDK 25를 자동 조달해 무사).
GulSauce added a commit that referenced this pull request Jul 28, 2026
temurin 25 승격(#413) 이후 앱 클래스가 Java 25(class file 69)로 빌드되는데,
문서 액션만 setup-java 21 런타임으로 jar를 직접 실행해
UnsupportedClassVersionError로 실패했다 (gradle 경유 워크플로들은
toolchain이 JDK 25를 자동 조달해 무사).
GulSauce added a commit that referenced this pull request Jul 28, 2026
* 🐛 fix(ai): mock 프로필에서 Vertex AI 클라이언트 대신 더미 클라이언트 사용

mock 프로필 부팅 시 googleGenAiClient가 Vertex 모드로 생성되며 Google
ADC(Application Default Credentials)를 요구해, gcloud 자격증명 없는
환경(백업 복원 리허설의 앱 부팅 검증)에서 컨텍스트가 죽었다 (#415와
동일 부류 — 로컬 개발기엔 ADC가 있어 드러나지 않던 구멍).
test 프로필용 더미 apiKey 클라이언트를 mock에도 적용한다.

* 💚 ci: OpenAPI 문서 추출 액션 JDK 21→25 — 부트 jar 직접 실행 버전 정합

temurin 25 승격(#413) 이후 앱 클래스가 Java 25(class file 69)로 빌드되는데,
문서 액션만 setup-java 21 런타임으로 jar를 직접 실행해
UnsupportedClassVersionError로 실패했다 (gradle 경유 워크플로들은
toolchain이 JDK 25를 자동 조달해 무사).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant