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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
85 changes: 56 additions & 29 deletions .github/workflows/MistKit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ jobs:
swift:
- version: "6.1"
- version: "6.2"
- version: "6.2"
- version: "6.3"
nightly: true

steps:
- uses: actions/checkout@v4
- uses: brightdigit/swift-build@v1.3.3
- uses: brightdigit/swift-build@v1.4.1
- uses: sersoft-gmbh/swift-coverage-action@v4
id: coverage-files
with:
Expand All @@ -49,7 +49,7 @@ jobs:
build: 6.2-RELEASE
steps:
- uses: actions/checkout@v4
- uses: brightdigit/swift-build@v1.3.3
- uses: brightdigit/swift-build@v1.4.1
with:
windows-swift-version: ${{ matrix.swift.version }}
windows-swift-build: ${{ matrix.swift.build }}
Expand All @@ -62,7 +62,40 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
os: windows
swift_project: MistKit
# files: ${{ join(fromJSON(steps.coverage-files.outputs.files), ',') }}
# files: ${{ join(fromJSON(steps.coverage-files.outputs.files), ',') }}
build-android:
name: Build on Android
runs-on: ubuntu-latest
if: ${{ !contains(github.event.head_commit.message, 'ci skip') }}
strategy:
fail-fast: false
matrix:
swift:
- version: "6.1"
- version: "6.2"
android-api-level: [28, 33, 34]
steps:
- uses: actions/checkout@v4
- name: Free disk space
if: matrix.build-only == false
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
android: false
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- uses: brightdigit/swift-build@v1.4.1
with:
scheme: ${{ env.PACKAGE_NAME }}
type: android
android-swift-version: ${{ matrix.swift.version }}
android-api-level: ${{ matrix.android-api-level }}
android-run-tests: true
# Note: Code coverage is not supported on Android builds
# The Swift Android SDK does not include LLVM coverage tools (llvm-profdata, llvm-cov)
build-macos:
name: Build on macOS
env:
Expand All @@ -74,32 +107,26 @@ jobs:
matrix:
include:
# SPM Build Matrix
- runs-on: macos-15
xcode: "/Applications/Xcode_26.0.app"
- runs-on: macos-26
xcode: "/Applications/Xcode_26.2.app"
- runs-on: macos-15
xcode: "/Applications/Xcode_16.4.app"
- runs-on: macos-15
xcode: "/Applications/Xcode_16.3.app"

# macOS Build Matrix
- type: macos
runs-on: macos-15
xcode: "/Applications/Xcode_16.4.app"
runs-on: macos-26
xcode: "/Applications/Xcode_26.2.app"

# iOS Build Matrix
- type: ios
runs-on: macos-15
xcode: "/Applications/Xcode_26.0.app"
runs-on: macos-26
xcode: "/Applications/Xcode_26.2.app"
deviceName: "iPhone 17 Pro"
osVersion: "26.0.1"
osVersion: "26.2"
download-platform: true

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

- type: ios
runs-on: macos-15
xcode: "/Applications/Xcode_16.3.app"
Expand All @@ -109,30 +136,30 @@ jobs:

# watchOS Build Matrix
- type: watchos
runs-on: macos-15
xcode: "/Applications/Xcode_26.0.app"
runs-on: macos-26
xcode: "/Applications/Xcode_26.2.app"
deviceName: "Apple Watch Ultra 3 (49mm)"
osVersion: "26.0"
osVersion: "26.2"

# tvOS Build Matrix
- type: tvos
runs-on: macos-15
xcode: "/Applications/Xcode_26.0.app"
runs-on: macos-26
xcode: "/Applications/Xcode_26.2.app"
deviceName: "Apple TV"
osVersion: "26.0"
osVersion: "26.2"

# visionOS Build Matrix
- type: visionos
runs-on: macos-15
xcode: "/Applications/Xcode_26.0.app"
runs-on: macos-26
xcode: "/Applications/Xcode_26.2.app"
deviceName: "Apple Vision Pro"
osVersion: "26.0"
osVersion: "26.2"

steps:
- uses: actions/checkout@v4

- name: Build and Test
uses: brightdigit/swift-build@v1.3.3
uses: brightdigit/swift-build@v1.4.1
with:
scheme: ${{ env.PACKAGE_NAME }}
type: ${{ matrix.type }}
Expand All @@ -153,9 +180,9 @@ jobs:

lint:
name: Linting
if: "!contains(github.event.head_commit.message, 'ci skip')"
if: "!contains(github.event.head_commit.message, 'ci skip')"
runs-on: ubuntu-latest
needs: [build-ubuntu, build-macos, build-windows]
needs: [build-ubuntu, build-macos, build-windows, build-android]
env:
MINT_PATH: .mint/lib
MINT_LINK_PATH: .mint/bin
Expand Down
39 changes: 39 additions & 0 deletions .github/workflows/check-unsafe-flags.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Check for unsafeFlags

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

jobs:
dump-package-check:
name: Dump Swift package (authoritative) and scan JSON
runs-on: ubuntu-latest
container:
image: swift:latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install jq
run: |
apt-get update && apt-get install -y jq

- name: Dump package JSON and check for unsafeFlags
shell: bash
run: |
set -euo pipefail
# Compute unsafeFlags array directly from the dump (don't store the full dump variable)
unsafe_flags=$(swift package dump-package | jq -c '[.. | objects | .unsafeFlags? // empty]')
# Check array length to decide failure
if [ "$(echo "$unsafe_flags" | jq 'length')" -gt 0 ]; then
echo "ERROR: unsafeFlags found in resolved package JSON:"
echo "$unsafe_flags" | jq '.' || true
echo "--- resolved package dump (first 200 lines) ---"
# Print a sample of the authoritative dump (re-run dump-package for the sample)
swift package dump-package | sed -n '1,200p' || true
exit 1
else
echo "No unsafeFlags in resolved package JSON."
fi
31 changes: 31 additions & 0 deletions .github/workflows/swift-source-compat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Swift Source Compatibility

on:
push:
branches: [main]
pull_request:
workflow_dispatch:

jobs:
swift-source-compat-suite:
name: Test Swift ${{ matrix.container }} For Source Compatibility Suite
runs-on: ubuntu-latest
if: ${{ !contains(github.event.head_commit.message, 'ci skip') }}
continue-on-error: ${{ contains(matrix.container, 'nightly') }}

strategy:
fail-fast: false
matrix:
container:
- swift:6.1
- swift:6.2
- swiftlang/swift:nightly-6.3-noble

container: ${{ matrix.container }}

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

- name: Test Swift 6.x For Source Compatibility
run: swift build --disable-sandbox --verbose --configuration release
16 changes: 0 additions & 16 deletions Examples/Bushel/.gitignore

This file was deleted.

Loading
Loading