mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 02:29:55 +02:00
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.
This commit is contained in:
40
ci_scripts/README.md
Normal file
40
ci_scripts/README.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user