Repository navigation
feat(eas): link the app to the EAS project so CI can build it - #185
Merged
Merged
Conversation
Point the app at the EAS project @objectstack/objectos. The slug moves to objectos because an Expo project's slug cannot be renamed and no binary exists yet. Over-the-air updates use the fingerprint runtime version, so an update only reaches a binary with the same native side. Add expo-updates and expo-dev-client: without them the updates URL and the development profiles have no effect. Add a development-device profile, give preview a channel and stop pre-filling a stale server. Document how to install on a phone and list each landed card's device check. Refs #183 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The setup step installs the latest eas-cli, and 27.3.0 refuses Node 20 at install, so every EAS run failed before any build step once EXPO_TOKEN was set. Refs #183 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
eas.json validation rejects an empty env value, so no build could start from either profile. app.config.ts already defaults the unset variable to an empty string, which still pre-fills no server. Refs #183 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A release build runs Sentry's upload task, which fails with no SENTRY_AUTH_TOKEN and stops the Gradle build after compiling. Preview builds are for testers, so they skip the upload. Refs #183 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs #183 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #183
Clause-②: no
Metadata-protocol: none
维护者速读
@objectstack/objectos,开启受 fingerprint 保护的 OTA,新增真机开发包 profile,preview不再预填旧服务器地址,并补上手机安装步骤和按卡片整理的真机检查清单。objectos-mobile改为objectos。项目创建时 slug 就是objectos,Expo 不支持改 slug,而且目前还没有任何安装包,所以改代码代价最小。卡片没有提到但必须补的:expo-updates和expo-dev-client两个原生模块。少了它们,OTA 地址和开发包 profile 都不起作用。EXPO_TOKEN已设置,所以合并本 PR 就会真正触发main上的 EAS 构建和 OTA 发布。在 iOS 签名([Maintainer] Steps only the maintainer can take to get the ObjectOS app onto a phone #184 第 3 步)完成前,推送触发的 EAS Build 预计在 iOS 步骤失败,Android 步骤也不会运行;需要 Android 包时手动触发platform=android。回滚 = 撤回本 PR。preview构建在本分支上成功:APK(run 41598217327,头提交65e8c9d)。两个新模块已编译。.github/workflows/**(受管面),由你合并。app.config.ts②eas.json③.github/workflows/eas-*.yml④docs/DEVICE-TESTING.mdnpx expo config --json --type public,确认owner、slug、updates.url和extra.eas.projectId指向同一个项目。preview包,运行一次eas channel:edit preview --branch main。docs/DEVICE-TESTING.md验收。本 PR 不用
Fixes:#183 的验收还要求 iOS 包,要等 Apple 签名完成。What changes
app.config.ts,app.json:owner: "objectstack",slug: "objectos",extra.eas.projectId,updates.url, andruntimeVersion: { policy: "fingerprint" }.eas.json: addsdevelopment-device(a dev client withios.simulator: false) and givespreviewthe channelpreview. It removesEXPO_PUBLIC_DEFAULT_SERVER_URLfrompreviewandproduction: eas-cli refuses an empty value, andapp.config.tsalready defaults the unset variable to"".previewsetsSENTRY_DISABLE_AUTO_UPLOAD, because the upload task fails the release build with noSENTRY_AUTH_TOKEN..github/workflows/eas-{build,update,submit}.yml: Node 20 → 22. The setup step installs the latest eas-cli, and 27.3.0 refuses Node 20 at install.package.json, lockfile:expo-updatesandexpo-dev-client, at the versionsexpo installpicked for SDK 55.docs/DEVICE-TESTING.md: install paths for Android and iOS, plus a smoke checklist with one row per landed card, taken from each PR's manual check.docs/DEPLOYMENT.md: the project, the new profile, and the channel mapping below.__tests__/lib/shell/incoming-link.test.ts: the dev-client scheme fixture follows the slug..changeset/151-objectos-rebrand.md: its unreleased note now states the current slug. A new changeset covers this PR.Open point, not changed here.
eas-update.ymlpublishes witheas update --auto, which uses a branch named after the git branch (main). Apreviewbuild reads channelpreview, which points at branchpreviewby default. Untileas channel:edit preview --branch mainruns, a CI update reaches no installed build..github/workflows/**is a governed surface, so this PR documents the mapping and leaves the workflow alone.Verification
Run on this branch's content with pnpm 10, the version CI uses:
pnpm install --frozen-lockfilepnpm run lint(tsc+ ESLint)jest --ciexpo config --json --type publicowner,slug,runtimeVersion,updates.urlandextra.eas.projectIdas above;defaultServerUrlis""expo prebuild --no-install(Android)AndroidManifest.xmlhas the update URL and schemeexp+objectosexpo prebuild --no-install(iOS)Expo.plisthasEXUpdatesURLandEXUpdatesRuntimeVersion = file:fingerprint;Info.plisthas schemeexp+objectosFour
EAS Buildruns on this branch (platform=android,profile=preview):cedb324057feeeeas.json(empty env values)f5afc7d65e8c9dThe head after
65e8c9dchanges onlydocs/DEPLOYMENT.mdand the changeset.Not verified:
0a40028to1d01151between the last two builds, whose only difference iseas.json, so whether the update job's fingerprint matches a build's needs checking on the first real update.eas-cli, not tested: a push tomainfails atBuild iOSuntil credentials exist, and since the step fails first,Build Androiddoes not run.🤖 Generated with Claude Code