Files
vnidrop/ci_scripts
cdricms 7cb2270d56 ci(apple): add Xcode Cloud post-clone script
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.
2026-08-02 10:29:46 +02:00
..

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-<version>.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<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, 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.