-
-
Notifications
You must be signed in to change notification settings - Fork 0
Development Validation and CI
This page documents how to build, test, and validate the Forsetti app and how GitHub Actions is configured for the private repository.
The app project depends on the public Forsetti framework products through a local sibling package path.
/Users/jim/GitHub/
Forsetti-Jamf-Pro/
Forsetti.xcodeproj
ForsettiApp/
ForsettiTests/
Forsetti-Framework-Mac-iOS-main/
Package.swift
Sources/
The Xcode project references:
../Forsetti-Framework-Mac-iOS-main
and links:
ForsettiCoreForsettiPlatform
xcodebuild -list -project Forsetti.xcodeproj
xcodebuild -project Forsetti.xcodeproj -scheme Forsetti -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO clean build
xcodebuild -project Forsetti.xcodeproj -scheme Forsetti -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO test
xcodebuild -project Forsetti.xcodeproj -scheme Forsetti -destination 'generic/platform=iOS' CODE_SIGNING_ALLOWED=NO buildbash scripts/verify-no-customer-references.sh .
bash scripts/verify-no-customer-residue.sh .
bash .github/scripts/check-provenance-markers.sh .If SwiftLint is installed:
swiftlint lint --strict --config .swiftlint.ymlIf SwiftLint is unavailable, document the missing executable and run the remaining validation commands.
| Group | Command or evidence |
|---|---|
| Project/package resolution | xcodebuild -list -project Forsetti.xcodeproj |
| macOS build | xcodebuild ... clean build |
| macOS tests | xcodebuild ... test |
| iOS generic build | xcodebuild ... -destination 'generic/platform=iOS' build |
| Static customer-reference guard | scripts/verify-no-customer-references.sh |
| Static residue guard | scripts/verify-no-customer-residue.sh |
| Provenance guard | .github/scripts/check-provenance-markers.sh |
| CI validation | GitHub Actions macOS validation and Provenance Guard
|
The macOS validation workflow checks out the app repo and the framework repo side by side so Xcode can resolve the local package path.
flowchart TD
Runner["GitHub runner workspace"] --> AppCheckout["forsetti-Jamf-Pro/"]
Runner --> FrameworkCheckout["Forsetti-Framework-Mac-iOS-main/"]
AppCheckout --> Project["Forsetti.xcodeproj"]
Project --> LocalPackage["../Forsetti-Framework-Mac-iOS-main"]
FrameworkCheckout --> Products["ForsettiCore + ForsettiPlatform"]
Project --> Resolve["xcodebuild -list"]
Resolve --> Test["xcodebuild test"]
Workflow checkout shape:
- name: Checkout
uses: actions/checkout@v4
with:
path: forsetti-Jamf-Pro
- name: Checkout Forsetti framework
uses: actions/checkout@v4
with:
repository: flynn33/Forsetti-Framework
ref: main
path: Forsetti-Framework-Mac-iOS-mainThe job default working directory is forsetti-Jamf-Pro, which makes the project package path resolve to the sibling framework checkout.
sequenceDiagram
participant Push as Push or PR update
participant Guard as Provenance Guard
participant Mac as macOS validation
participant App as App checkout
participant Framework as Framework checkout
participant Xcode as xcodebuild
Push->>Guard: trigger
Guard->>App: checkout repository
Guard->>Guard: self-test guard
Guard->>Guard: scan repository and PR text
Guard-->>Push: pass/fail
Push->>Mac: trigger
Mac->>App: checkout app to forsetti-Jamf-Pro
Mac->>Framework: checkout framework sibling
Mac->>Mac: sanitation scan
Mac->>Xcode: resolve project
Xcode->>Xcode: resolve local framework package
Mac->>Xcode: run macOS tests
Xcode-->>Push: pass/fail
Forsetti tests cover:
- Runtime manifest and registry alignment.
- Computer and mobile search filters, records, hardware display, profile behavior, and pagination.
- Support Technician search, command history parsing, remote support readiness, target resolution, action availability, secret extraction, temporary admin model/service/view-model behavior, and layout.
- Reports aggregation, export/rendering behavior, pagination, field catalog, and generated view models.
- Deployment Tracker demo safety, workflow transitions, guide topics, preload rendering, upload/pagination helpers, and records/export behavior.
- Permissions Helper matrix decoding, command filtering, privilege matching, runtime graph, and diagram layout.
- Diagnostics export, pruning, and persistence behavior.
- UI foundation and responsive layout behavior.
- Confirm the framework sibling package is present locally.
- Run project resolution.
- Run macOS build.
- Run macOS tests.
- Run iOS generic build.
- Run customer-reference and residue guard scripts.
- Run provenance guard script.
- Run SwiftLint when available.
- Verify GitHub Actions checks are green on the target PR or branch.
- Confirm license/distribution terms before public distribution.
- The repository is private.
- The wiki is a separate Git repository at
https://github.com/flynn33/forsetti-Jamf-Pro.wiki.git. - The app repository uses a local Swift package reference for framework integration.
- GitHub Actions compensates for that local reference by checking out
flynn33/Forsetti-Frameworkinto the expected sibling path. - Final signing identities and distribution terms require owner approval before public distribution.
Forsetti Jamf Pro documentation. Keep module IDs, build commands, and security behavior aligned with the repository source before changing this wiki.