Skip to content

fix(ci): unbreak mobile preview CD against eas-cli 22 - #41

Merged
rynfar merged 1 commit into
pylonfrom
fix/mobile-cd-eas22
Aug 15, 2026
Merged

rynfar merged 1 commit into
pylonfrom
fix/mobile-cd-eas22

Conversation

@rynfar

@rynfar rynfar commented Aug 15, 2026 •

Copy link
Copy Markdown
Collaborator

Mobile preview CD failed with Cannot read properties of undefined (reading 'ownerAccount') — after its EAS builds had already succeeded, so the job went red on a step that only posts a PR comment.

Cause

eas-cli 22 renamed the build JSON fields (project → app, channel → updateChannel, runtimeVersion → runtime). continuous-deploy-fingerprint still does:

const { project } = build;
`/accounts/${project.ownerAccount.name}/projects/${project.slug}/builds/${build.id}`

build.project is now undefined. Tracked upstream as expo/expo-github-action#358, still open. The workflow asked for eas-version: latest, so it installed the breakage on its own.

Fix

Pins eas-version: 21.8.0 — the last release before the rename — for this workflow only. The production workflow calls eas directly, never runs this action, and stays on latest. The pin carries the issue link and the condition to lift it.

Also pins the action to @v9. It was the only action reference in the repository tracking an unreleased branch, so CI behaviour could change with no commit here. Worth noting continuous-deploy-fingerprint does not exist in v8, which is why the setup action beside it is a different major.

Documentation

apps/mobile/README.md gains the mobile build path, because two failure modes in this area are silent and both cost real time this week:

  • EAS build servers read the EAS-hosted environment, never the checkout. eas build archives with git, so a gitignored .env/.env.local reaches nothing.
  • Missing PYLON_EAS_PROJECT_ID ships a binary with updates.enabled: false. It installs and runs normally but can never receive an OTA — discovered only after a full rebuild cycle.
  • Missing Clerk/relay values omit every Connect surface with no error and no empty state.

Adds a command to verify a finished artifact instead of assuming, plus device-install and OTA runtime-version notes (an update published under fingerprint never lands on an appVersion build).

Verification

  • Both workflow files parse; eas-version and both action refs confirmed in the parsed YAML
  • continuous-deploy-fingerprint confirmed absent at v8, present at v9 and main
  • eas-cli@21.8.0 confirmed as the last 21.x release
  • Not exercised end to end: that needs a labelled PR, and the label is intentionally off fix(mobile): Pylon Connect reaches mobile builds #37 to avoid queueing builds

Stacks cleanly with #37, which touches different hunks of the same workflow.

Model: Claude Opus 5. Harness: Claude Code.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith with what you need. Autofix is disabled.

continuous-deploy-fingerprint failed with "Cannot read properties of
undefined (reading 'ownerAccount')" after its builds had already
succeeded. eas-cli 22 renamed the build JSON fields (project -> app,
channel -> updateChannel, runtimeVersion -> runtime) and the action still
reads build.project.ownerAccount when posting its PR comment, so the
workflow installed the breakage by asking for `latest`.

Pins eas-cli to 21.8.0 for this workflow only; the production workflow
calls eas directly and stays current. Also pins the action itself to v9:
it was the one action reference in the repository tracking an unreleased
branch, so CI could change without a commit here.

Documents the mobile build path in the app README. EAS build servers read
the EAS-hosted environment, never this checkout, so a gitignored
.env.local reaches nothing. Missing PYLON_EAS_PROJECT_ID silently ships a
binary with over-the-air updates disabled, which cost a full rebuild
cycle to discover; missing Clerk values silently omit every Connect
surface. Both are now named alongside a command to verify a finished
artifact rather than assume.

Upstream issue: expo/expo-github-action#358
@github-actions github-actions Bot added size:M vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 15, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 396ae12.

This comment will update automatically after the next completed run.

@rynfar
rynfar merged commit 1da5852 into pylon Aug 15, 2026
11 checks passed
@rynfar
rynfar deleted the fix/mobile-cd-eas22 branch August 15, 2026 18:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant