Project not found.
iOS Infrastructure
iOS Infrastructure
Vision
Full IaC pipeline for iOS app lifecycle: from DNS registration to App Store distribution. Three custom OpenTofu providers (godaddy, appstoreconnect, orka) consumed by pal-e-platform, with Woodpecker CI driving builds on API-managed Mac infrastructure. Any Mac — personal, cloud, or owned mini — is bootstrapped from Salt states and joins the build fleet.
User Stories
| Key | Story Note | Role | Success Metric |
|---|---|---|---|
| provision | TBD | Platform engineer | <code>tofu apply</code> provisions bundle IDs, profiles, devices, DNS for a new iOS app |
| build | TBD | Platform engineer | Woodpecker builds, signs, and uploads to TestFlight with zero manual steps (after one-time app creation) |
| mac-fleet | TBD | Platform engineer | Any Mac bootstrapped from Salt and connected to Woodpecker within 30 minutes |
| no-fastlane | TBD | Platform engineer | Dev build on iPhone using only ASC API + xcodebuild — zero Fastlane dependency |
Architecture
Three-provider ecosystem consumed by pal-e-platform/terraform/:
- godaddy-tofu — DNS (done)
- appstoreconnect-tofu — Apple infrastructure (in progress)
- orka-tofu — Mac cloud VMs (not started, pending API research)
Build pipeline: Woodpecker CI → Mac agent (self-hosted) → xcodebuild + xcrun altool
Mac bootstrap: Salt states (Xcode CLI tools, certs, keychain, Woodpecker agent)
Architecture notes:
| Note | Scope |
|---|---|
| <code>arch-mac-bootstrap</code> | Salt bootstrap sequence, keychain constraints, Mac-as-cattle pattern |
| <code>arch-asc-provider</code> | ASC API capabilities, auth, app creation constraint |
| <code>arch-tofu-consumers</code> | How pal-e-platform and pal-e-services consume providers, Keycloak split |
Keycloak split: Platform creates realms (infrastructure primitive). Services manages users, clients, roles, group mappings inside realms (application-scoped).
Board
Board:
board-project-ios-infrastructureStatus
| Component | Status |
|---|---|
| godaddy-tofu | Done — in production |
| appstoreconnect-tofu | Repo + docs (PR #2 approved). API verified live. |
| orka-tofu | Not started — needs API research spike |
| Mac Salt bootstrap | Not started — macbook-ssh has docs, needs Salt states |
| Woodpecker Mac agent | Not started — depends on Salt bootstrap |
| Palinks TestFlight (no Fastlane) | Blocked — app not created in ASC web UI yet |
| fastlane-tofu | Archived — redundant (Fastlane just wraps ASC API + xcodebuild) |
Milestones
None yet.
Repos
| Repo | Platform | Role | Status |
|---|---|---|---|
| <code>ldraney/godaddy-tofu</code> | Forgejo | DNS provider | Production |
| <code>ldraney/appstoreconnect-tofu</code> | Forgejo | Apple infra provider | PR #2 (docs) |
| <code>ldraney/orka-tofu</code> | Forgejo | Mac cloud provider | Not created yet |
| <code>ldraney/pal-e-platform</code> | Forgejo | Consumer (terraform/) | Active |
| <code>ldraney/pal-e-services</code> | Forgejo | Service registration + Keycloak users | Active |
| <code>ldraney/macbook-ssh</code> | Forgejo | Mac bootstrap (→ Salt) | Docs only |
| <code>ldraney/palinks-ios</code> | Forgejo | iOS app | Archive builds |
| <code>ldraney/landscaping-assistant-ios</code> | Forgejo | iOS app (template) | TestFlight |
| <code>ldraney/fastlane-tofu</code> | Forgejo | Archived — redundant | Archived |