# Xcode Cloud CI scripts Xcode Cloud runs the scripts in this directory around each build. Only `ci_post_clone.sh` is used today; add `ci_pre_xcodebuild.sh` / `ci_post_xcodebuild.sh` here if later steps are needed. ## What `ci_post_clone.sh` does The Xcode project (`apple/VniDrop.xcodeproj`) and its generated inputs are **not** committed — they are produced by XcodeGen, localization, and the Rust core build. Since Xcode Cloud only checks out the repository, the post-clone script: 1. installs `swiftlint`, `xcodegen`, and `bun`; 2. **downloads the prebuilt core** (`vnidrop.xcframework` + `Vnidrop.swift`) from the matching GitHub Release asset `VnidropCore-.zip` — Xcode Cloud never builds Rust; 3. runs localization + version/app config codegen and `xcodegen generate` (equivalent to `make apple-project` without the `apple-core` step). The core asset for version `X.Y.Z` must be published on the `vX.Y.Z` release before an Xcode Cloud build for that version runs (see `apple/scripts/package-core.sh` and `.github/workflows/apple-release.yml`). ### Overrides (env vars, optional) | Variable | Default | Purpose | |----------|---------|---------| | `VNIDROP_CORE_REPO` | `sudosylabs/vnidrop` | Release repository to download the core from | | `VNIDROP_CORE_TAG` | `v` | Release tag holding the core asset | ## Workflow configuration (App Store Connect) The workflow itself (product, scheme, triggers, actions) is configured in App Store Connect, not in the repository. Point it at: - **Project:** `apple/VniDrop.xcodeproj` (generated by the post-clone script) - **Scheme:** `VniDrop` (App Store / TestFlight target; shared, see `apple/project.yml`) Archive actions use the release Rust profile via the published core asset; build and test actions reuse the same prebuilt core.