From 980243e6a55569c56d0ebecf443291a386adec85 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Sun, 19 Jul 2026 18:07:34 -0400 Subject: [PATCH 1/2] Add GitHub Actions CI to build and test iOS and Android Three jobs: swift build/test for the core package, an xcodebuild pass compiling Fueling.swiftpm for the iOS Simulator, and a full Android cross-compile (Swift Android SDK + NDK + Gradle) producing a debug APK. --- .github/workflows/ci.yml | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..c043f0a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,74 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + +jobs: + swift-package: + name: Build & Test Swift Package + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + - name: Swift version + run: swift --version + - name: Build + run: swift build + - name: Test + run: swift test + + ios-playground: + name: Build iOS Playground App + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + - name: Build Fueling.swiftpm for iOS Simulator + working-directory: Fueling.swiftpm + run: | + xcodebuild build \ + -scheme Fueling \ + -destination 'generic/platform=iOS Simulator' \ + -skipMacroValidation + + android: + name: Build Android App + runs-on: ubuntu-latest + env: + SWIFT_VERSION: "6.3.3" + NDK_VERSION: "27.2.12479018" + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "17" + + - name: Set up Android SDK + uses: android-actions/setup-android@v3 + + - name: Install Android NDK + run: sdkmanager --install "ndk;${NDK_VERSION}" + + - name: Install Swift toolchain + uses: swift-actions/setup-swift@v2 + with: + swift-version: ${{ env.SWIFT_VERSION }} + + - name: Install Android Swift SDK + run: | + curl -O "https://download.swift.org/swift-${SWIFT_VERSION}-release/android-sdk/swift-${SWIFT_VERSION}-RELEASE/swift-${SWIFT_VERSION}-RELEASE_android.artifactbundle.tar.gz" + swift sdk install "swift-${SWIFT_VERSION}-RELEASE_android.artifactbundle.tar.gz" + + bundle_dir=$(dirname "$(find "$HOME" -path '*swift-sdks*swift-android/scripts/setup-android-sdk.sh' 2>/dev/null | head -n1)") + ANDROID_NDK_HOME="$ANDROID_SDK_ROOT/ndk/${NDK_VERSION}" bash "$bundle_dir/setup-android-sdk.sh" + + - name: Configure local.properties + working-directory: Android + run: echo "sdk.dir=$ANDROID_SDK_ROOT" > local.properties + + - name: Build Android app + working-directory: Android + run: ./gradlew :app:assembleDebug --no-daemon From 725b4b404d4d7ba07533f197953b882b531b0df6 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Sun, 19 Jul 2026 18:08:39 -0400 Subject: [PATCH 2/2] Split Swift build and unit tests into separate CI jobs Makes the macOS unit test run a distinct, clearly-labeled job in the Actions UI instead of a step folded into the build job. --- .github/workflows/ci.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c043f0a..9f73d1b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,8 +6,8 @@ on: pull_request: jobs: - swift-package: - name: Build & Test Swift Package + swift-build: + name: Build Swift Package runs-on: macos-15 steps: - uses: actions/checkout@v4 @@ -15,6 +15,12 @@ jobs: run: swift --version - name: Build run: swift build + + swift-test: + name: Unit Tests (macOS) + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 - name: Test run: swift test