Skip to content

Basic GDB remote protocol scaffolding #677

Basic GDB remote protocol scaffolding

Basic GDB remote protocol scaffolding #677

Workflow file for this run

name: Build and test
on:
pull_request:
push:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
build-macos:
strategy:
matrix:
include:
# Swift 6.0
- os: macos-14
xcode: Xcode_16.2
development-toolchain-tag: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz"
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9"
test-args: ""
# Swift 6.1
- os: macos-15
xcode: Xcode_16.4
development-toolchain-tag: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz"
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9"
test-args: "--sanitize address"
# Swift 6.2
- os: macos-15
xcode: Xcode_26.0
development-toolchain-tag: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz"
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9"
test-args: "--sanitize address"
runs-on: ${{ matrix.os }}
name: "build-macos (${{ matrix.xcode }})"
steps:
- uses: actions/checkout@v4
- id: setup-development
run: |
toolchain_path="/Library/Developer/Toolchains/${{ matrix.development-toolchain-tag }}.xctoolchain"
pkg="$(mktemp -d)/InstallMe.pkg"
development_toolchain_download="https://download.swift.org/development/xcode/${{ matrix.development-toolchain-tag }}/${{ matrix.development-toolchain-tag }}-osx.pkg"
curl -L "$development_toolchain_download" -o $pkg
sudo installer -pkg $pkg -target /
echo "toolchain-path=$toolchain_path" >> $GITHUB_OUTPUT
"$toolchain_path/usr/bin/swift" sdk install "${{ matrix.wasi-swift-sdk-download }}" --checksum "${{ matrix.wasi-swift-sdk-checksum }}"
wasi_sdk_path=$("$toolchain_path/usr/bin/swift" sdk configure --show-configuration "${{ matrix.wasi-swift-sdk-id }}" wasm32-unknown-wasi | grep sdkRootPath: | cut -d: -f2)
echo "wasi-swift-sdk-path=$(dirname $wasi_sdk_path)" >> $GITHUB_OUTPUT
- name: Select Xcode version
run: sudo xcode-select -switch /Applications/${{ matrix.xcode }}.app
- name: Configure Tests/default.json
run: |
cat <<EOS > Tests/default.json
{
"swiftExecutablePath": "${{ steps.setup-development.outputs.toolchain-path }}/usr/bin/swift",
"wasiSwiftSDKPath": "${{ steps.setup-development.outputs.wasi-swift-sdk-path }}",
"hostSwiftExecutablePath": "$(xcrun --find swift)",
"hostSdkRootPath": "$(xcrun --show-sdk-path --sdk macosx)"
}
EOS
- run: ./Vendor/checkout-dependency
- run: swift test ${{ matrix.test-args }}
build-xcode:
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- name: Prepare Xcode platforms
run: |
set -euxo pipefail
sudo xcode-select -s /Applications/Xcode_26.0.app
sudo xcodebuild -runFirstLaunch || true
for PLAT in iOS tvOS watchOS visionOS; do
if ! xcodebuild -showsdks | grep -q "$PLAT"; then
echo "Downloading $PLAT platform..."
sudo xcodebuild -downloadPlatform "$PLAT"
fi
done
xcodebuild -showsdks
xcodebuild -scheme WasmKit-Package -showdestinations || true
- run: xcrun xcodebuild -skipMacroValidation -skipPackagePluginValidation build -scheme WasmKit-Package -destination generic/platform=macOS
- run: xcrun xcodebuild -skipMacroValidation -skipPackagePluginValidation build -scheme WasmKit-Package -destination generic/platform=iOS
- run: xcrun xcodebuild -skipMacroValidation -skipPackagePluginValidation build -scheme WasmKit-Package -destination generic/platform=watchOS
- run: xcrun xcodebuild -skipMacroValidation -skipPackagePluginValidation build -scheme WasmKit-Package -destination generic/platform=tvOS
- run: xcrun xcodebuild -skipMacroValidation -skipPackagePluginValidation build -scheme WasmKit-Package -destination generic/platform=visionOS
build-linux:
strategy:
matrix:
include:
- swift: "swift:6.0-jammy"
development-toolchain-download: "https://download.swift.org/development/ubuntu2204/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a-ubuntu22.04.tar.gz"
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz"
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9"
- swift: "swift:6.1-noble"
development-toolchain-download: "https://download.swift.org/development/ubuntu2404/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a-ubuntu24.04.tar.gz"
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz"
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9"
- swift: "swift:6.2-amazonlinux2"
development-toolchain-download: "https://download.swift.org/development/amazonlinux2/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a-amazonlinux2.tar.gz"
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz"
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9"
- swift: "swift:6.2-noble"
development-toolchain-download: "https://download.swift.org/development/ubuntu2404/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a-ubuntu24.04.tar.gz"
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz"
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9"
test-args: "--enable-code-coverage"
build-dev-dashboard: true
- swift: "swiftlang/swift:nightly-main-noble"
development-toolchain-download: "https://download.swift.org/development/ubuntu2404/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a-ubuntu24.04.tar.gz"
wasi-swift-sdk-download: "https://download.swift.org/development/wasm-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm.artifactbundle.tar.gz"
wasi-swift-sdk-id: swift-DEVELOPMENT-SNAPSHOT-2025-10-02-a_wasm
wasi-swift-sdk-checksum: "b64dfad9e1c9ccdf06f35cf9b1a00317e000df0c0de0b3eb9f49d6db0fcba4d9"
test-args: "-Xswiftc -DWASMKIT_CI_TOOLCHAIN_NIGHTLY"
runs-on: ubuntu-24.04
name: "build-linux (${{ matrix.swift }})"
steps:
- uses: actions/checkout@v4
- name: Configure container
run: |
docker run -dit --name build-container -v $PWD:/workspace -w /workspace ${{ matrix.swift }}
echo 'docker exec -i build-container "$@"' > ./build-exec
chmod +x ./build-exec
- name: Install Development toolchain
id: setup-development
run: |
toolchain_path="/opt/swiftwasm"
./build-exec mkdir -p "$toolchain_path"
curl -L ${{ matrix.development-toolchain-download }} | ./build-exec tar xz --strip-component 1 -C "$toolchain_path"
echo "toolchain-path=$toolchain_path" >> $GITHUB_OUTPUT
./build-exec "$toolchain_path/usr/bin/swift" sdk install "${{ matrix.wasi-swift-sdk-download }}" --checksum "${{ matrix.wasi-swift-sdk-checksum }}"
wasi_sdk_path=$(./build-exec "$toolchain_path/usr/bin/swift" sdk configure --show-configuration "${{ matrix.wasi-swift-sdk-id }}" wasm32-unknown-wasi | grep sdkRootPath: | cut -d: -f2)
echo "wasi-swift-sdk-path=$(dirname $wasi_sdk_path)" >> $GITHUB_OUTPUT
- name: Configure Tests/default.json
run: |
cat <<EOS > Tests/default.json
{
"swiftExecutablePath": "${{ steps.setup-development.outputs.toolchain-path }}/usr/bin/swift",
"wasiSwiftSDKPath": "${{ steps.setup-development.outputs.wasi-swift-sdk-path }}",
"hostSwiftExecutablePath": "/usr/bin/swift"
}
EOS
- run: ./build-exec ./CI/install-wabt.sh
- run: ./Vendor/checkout-dependency
- run: ./build-exec swift test ${{ matrix.test-args }}
- if: matrix.build-dev-dashboard
run: ./build-exec ./CI/build-dev-dashboard.sh
- if: matrix.build-dev-dashboard
name: Relax artifact permissions
run: sudo chown -R $USER .build/html
- if: matrix.build-dev-dashboard
id: deployment
uses: actions/upload-pages-artifact@v3
with:
path: .build/html
deploy-dev-dashboard:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
needs: build-linux
permissions:
id-token: write
pages: write
steps:
- id: deployment
uses: actions/deploy-pages@v4
build-musl:
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- swift: 6.2-noble
musl-swift-sdk-download: "https://download.swift.org/swift-6.2-release/static-sdk/swift-6.2-RELEASE/swift-6.2-RELEASE_static-linux-0.0.1.artifactbundle.tar.gz"
musl-swift-sdk-checksum: "d2225840e592389ca517bbf71652f7003dbf45ac35d1e57d98b9250368769378"
steps:
- uses: actions/checkout@v4
- name: Configure container
run: |
docker run -dit --name build-container -v $PWD:/workspace -w /workspace swift:${{ matrix.swift }}
echo 'docker exec -i build-container "$@"' > ./build-exec
chmod +x ./build-exec
- name: Install Static Linux SDK
run: ./build-exec swift sdk install "${{ matrix.musl-swift-sdk-download }}" --checksum "${{ matrix.musl-swift-sdk-checksum }}"
- name: Build (x86_64-swift-linux-musl)
run: ./build-exec swift build --swift-sdk x86_64-swift-linux-musl
- name: Build (aarch64-swift-linux-musl)
run: ./build-exec swift build --swift-sdk aarch64-swift-linux-musl
build-android:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Run Tests on Android emulator
uses: skiptools/swift-android-action@v2
build-windows:
runs-on: windows-latest
steps:
- uses: compnerd/gha-setup-swift@main
with:
swift-version: swift-6.2-release
swift-build: 6.2-RELEASE
- uses: actions/checkout@v4
- run: python3 ./Vendor/checkout-dependency
# FIXME: CMake build is failing on CI due to "link: extra operand '/OUT:lib\\libXXXX.a'" error
# # Check Windows build with CMake
# - uses: Cyberboss/install-winget@v1
# - run: winget install Ninja-build.Ninja Kitware.CMake --disable-interactivity --accept-source-agreements
# - run: |
# echo "$env:LOCALAPPDATA\Microsoft\WinGet\Links" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
# echo "$env:ProgramFiles\CMake\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
# - run: cmake -G Ninja -B .build/cmake
# - run: cmake --build .build/cmake
# Run tests with SwiftPM
- name: Run tests with SwiftPM
run: swift test
build-cmake:
runs-on: ubuntu-24.04
container:
image: swift:6.2-noble
steps:
- uses: actions/checkout@v4
- name: Install Ninja
run: apt-get update && apt-get install -y ninja-build
- name: Install CMake
run: |
apt-get install -y curl
curl -L https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-linux-x86_64.tar.gz | tar xz --strip-component 1 -C /usr/local/
- run: cmake -G Ninja -B ./build
- run: cmake --build ./build
- run: ./build/bin/wasmkit-cli --version
build-wasi:
runs-on: ubuntu-24.04
container:
image: swift:6.2-noble
steps:
- uses: actions/checkout@v4
- name: Install jq
run: apt-get update && apt-get install -y jq
- name: Install Swift SDK
run: swift sdk install https://download.swift.org/swift-6.2-release/wasm/swift-6.2-RELEASE/swift-6.2-RELEASE_wasm.artifactbundle.tar.gz --checksum fe4e8648309fce86ea522e9e0d1dc48e82df6ba6e5743dbf0c53db8429fb5224
- name: Build with the Swift SDK
run: swift build --swift-sdk "$(swiftc -print-target-info | jq -r '.swiftCompilerTag')_wasm" --product wasmkit-cli