Project not found.

iOS Infrastructure

project-page-ios-infrastructure Project Page

active project-page

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-infrastructure

Status

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