Skip to content
Draft
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
50 changes: 50 additions & 0 deletions .github/actions/setup-sundialkit/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Setup SundialKit
description: Replaces the local SundialKit path dependency with a remote reference, pinned to the branch's current commit

inputs:
branch:
description: SundialKit branch to use (leave empty to keep the local path dependency)

runs:
using: composite
steps:
# Resolve the branch to its current HEAD commit and pin the dependency by
# `revision:` rather than `branch:`. This makes the dependency content-addressed,
# so `swift package dump-package` (which swift-build@v1 hashes for its cache key)
# changes whenever the SundialKit branch advances — otherwise a new SundialKit commit
# on the same branch yields a stale cache hit and is never rebuilt. Falls back to a
# `branch:` pin if the ref can't be resolved (e.g. offline).
- name: Update Package.swift (Unix)
if: inputs.branch != '' && runner.os != 'Windows'
shell: bash
run: |
BRANCH='${{ inputs.branch }}'
REF=$(git ls-remote https://github.com/brightdigit/SundialKit.git "$BRANCH" | head -n1 | cut -f1)
if [ -n "$REF" ]; then
REQ='revision: "'"$REF"'"'
echo "Pinning SundialKit to $BRANCH @ $REF"
else
REQ='branch: "'"$BRANCH"'"'
echo "Could not resolve $BRANCH to a commit; pinning by branch"
fi
if [ "$RUNNER_OS" = "macOS" ]; then
sed -i '' 's|\.package(name: "SundialKit", path: "\.\./SundialKit")|.package(url: "https://github.com/brightdigit/SundialKit.git", '"$REQ"')|g' Package.swift
else
sed -i 's|\.package(name: "SundialKit", path: "\.\./SundialKit")|.package(url: "https://github.com/brightdigit/SundialKit.git", '"$REQ"')|g' Package.swift
fi
rm -f Package.resolved
- name: Update Package.swift (Windows)
if: inputs.branch != '' && runner.os == 'Windows'
shell: pwsh
run: |
$branch = '${{ inputs.branch }}'
$ref = (git ls-remote https://github.com/brightdigit/SundialKit.git $branch | Select-Object -First 1) -split "`t" | Select-Object -First 1
if ($ref) {
$req = "revision: `"$ref`""
Write-Host "Pinning SundialKit to $branch @ $ref"
} else {
$req = "branch: `"$branch`""
Write-Host "Could not resolve $branch to a commit; pinning by branch"
}
(Get-Content Package.swift) -replace '\.package\(name: "SundialKit", path: "\.\./SundialKit"\)', ".package(url: `"https://github.com/brightdigit/SundialKit.git`", $req)" | Set-Content Package.swift
Remove-Item -Path Package.resolved -Force -ErrorAction SilentlyContinue
83 changes: 71 additions & 12 deletions .github/workflows/SundialKit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ on:
push:
branches:
- main
- atleast-beta.6
tags:
- 'v[0-9]*.[0-9]*.[0-9]*'
paths-ignore:
Expand All @@ -14,6 +15,7 @@ on:
branches:
- main
- 'v[0-9]*.[0-9]*.[0-9]*'
- atleast-beta.6
paths-ignore:
- '**.md'
- 'Docs/**'
Expand All @@ -39,7 +41,7 @@ jobs:
- name: Determine build matrix
id: set-matrix
run: |
if [[ "${{ github.ref }}" == "refs/heads/main" || "${{ github.event_name }}" == "pull_request" ]]; then
if [[ "${{ github.ref }}" == "refs/heads/main" || "${{ github.ref }}" == "refs/heads/atleast-beta.6" || "${{ github.event_name }}" == "pull_request" ]]; then
echo "full-matrix=true" >> "$GITHUB_OUTPUT"
echo 'ubuntu-os=["noble","jammy"]' >> "$GITHUB_OUTPUT"
echo 'ubuntu-swift=[{"version":"6.1"},{"version":"6.2"},{"version":"6.3"}]' >> "$GITHUB_OUTPUT"
Expand Down Expand Up @@ -135,7 +137,61 @@ jobs:
include:
# SPM Build — no platform type; matrix.type evaluates to '' by design
- runs-on: macos-26
xcode: "/Applications/Xcode_26.4.app"
xcode: "/Applications/Xcode_26.5.app"
- runs-on: macos-26
xcode: "/Applications/Xcode_26.1.app"
- runs-on: macos-15
xcode: "/Applications/Xcode_16.4.app"

# iOS Build Matrix - Xcode 16.x+ (Swift 6.x)
- type: ios
runs-on: macos-26
xcode: "/Applications/Xcode_26.5.app"
deviceName: "iPhone 17 Pro"
osVersion: "26.5"
download-platform: true

- type: ios
runs-on: macos-26
xcode: "/Applications/Xcode_26.1.app"
deviceName: "iPhone 17 Pro"
osVersion: "26.1"
download-platform: true

- type: ios
runs-on: macos-15
xcode: "/Applications/Xcode_16.4.app"
deviceName: "iPhone 16e"
osVersion: "18.5"

# watchOS Build Matrix - Xcode 16.x+ (Swift 6.x)
- type: watchos
runs-on: macos-26
xcode: "/Applications/Xcode_26.5.app"
deviceName: "Apple Watch Ultra 3 (49mm)"
osVersion: "26.5"
download-platform: true

- type: watchos
runs-on: macos-26
xcode: "/Applications/Xcode_26.1.app"
deviceName: "Apple Watch Series 11 (46mm)"
osVersion: "26.1"
download-platform: true

- type: watchos
runs-on: macos-15
xcode: "/Applications/Xcode_16.4.app"
deviceName: "Apple Watch Series 10 (46mm)"
osVersion: "11.5"

# visionOS Build Matrix - Xcode 16.x+ (Swift 6.x)
- type: visionos
runs-on: macos-26
xcode: "/Applications/Xcode_26.5.app"
deviceName: "Apple Vision Pro"
osVersion: "26.5"
download-platform: true

steps:
- uses: actions/checkout@v6
Expand Down Expand Up @@ -183,38 +239,38 @@ jobs:
# macOS Build
- type: macos
runs-on: macos-26
xcode: "/Applications/Xcode_26.4.app"
xcode: "/Applications/Xcode_26.5.app"

# iOS Build Matrix
- type: ios
runs-on: macos-26
xcode: "/Applications/Xcode_26.4.app"
xcode: "/Applications/Xcode_26.5.app"
deviceName: "iPhone 17 Pro"
osVersion: "26.4"
osVersion: "26.5"
download-platform: true

# watchOS Build Matrix
- type: watchos
runs-on: macos-26
xcode: "/Applications/Xcode_26.4.app"
xcode: "/Applications/Xcode_26.5.app"
deviceName: "Apple Watch Ultra 3 (49mm)"
osVersion: "26.4"
osVersion: "26.5"
download-platform: true

# tvOS Build Matrix
- type: tvos
runs-on: macos-26
xcode: "/Applications/Xcode_26.4.app"
xcode: "/Applications/Xcode_26.5.app"
deviceName: "Apple TV"
osVersion: "26.4"
osVersion: "26.5"
download-platform: true

# visionOS Build Matrix
- type: visionos
runs-on: macos-26
xcode: "/Applications/Xcode_26.4.app"
xcode: "/Applications/Xcode_26.5.app"
deviceName: "Apple Vision Pro"
osVersion: "26.4"
osVersion: "26.5"
download-platform: true

steps:
Expand Down Expand Up @@ -253,7 +309,10 @@ jobs:
swift:
- version: "6.2"
- version: "6.3"
android-api-level: [33, 34, 35, 36]
# API 36 dropped: Swift 6.x Android SDK lacks API-36 CRT objects
# (crtbegin_dynamic.o/crtend_android.o), link fails. Re-add when the
# SDK ships an NDK r28+ sysroot. See skiptools/swift-android-action.
android-api-level: [33, 34, 35]
steps:
- uses: actions/checkout@v6
- name: Free disk space
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ on:
- '*WIP'
pull_request:
# The branches below must be a subset of the branches above
branches: [ "main" , "v2.0.0" ]
branches: [ "main" ]
schedule:
- cron: '20 11 * * 3'

Expand All @@ -29,7 +29,7 @@ jobs:
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners
# Consider using larger runners for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-15') || 'ubuntu-latest' }}
runs-on: ${{ (matrix.language == 'swift' && 'macos-26') || 'ubuntu-latest' }}
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
permissions:
actions: read
Expand All @@ -47,10 +47,10 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Setup Xcode
run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
run: sudo xcode-select -s /Applications/Xcode_26.5.app/Contents/Developer

- name: Verify Swift Version
run: |
Expand All @@ -59,7 +59,7 @@ jobs:

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
Expand All @@ -77,6 +77,6 @@ jobs:
swift build

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{matrix.language}}"
24 changes: 15 additions & 9 deletions .github/workflows/sundial-demo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,20 @@ jobs:
fail-fast: false
matrix:
include:
# iOS Build - Xcode 26.4 on macOS-26
# iOS Build - Xcode 26.5 on macOS-26
- type: ios
runs-on: macos-26
xcode: "/Applications/Xcode_26.4.app"
xcode: "/Applications/Xcode_26.5.app"
deviceName: "iPhone 17 Pro"
osVersion: "26.4"
osVersion: "26.5"
download-platform: true

# watchOS Build - Xcode 26.4 on macOS-26
# watchOS Build - Xcode 26.5 on macOS-26
- type: watchos
runs-on: macos-26
xcode: "/Applications/Xcode_26.4.app"
xcode: "/Applications/Xcode_26.5.app"
deviceName: "Apple Watch Ultra 3 (49mm)"
osVersion: "26.4"
osVersion: "26.5"
download-platform: true

steps:
Expand Down Expand Up @@ -111,7 +111,13 @@ jobs:
working-directory: ${{ env.DEMO_PATH }}

- name: Select Xcode
run: sudo xcode-select -s "/Applications/Xcode_26.4.app"
run: sudo xcode-select -s "/Applications/Xcode_26.5.app"

- name: Download iOS platform
run: xcodebuild -downloadPlatform iOS

- name: Download watchOS platform
run: xcodebuild -downloadPlatform watchOS

- name: Setup SSH for AppCerts repository
uses: webfactory/ssh-agent@v0.9.0
Expand Down Expand Up @@ -144,7 +150,7 @@ jobs:
FASTLANE_KEYCHAIN_PASSWORD: ${{ steps.keychain.outputs.password }}
APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_ID }}
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }}
APP_STORE_CONNECT_API_KEY_KEY_BASE64: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_BASE64 }}
DEVELOPMENT_TEAM: ${{ secrets.DEVELOPMENT_TEAM }}

- name: Upload Pulse IPA
Expand Down Expand Up @@ -199,7 +205,7 @@ jobs:
env:
APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_ID }}
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }}
APP_STORE_CONNECT_API_KEY_KEY_BASE64: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_BASE64 }}

- name: Increment build number and commit
if: success()
Expand Down
4 changes: 2 additions & 2 deletions .mise.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ ruby = "3.3.0"
# Swift development tools (migrated from Mint)
# Using Swift Package Manager plugins
"spm:swiftlang/swift-format" = "602.0.0"
swiftlint = "0.61.0"
"spm:peripheryapp/periphery" = "3.2.0"
"aqua:realm/SwiftLint" = "0.62.2"
"spm:peripheryapp/periphery" = "3.7.4"

# Xcode project generation
xcodegen = "2.43.0"
Expand Down
6 changes: 6 additions & 0 deletions Examples/Sundial/.mise.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[tools]
# Protocol Buffer Swift plugin (migrated from Mint)
"spm:apple/swift-protobuf" = "1.38.0"

[settings]
experimental = true
Loading
Loading