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
45 changes: 39 additions & 6 deletions .github/workflows/MistKit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:

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/[email protected]
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 Down Expand Up @@ -132,7 +165,7 @@ jobs:
- 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 +186,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
34 changes: 34 additions & 0 deletions .github/workflows/check-unsafe-flags.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
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: Dump package JSON and check for unsafeFlags
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
6 changes: 3 additions & 3 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ let package = Package(
dependencies: [
// Swift OpenAPI Runtime dependencies
.package(url: "https://github.com/apple/swift-openapi-runtime", from: "1.8.0"),
.package(url: "https://github.com/apple/swift-openapi-urlsession", from: "1.1.0"),
.package(url: "https://github.com/apple/swift-openapi-urlsession", from: "1.2.0"),
// Crypto library for cross-platform cryptographic operations
.package(url: "https://github.com/apple/swift-crypto.git", from: "3.0.0"),
// Logging library for cross-platform logging
Expand Down
Loading