Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,18 @@ jobs:
release-build:
name: Release packaging
runs-on: macos-26
timeout-minutes: 45
timeout-minutes: 90
steps:
- uses: actions/checkout@v7
- name: Select Xcode
run: scripts/ci-select-xcode.sh
- name: Install the firmware helpers' build tools
run: brew install autoconf automake libtool pkg-config cmake
- name: Reuse the firmware helpers built from the same pinned sources
uses: actions/cache@v6
with:
path: build-output/restore-helpers
key: restore-helpers-${{ hashFiles('scripts/build-restore-helpers.sh') }}-${{ env.XCODE_VERSION }}
- name: Build, sign, and verify a release (not published)
# An empty VERSION means the version in ToolkitVersion.swift.
run: scripts/build-release.sh "" "$RUNNER_TEMP/release"
12 changes: 10 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,20 @@ jobs:
build:
name: Build universal app
runs-on: macos-26
timeout-minutes: 60
timeout-minutes: 90
steps:
- uses: actions/checkout@v7
- name: Select Xcode
run: scripts/ci-select-xcode.sh
- name: Test before packaging
run: swift test -Xswiftc -warnings-as-errors
- name: Install the firmware helpers' build tools
run: brew install autoconf automake libtool pkg-config cmake
- name: Reuse the firmware helpers built from the same pinned sources
uses: actions/cache@v6
with:
path: build-output/restore-helpers
key: restore-helpers-${{ hashFiles('scripts/build-restore-helpers.sh') }}-${{ env.XCODE_VERSION }}
- name: Build, sign, and verify the release
# Fails unless the tag (without "v") matches ToolkitVersion.current and MARKETING_VERSION.
run: scripts/build-release.sh "${GITHUB_REF_NAME#v}" release-assets
Expand Down Expand Up @@ -56,6 +63,7 @@ jobs:
zip="release-assets/iOS-Developer-Toolkit-Swift-$version-macOS-universal.zip"
sbom="release-assets/iOS-Developer-Toolkit-Swift-$version.spdx.json"
test -f "../$zip" && test -f "../$sbom"
test -f "iOS-Developer-Toolkit-Swift-$version-firmware-helpers-source.tar.gz"
echo "zip=$zip" >> "$GITHUB_OUTPUT"
echo "sbom=$sbom" >> "$GITHUB_OUTPUT"
- name: Attest build provenance
Expand All @@ -75,4 +83,4 @@ jobs:
--repo "$GITHUB_REPOSITORY" \
--title "iOS Developer Toolkit $GITHUB_REF_NAME" \
--generate-notes \
--notes "Universal (Apple silicon and Intel) macOS app, ad-hoc signed with the hardened runtime and not notarized. Verify SHA256SUMS.txt and the GitHub attestation before opening; see docs/release-verification.md."
--notes "Universal (Apple silicon and Intel) macOS app, ad-hoc signed with the hardened runtime and not notarized. Verify SHA256SUMS.txt and the GitHub attestation before opening; see docs/release-verification.md. The firmware helpers' complete source (idevicerestore and the libimobiledevice libraries, LGPL) is attached as firmware-helpers-source.tar.gz."
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ location-events.jsonl
*.cer
*.dmg
*.ipa
*.ipsw
*.mobileconfig
*.trustcache
BuildManifest.plist
Expand Down
2 changes: 1 addition & 1 deletion App/UITests/SmokeUITests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ final class SmokeUITests: XCTestCase {
}

func testEveryWorkspaceOpens() throws {
let workspaces = ["overview", "device", "developerImage", "readiness", "apps", "installApp", "location", "liveLogs", "actions", "backup", "evidence", "externalTools", "activity", "help", "safety"]
let workspaces = ["overview", "device", "developerImage", "firmware", "readiness", "apps", "installApp", "location", "liveLogs", "actions", "backup", "evidence", "externalTools", "activity", "help", "safety"]
for workspace in workspaces {
let item = app.descendants(matching: .any)["sidebar-\(workspace)"]
XCTAssertTrue(item.waitForExistence(timeout: 5), "Missing sidebar item \(workspace)")
Expand Down
2 changes: 2 additions & 0 deletions App/iOSDeveloperToolkit/Model/AppModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ final class AppModel {

// Feature models
let developerImage: DeveloperImageModel
let firmware: FirmwareModel
let location: LocationModel
let logs: LiveLogsModel
let apps: AppsModel
Expand Down Expand Up @@ -134,6 +135,7 @@ final class AppModel {
: .init()
discovery = DeviceDiscovery(configuration: configuration)
developerImage = DeveloperImageModel()
firmware = FirmwareModel()
location = LocationModel()
logs = LiveLogsModel()
apps = AppsModel()
Expand Down
Loading
Loading