mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 10:29:58 +02:00
Add a second macOS shipping channel alongside the App Store build: - New VniDropDirect target (Release-Direct config) sharing VniDrop's sources via an AppBase target template; links Sparkle behind the DIRECT_DISTRIBUTION flag so the App Store binary never bundles a self-updater. arm64-only (core is arm64). - Sparkle updater (SparkleUpdater.swift) + "Check for Updates" menu, compiled only under DIRECT_DISTRIBUTION; Info.plist SUFeedURL points at the GitHub Release /latest/download/appcast.xml, non-sandboxed entitlements for Developer ID. - build-dmg.sh (archive → Developer ID export → DMG → sign → notarize → staple), generate-appcast.sh, and ExportOptions-DeveloperID.plist. - apple-release.yml: on tag v*.*.*, build/notarize the DMG, publish the GitHub Release with appcast, and push the Homebrew cask to sudosylabs/homebrew-vnidrop. apple.yml gains a PR compile-check of the direct target. - CFBundleVersion is stamped at build time as a UTC YYMMDD.HHMM timestamp for both channels, replacing the hand-maintained build number. - Docs (RELEASE-MACOS.md, README), cask template + tap README, localized updates_check string, Makefile targets, gitignore for dist/ artifacts.
84 lines
2.2 KiB
YAML
84 lines
2.2 KiB
YAML
name: Apple
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- "apple/**"
|
|
- "crates/vnidrop/**"
|
|
- "crates/uniffi-bindgen/**"
|
|
- "Cargo.toml"
|
|
- "Cargo.lock"
|
|
- "Makefile"
|
|
- "config.mk"
|
|
- "make/**"
|
|
- ".github/workflows/apple.yml"
|
|
- "localization/**"
|
|
push:
|
|
branches:
|
|
- master
|
|
paths:
|
|
- "apple/**"
|
|
- "crates/vnidrop/**"
|
|
- "crates/uniffi-bindgen/**"
|
|
- "Cargo.toml"
|
|
- "Cargo.lock"
|
|
- "Makefile"
|
|
- "config.mk"
|
|
- "make/**"
|
|
- ".github/workflows/apple.yml"
|
|
- "localization/**"
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: apple-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-test:
|
|
runs-on: macos-latest
|
|
timeout-minutes: 75
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Select Xcode
|
|
# Pin so the simulator device name below stays predictable.
|
|
run: sudo xcode-select -s /Applications/Xcode.app
|
|
|
|
- name: Install Rust toolchain
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: aarch64-apple-ios,aarch64-apple-ios-sim,x86_64-apple-ios,aarch64-apple-darwin
|
|
|
|
- name: Cache Cargo
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
target
|
|
key: apple-cargo-${{ hashFiles('Cargo.lock') }}
|
|
restore-keys: apple-cargo-
|
|
|
|
- name: Install XcodeGen
|
|
run: brew install xcodegen
|
|
|
|
- name: Install SwiftLint
|
|
# Required by the VniDrop target's SwiftLint build phase (typed-resources rules).
|
|
run: brew install swiftlint
|
|
|
|
- name: Install Bun
|
|
# The Apple l10n catalog (Localizable.xcstrings) and L10n.swift are
|
|
# generated from localization/strings.json at build time, not tracked.
|
|
uses: oven-sh/setup-bun@v2
|
|
|
|
- name: Build and test Apple app
|
|
run: make check-apple
|
|
|
|
- name: Build direct-download macOS target (Sparkle, unsigned)
|
|
# Keeps the VniDropDirect (.dmg/Sparkle) target compiling; signing and
|
|
# notarization happen only in apple-release.yml on a tag.
|
|
run: make build-apple-macos-direct
|