-
Notifications
You must be signed in to change notification settings - Fork 980
iOS/iPadOS in-house apps (.ipa): Support setup experience #33995
Copy link
Copy link
Open
0 / 30 of 3 issues completedOpen
0 / 30 of 3 issues completed
Copy link
Labels
#g-apple-at-workProduct group focused on Apple devicesProduct group focused on Apple devices:productProduct Design department (shows up on 🦢 Drafting board)Product Design department (shows up on 🦢 Drafting board)P2Urgent: Supported workflow not functioning as intended, newly drafted feature with urgent Fleet needUrgent: Supported workflow not functioning as intended, newly drafted feature with urgent Fleet needcustomer-pingalistoryA user story defining an entire featureA user story defining an entire feature~activation-blockerBlocks a customer activationBlocks a customer activation~coreFeature contributes to the core purpose of Fleet: guide people out of the thicket through openness.Feature contributes to the core purpose of Fleet: guide people out of the thicket through openness.
Milestone
Description
Metadata
Metadata
Assignees
Labels
#g-apple-at-workProduct group focused on Apple devicesProduct group focused on Apple devices:productProduct Design department (shows up on 🦢 Drafting board)Product Design department (shows up on 🦢 Drafting board)P2Urgent: Supported workflow not functioning as intended, newly drafted feature with urgent Fleet needUrgent: Supported workflow not functioning as intended, newly drafted feature with urgent Fleet needcustomer-pingalistoryA user story defining an entire featureA user story defining an entire feature~activation-blockerBlocks a customer activationBlocks a customer activation~coreFeature contributes to the core purpose of Fleet: guide people out of the thicket through openness.Feature contributes to the core purpose of Fleet: guide people out of the thicket through openness.
Type
Projects
StatusShow more project fields
No status
StatusShow more project fields
🐣 In progress
Goal
.ipapackage) on iOS/iPadOS hosts when they enroll to Fleet.Changes
Product
.ipa(in-house) software titles in the "Select software" modal for the iOS and iPadOS tabs.PUT /api/v1/fleet/setup_experience/softwaremust accept.ipasoftware title IDs for the ios and ipados platforms.fleetctl generate-gitopsshould emitsetup_experience: truefor.ipapackages that are selected for setup experience and setup_experience_platform if only selected for a single platform.edited_setup_experience_softwareactivity item.Engineering
BYOD Devices
Risk assessment
Test plan
Core flow
.ipapackage via Software > Add software > Custom package (or API). Verify two software titles are created (one for iOS, one for iPadOS)..ipasoftware title appears in the "Select software" modal. Add it to setup experience and save.GET /api/v1/fleet/setup_experience/softwarelists the.ipatitle for ios and ipados platforms (previously filtered out).AwaitingConfiguration==true). Verify that Fleet enqueues anInstallApplicationMDM command with ManifestURL for the.ipaapp.DeviceConfigured(release the host from Setup Assistant) until the.ipaapp is verified as installed(or fleet hits the existing timeout).AwaitingConfiguration==true). Verify that Fleet enqueues anInstallApplicationMDM command with ManifestURL for the.ipaapp..ipaapp is installed.ipaapp with "Installed" status, and that the install activity appears on the Host details page.Edge cases
iOS/iPadOS title split (one
.ipa= two titles)GET.Platform isolation (filter must stay tight)
.ipatitle does not appear in the macOS, Windows, or Linux tabs of the "Select software" modal.GET .../setup_experience/software?platform=macos(andwindows/linux) still excludes the.ipatitle — onlyios/ipadosshould surface it.Install failure & host release
.ipainstall to fail during Setup Assistant (e.g. incompatible OS version, corrupt/unsigned manifest which may require a special fleet build. Implementing engineer to provide instructions). Verify the host is still eventually released (does not hang inAwaitingConfiguration) if enrolling via ABM and the failure is surfaced in setup-experience results / Host details.Coexistence / lifecycle
.ipain-house app + a VPP app on the same platform → both install during setup, in a deterministic order..ipato setup experience, then delete the software title → Verify the deletion is blocked and it can only be deleted if first unassigned from setup experience..ipawhile it is assigned to setup experience → verify it stays assigned (or the expected re-selection behavior) and the new version is what installs.$FLEET_VAR_*in the config are correctly applied to the.ipainstall during setup (not just for post-enrollment installs).GitOps (generate + run)
.ipasetup experience in the UI and runfleetctl generate-gitops..ymlemitssetup_experience: trueon the (deduped, single) in-house app entry — verify the flag survives the iOS+iPadOS title dedup..ymland runfleetctl gitops; confirm the configuration updates correctly in Fleet.setup_experience: trueon an.ipafrom scratch in YAML and apply → confirm it is accepted (this extension previously wasn't an allowed setup-experience platform)..ipacan be applied to only iOS or iPadOS setup experience via gitops without applying to both by using setup_experience_platformsSupplemental testing
Testing notes
Confirmation