Skip to content

fix(scatterlab-prebuild-android): 빌드에 필요한 CMake·NDK 를 러너에 설치한다 - #10

Merged
kdwkr merged 1 commit into
scatterlab/0.87.1from
daewoon/android-sdkmanager
Sep 11, 2026
Merged

fix(scatterlab-prebuild-android): 빌드에 필요한 CMake·NDK 를 러너에 설치한다#10
kdwkr merged 1 commit into
scatterlab/0.87.1from
daewoon/android-sdkmanager

Conversation

@kdwkr

@kdwkr kdwkr commented Sep 11, 2026

Copy link
Copy Markdown
Member

Summary:

러너 디스크가 풀린 뒤 Gradle 안까지 처음 들어갔다yarn install 통과, 의존성 해결, downloadDoubleConversion·prepareDoubleConversion 까지 진행. 거기서 죽었다 (run 34554813265):

> Task :packages:react-native:ReactAndroid:configureCMakeDebug[arm64-v8a] FAILED
> [CXX1300] CMake '3.30.5' was not found in SDK, PATH, or by cmake.dir property.

zeta 앱 빌드는 prebuilt react-android AAR 을 링크만 하고 ReactCommon 을 컴파일하지 않는다. 그래서 이 러너의 SDK 에 그 CMake 가 있을 이유가 없었다 — 우리가 여기서 RN 의 C++ 를 빌드하는 첫 작업이다.

손으로 깔지 않고 워크플로에서 한다. 실행이 actions-runner-arunner-c 에 각각 붙은 걸로 보아 라벨 뒤에 머신이 여러 대다. 한 대에 깔아두면 다음 실행이 다른 머신에 붙는 순간 같은 실패가 난다. sdkmanager 는 멱등이라 이미 깔린 머신에선 no-op 이고, base 를 올려 버전이 바뀔 때도 자동으로 따라간다.

두 가지를 방어적으로 처리했다:

  • sdkmanager 경로를 cmdline-tools/latestcmdline-tools/*tools/bin 순으로 찾고, 없으면 명확한 메시지로 중단한다.
  • 설치 여부를 디렉터리 존재로 확인한다. sdkmanager 는 패키지를 조용히 건너뛴 경우에도 종료 코드 0 을 내므로, 그 코드만 믿으면 다음 스텝에서 같은 CXX1300 을 다시 보게 된다.

버전은 packages/react-native/gradle/libs.versions.tomlndkVersionReactAndroid/build.gradle.kts:48cmakeVersion 을 따른다 — 상류가 빌드하는 조합이다. android-prebuilt.md 에 base bump 시 함께 맞추라는 규칙을 넣었다.

Changelog:

[INTERNAL] [FIXED] - Install the CMake and NDK versions ReactAndroid builds against on the prebuilt runner

Test Plan:

yaml ok
steps: [..., './.github/actions/yarn-install',
        'Ensure the CMake and NDK ReactAndroid builds against',
        'Point ccache at a known directory', 'Restore the Android ccache', ...]

actionlint 기존 노이즈 외 새 경고 없음.

실환경 진행: 버전 검사 · 소비자 스모크 13/13 · checkout · setup-node/corepack · yarn install · Gradle 진입 · 의존성 다운로드까지 통과. 남은 미실증: C++ 컴파일 완주, verify_symbol 게이트, 아카이브 패킹, draft 생성·검증·승격.

🤖 Generated with Claude Code

디스크가 풀린 뒤 Gradle 안까지 처음 들어갔고, 거기서 죽었다
(run 34554813265):

    [CXX1300] CMake '3.30.5' was not found in SDK, PATH, or by cmake.dir property.

zeta 앱 빌드는 prebuilt react-android AAR 을 링크할 뿐 ReactCommon 을
컴파일하지 않는다. 그래서 이 러너의 SDK 가 그 CMake 를 들고 있을 이유가 없었다
— 우리가 여기서 RN 의 C++ 를 빌드하는 첫 작업이다.

손으로 깔지 않고 워크플로에서 한다. 라벨 뒤에 머신이 여러 대이고(실행이
`actions-runner-a` 와 `runner-c` 에 각각 붙었다) 손으로 깔면 그때 본 한 대만
고쳐진다. sdkmanager 는 멱등이라 이미 깔린 머신에선 no-op 이다.

sdkmanager 의 종료 코드는 설치를 조용히 건너뛴 경우에도 0 이라, 디렉터리
존재로 실제 설치를 확인한다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kdwkr
kdwkr merged commit 9652302 into scatterlab/0.87.1 Sep 11, 2026
3 checks passed
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