[eas-build-job] add DeviceRunSession.Job - #4412
Draft
szdziedzic wants to merge 1 commit into
Draft
szdziedzic wants to merge 1 commit into
szdziedzic wants to merge 1 commit into
Conversation
szdziedzic
added this pull request to stack #4415
September 15, 2026 19:45
szdziedzic
force-pushed
the
szdziedzic-claude/eas-simulator-job-schema
branch
from
September 15, 2026 19:47
f4682fc to
37c3973
Compare
|
✅ Thank you for adding the changelog entry! |
This was referenced Sep 15, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4412 +/- ##
==========================================
+ Coverage 72.19% 72.21% +0.02%
==========================================
Files 970 971 +1
Lines 46046 46071 +25
Branches 9875 9882 +7
==========================================
+ Hits 33240 33265 +25
Misses 11811 11811
Partials 995 995 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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.
Why
EAS Simulator sessions (device run sessions) currently reach the worker as a
Generic.Jobwith a hand-built list ofeas/*steps. The steps engine runs strictly in sequence, so the build download, tool installs, and TURN credential fetch all wait for the simulator boot, and ordering rules such as "capture must start before the app launches" live only in the API server's step lists. See the discussion in expo/universe#30577.This is the first PR of a stack that gives sessions a typed job payload and a worker-owned lifecycle:
[eas-build-job]theDeviceRunSession.Jobpayload[build-tools]the session runner[worker]dispatchHow
DeviceRunSession.Job(packages/eas-build-job/src/deviceRunSessionJob.ts): a Zod schema describing the session (controller, duration, idle timeout, tunnel domain), the device (iOS or Android, discriminated onplatform), the optional application to install and launch, and the optional local egress.type: 'device-run-session'is the job-family discriminator.Generic.JobZalready reservesplatformandtypeasneverfor this purpose; build jobs usetypefor theirWorkflow, generic jobs leave itundefined, and session jobs set this literal. The comment ingeneric.tsnow names all three families.Generic.BuilderEnvironmentSchemaZso the new schema reuses it, and exports theStaticWorkflowInterpolationContexttype.Jobunion yet; [build-tools] add device run session runner #4413 does that together with the code that handles it.Test Plan
type, a setplatform, and an empty session id.yarn typecheck,yarn lint,yarn fmt:check, andcd packages/eas-build-job && yarn testpass.🤖 Generated with Claude Code