From 1e48ed5eeb9b77e97c09fd60c87e24244d5facb6 Mon Sep 17 00:00:00 2001 From: Daewoon Kim Date: Fri, 11 Sep 2026 11:27:14 +0900 Subject: [PATCH] =?UTF-8?q?fix(scatterlab-prebuild-android):=20setup-node?= =?UTF-8?q?=20=EC=9D=98=20yarn=20=EC=BA=90=EC=8B=9C=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=9D=84=20=EB=81=8A=EB=8A=94=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 앱 빌드 러너로 옮기자 checkout 은 통과했지만 setup-node 에서 죽었다 (run 34554334345): yarn: ##[error]Unable to locate executable file: yarn. 공용 `./.github/actions/setup-node` 는 `cache: yarn` 을 강제하는데, setup-node 는 그 캐시 키를 만들려고 `yarn` 을 먼저 부른다. 이 러너에서 yarn 은 corepack shim 으로 오고 shim 은 러너별 tool cache 의 node 설치본에 귀속되므로, 그 node 버전을 막 내려받은 러너에는 shim 이 없다. zeta-frontend 의 `deploy-native.yml` 이 같은 걸 겪고 주석으로 남겨뒀고, 이 레포의 iOS prebuild 도 같은 러너에서 공용 액션을 쓰지 않는다. 같은 방식으로 `actions/setup-node` + `corepack enable` 을 쓴다. node 버전은 공용 액션 기본값(22.14.0)을 그대로 둬 변수를 하나만 바꾼다. 재시도가 있는 `./.github/actions/yarn-install` 은 유지한다. Co-Authored-By: Claude Opus 5 (1M context) --- .../workflows/scatterlab-prebuild-android.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/scatterlab-prebuild-android.yml b/.github/workflows/scatterlab-prebuild-android.yml index 14d64471a8a..758eec8f892 100644 --- a/.github/workflows/scatterlab-prebuild-android.yml +++ b/.github/workflows/scatterlab-prebuild-android.yml @@ -149,7 +149,22 @@ jobs: - name: Isolate the yarn cache run: echo "YARN_CACHE_FOLDER=$RUNNER_TEMP/yarn-cache" >> "$GITHUB_ENV" - - uses: ./.github/actions/setup-node + # Not `./.github/actions/setup-node`: that composite forces `cache: yarn`, and + # setup-node resolves that cache key by running `yarn` before yarn exists. On this + # runner yarn comes from a corepack shim bound to the node install in the per-runner + # tool cache, so a runner that has just downloaded this node version has no shim and + # the step dies with "Unable to locate executable file: yarn". `deploy-native.yml` + # in zeta-frontend hit the same thing and documents it; the iOS prebuild here avoids + # it the same way. + - uses: actions/setup-node@v6 + with: + node-version: '22.14.0' + + # Idempotent. The actual yarn version follows the root package.json's + # packageManager (yarn@1.22.22). + - name: Enable corepack + run: corepack enable + - uses: ./.github/actions/yarn-install # Without a warm ccache every run is a full C++ rebuild of ReactCommon.