Xcode Cloud only checks out the repo, so ci_post_clone.sh installs swiftlint, xcodegen and bun, downloads the prebuilt core (vnidrop.xcframework + Vnidrop.swift) from the matching GitHub Release asset, and generates the project via localization, version/app config codegen and xcodegen. Rust is never built on Xcode Cloud.
1.8 KiB
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:
- installs
swiftlint,xcodegen, andbun; - downloads the prebuilt core (
vnidrop.xcframework+Vnidrop.swift) from the matching GitHub Release assetVnidropCore-<version>.zip— Xcode Cloud never builds Rust; - runs localization + version/app config codegen and
xcodegen generate(equivalent tomake apple-projectwithout theapple-corestep).
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<product-version> |
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, seeapple/project.yml)
Archive actions use the release Rust profile via the published core asset; build and test actions reuse the same prebuilt core.