From 58bdd2aed6c66483d912fc490b15282e823e34ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=BC=ED=98=81?= Date: Mon, 24 Aug 2026 19:06:00 +0900 Subject: [PATCH] =?UTF-8?q?fix(ci):=20CodeQL=20=EB=B9=8C=EB=93=9C=EB=A5=BC?= =?UTF-8?q?=20compileDebugSources=20=EB=A1=9C=20=EC=A2=81=ED=9E=8C?= =?UTF-8?q?=EB=8B=A4=20=E2=80=94=20dex=20=EB=B3=91=ED=95=A9=20OOM=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CodeQL Java/Kotlin 추출기가 관찰하는 것은 컴파일러 호출이지 APK 가 아닌데, 빌드 스텝이 assembleDebug 를 돌려 dex 병합(R8)까지 끌고 갔다. 그 :app:mergeExtDexDebug 가 GitHub 러너(7GB)에서 Java heap space 를 넘겨 CodeQL 이 PR 마다 산발적으로 빨간불이었고, 리뷰어가 매번 로그를 열어 «보안 경고가 아니라 OOM» 임을 확인해야 했다. compileDebugSources 로 바꾼다. 태스크 그래프를 실측 대조하면 컴파일 task 는 양쪽이 동일하고(114건), 빠지는 것은 compileDebugLibraryResources (aapt2 리소스)와 dex·packaging 뿐이다 — 추출과 무관한 구간이다. 실측: - ./gradlew compileDebugSources :feature:onboarding:domain:classes :feature:setting:domain:classes → BUILD SUCCESSFUL in 21s (312 tasks) - 태스크 그래프에 dex·r8·mergeExtDex·package(APK) 0건 - actionlint · repository-quality.sh · node --test .github/scripts 통과 추출이 실제로 채워지는지는 이 PR 의 CodeQL run 이 verify-codeql-database 스텝으로 스스로 판정한다. closes #1023 --- .github/workflows/codeql.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4749597337..b9e5090478 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -68,15 +68,21 @@ jobs: build-mode: ${{ matrix.build_mode }} # Java/Kotlin extraction observes compiler invocations, so a clean manual build is the - # contract. assembleDebug covers every Android leaf; the two pure JVM leaves need classes. + # contract. compileDebugSources covers every Android leaf; the two pure JVM leaves need classes. # - # 그래서 이 워크플로는 #996 의 --build-cache 예외다. compile task 가 FROM-CACHE 로 + # 추출에 필요한 것은 컴파일러 호출이지 APK 가 아니다. assembleDebug 는 그 뒤로 + # dex 병합(R8)까지 끌고 갔고, 그 :app:mergeExtDexDebug 가 GitHub 러너(7GB)에서 + # 힙을 넘겨 CodeQL 을 산발적으로 실패시켰다 — 코드 결함과 구분되지 않는 빨간불이었다. + # compileDebugSources 는 같은 114개 컴파일 task 를 그대로 돌리면서 dex·packaging 만 + # 뺀다 (#1023). + # + # 이 워크플로는 #996 의 --build-cache 예외이기도 하다. compile task 가 FROM-CACHE 로 # 넘어가면 컴파일러가 아예 실행되지 않아 추출기가 소스를 담지 못하고, 아래 verify # 스텝이 빈 database 로 실패한다. lint·unit-test·screenshot 에는 이 제약이 없다. - name: Compile Android and pure JVM Kotlin sources if: matrix.build_mode == 'manual' run: >- - ./gradlew assembleDebug + ./gradlew compileDebugSources :feature:onboarding:domain:classes :feature:setting:domain:classes --no-configuration-cache