Skip to content

fix(scatterlab-prebuild-android): 빌드를 앱 빌드용 러너로 옮긴다 - #8

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

fix(scatterlab-prebuild-android): 빌드를 앱 빌드용 러너로 옮긴다#8
kdwkr merged 1 commit into
scatterlab/0.87.1from
daewoon/android-host-sdk

Conversation

@kdwkr

@kdwkr kdwkr commented Sep 11, 2026

Copy link
Copy Markdown
Member

Summary:

컨테이너 경로를 접는다. #7에서 넣은 진단 스텝이 원인을 확정해줬다 — run 34553627271:

certs in /etc/ssl/certs: 239
SSL_CERT_FILE=unset GIT_SSL_CAINFO=unset
github.com -> curl: (60) SSL certificate problem: self-signed certificate in certificate chain

조직이 자체 CA 로 TLS 를 종단한다. 그리고 volumes: 마운트는 이 문제에 닿지 못한다 — dind 에서 잡 컨테이너의 볼륨은 docker 데몬 쪽(사이드카) 파일시스템에서 오지, 그 CA 를 가진 러너에서 오지 않는다. 그래서 표준 번들 239개가 들어왔고 사설 CA 는 여전히 없었다. 컨테이너 안에서 신뢰를 맞추려면 git·node·JVM 트러스트스토어를 각각 손봐야 한다.

zeta 의 네이티브 Android 출고가 도는 러너([self-hosted, zeta-app-builder])로 옮긴다. SDK·NDK·CMake 가 이미 깔려 있고 프록시도 이미 신뢰한다 — zeta-frontenddeploy-native.yml 이 매 출고마다 거기서 Android 를 빌드한다. ANDROID_HOME 도 그 워크플로와 같은 값을 쓴다.

같은 러너를 쓰는 iOS prebuild 가 이미 밟은 함정 둘도 가져왔다:

  • 맥 러너는 잡들이 $HOME 을 공유하고 yarn 1 전역 캐시가 동시성에 안전하지 않다. YARN_CACHE_FOLDERsetup-node 앞에서 export 한다 — 그 액션 안의 중첩 yarn 호출까지 덮어야 한다.
  • ccache 기본 경로가 플랫폼마다 다르다. CCACHE_DIR 을 명시해 캐시 액션과 컴파일러가 같은 디렉터리를 본다 (이전 리눅스 가정 ~/.cache/ccache 는 맥에서 안 맞았다).

Changelog:

[INTERNAL] [FIXED] - Build the Android prebuilt artifacts on the app-build runner instead of a job container

Test Plan:

runs-on: ['self-hosted', 'zeta-app-builder']
env: {'ANDROID_HOME': '/Users/scatterlab/Library/Android/sdk', 'ANDROID_SDK_ROOT': '...'}
container: None
steps: ['actions/checkout@v4', 'Setup git safe folders', 'Isolate the yarn cache',
        './.github/actions/setup-node', './.github/actions/yarn-install',
        'Point ccache at a known directory', 'Restore the Android ccache',
        'Build and publish the Android artifacts to /tmp/maven-local', ...]

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

지금까지 실환경에서 통과한 관문: 버전 검사 · 소비자 스모크 13/13 · JDK · 컨테이너 기동/digest pull. 남은 미실증: Gradle 빌드 본체, verify_symbol 게이트, 아카이브 패킹, draft 생성·검증·승격.

🤖 Generated with Claude Code

컨테이너 경로를 접는다. dind ARC 러너의 잡 컨테이너 안에서는 git 이
github.com 을 검증하지 못한다 — 조직이 자체 CA 로 TLS 를 종단하고, 진단
스텝이 이를 확인해줬다 (run 34553627271):

    certs in /etc/ssl/certs: 239
    github.com -> curl: (60) SSL certificate problem:
                        self-signed certificate in certificate chain

`volumes:` 마운트로는 못 고친다. dind 에서 그 마운트는 **docker 데몬 쪽**
(사이드카) 파일시스템에서 오지, 그 CA 를 가진 러너에서 오지 않는다. 그래서
표준 번들 239개가 들어왔고 사설 CA 는 여전히 없었다. 컨테이너 안에서 맞추려면
git·node·JVM 트러스트스토어를 각각 손봐야 한다.

zeta 의 네이티브 Android 출고가 도는 러너를 쓴다. SDK·NDK·CMake 가 이미 있고
프록시도 이미 신뢰한다. `ANDROID_HOME` 은 `deploy-native.yml` 과 같은 값이다.

같은 러너를 쓰는 iOS prebuild 가 밟았던 함정도 가져온다 — 맥 러너는 $HOME 을
공유하고 yarn 1 전역 캐시가 동시성에 안전하지 않아 `YARN_CACHE_FOLDER` 를
setup-node 앞에서 export 한다. ccache 도 기본 경로가 플랫폼마다 달라
`CCACHE_DIR` 을 명시해 캐시 액션과 컴파일러가 같은 곳을 보게 한다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown

Warning

Review limit reached

  • Run on-demand review

On-demand reviews are free for the next 29 days. After that, they cost $0.25 per reviewed file.

Or wait 6 minutes for your next included review.

Check out review usage here.

View limit details

Limit details: You’ve used all 5 included reviews currently available. Your 27 included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Essentials

Run ID: f05f8ef2-35fd-4fba-8adc-c397878bb88e

📥 Commits

Reviewing files that changed from the base of the PR and between 23418a6 and 19b4e07.

📒 Files selected for processing (2)
  • .github/scatterlab/android-prebuilt.md
  • .github/workflows/scatterlab-prebuild-android.yml

Comment @coderabbitai help to get the list of available commands.

@kdwkr
kdwkr merged commit 3230bda into scatterlab/0.87.1 Sep 11, 2026
4 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