Skip to content

Merge pull request #8 from PureSwift/feature/code-coverage #3

Merge pull request #8 from PureSwift/feature/code-coverage

Merge pull request #8 from PureSwift/feature/code-coverage #3

Workflow file for this run

name: Swift Android
on: [push]
jobs:
android:
name: Android (unit tests)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# Cross-compiles the package for Android and runs the XCTest suite on an
# Android emulator (x86_64) provisioned by the action.
- name: Build and test on Android emulator
uses: skiptools/swift-android-action@v2
with:
swift-version: 6.3.3
android-armv7:
name: Android (armv7 cross-compile)
runs-on: ubuntu-latest
container: swift:6.3.3
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: apt-get update -y && apt-get install -y curl
- name: Install Swift Android SDK
# The Android SDK artifact bundle is only published for 6.3.3, and the
# host toolchain must match the bundle version exactly (Swift's module
# format isn't cross-patch-compatible) — hence the swift:6.3.3 container.
run: |
set -eux
url="https://download.swift.org/swift-6.3.3-release/android-sdk/swift-6.3.3-RELEASE/swift-6.3.3-RELEASE_android.artifactbundle.tar.gz"
curl -fsSL "$url" -o android.artifactbundle.tar.gz
swift sdk install android.artifactbundle.tar.gz \
--checksum d160cc3206dd1886dae3fef2337af5e25ec034692cd0ec225721c56cc69da7f5
swift sdk list
# armv7 can't run on the x86_64 emulator, so this is a cross-compile check
# only. The bundle installs as a single multi-arch SDK; the architecture is
# selected by target triple. Read the exact armv7 triple (with its
# API-level suffix) from the installed SDK metadata rather than pinning it.
- name: Build (armv7)
run: |
set -eux
TRIPLE=$(grep -rhoE 'armv7-unknown-linux-androideabi[0-9]*' ~/.swiftpm | sort -u | head -1)
test -n "$TRIPLE"
echo "Using target triple: $TRIPLE"
swift build --swift-sdk "$TRIPLE"