Skip to content

Commit

Permalink
GHA: setup CMake based builds on Android
Browse files Browse the repository at this point in the history
This sets up some initial CI support Android to ensure that we do not
accidentally regress the Android builds while we are improving
swift-firebase.
  • Loading branch information
compnerd committed Jul 12, 2024
1 parent b8670f5 commit 67dca97
Showing 1 changed file with 88 additions and 7 deletions.
95 changes: 88 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
tag: DEVELOPMENT-SNAPSHOT-2024-02-08-a
options: -Xswiftc "-I${env:SDKROOT}\..\..\..\..\..\..\Toolchains\0.0.0+Asserts\usr\include"

name: SPM - Swift ${{ matrix.tag }}
name: SPM (Windows) - Swift ${{ matrix.tag }}

steps:
- uses: compnerd/gha-setup-swift@main
Expand All @@ -31,10 +31,12 @@ jobs:
- uses: dsaltares/fetch-gh-release-asset@a40c8b4a0471f9ab81bdf73a010f74cc51476ad4 # v1.1.1
with:
repo: thebrowsercompany/firebase-cpp-sdk
version: tags/20240511.0
version: tags/20240709.0
file: firebase-windows-amd64.zip

- run: Expand-Archive -Path firebase-windows-amd64.zip -DestinationPath third_party; Rename-Item -Path third_party/firebase -NewName firebase-development
- run: |
Expand-Archive -Path firebase-windows-amd64.zip -DestinationPath third_party
Rename-Item -Path third_party/firebase-windows-amd64 -NewName firebase-development
shell: powershell
- name: Build
Expand All @@ -51,7 +53,7 @@ jobs:
tag: DEVELOPMENT-SNAPSHOT-2024-02-08-a
options: -I${env:SDKROOT}\..\..\..\..\..\..\Toolchains\0.0.0+Asserts\usr\include

name: CMake - Swift ${{ matrix.tag }}
name: CMake (Windows) - Swift ${{ matrix.tag }}

steps:
- uses: compnerd/gha-setup-vsdevenv@main
Expand All @@ -66,14 +68,93 @@ jobs:
- uses: dsaltares/fetch-gh-release-asset@a40c8b4a0471f9ab81bdf73a010f74cc51476ad4 # v1.1.1
with:
repo: thebrowsercompany/firebase-cpp-sdk
version: tags/20240511.0
version: tags/20240709.0
file: firebase-windows-amd64.zip

- run: Expand-Archive -Path firebase-windows-amd64.zip -DestinationPath third_party; Rename-Item -Path third_party/firebase -NewName firebase-development
- run: |
Expand-Archive -Path firebase-windows-amd64.zip -DestinationPath third_party
Rename-Item -Path third_party/firebase-windows-amd64 -NewName firebase-development
shell: powershell
- name: Configure
run: cmake -B out -D CMAKE_BUILD_TYPE=Release -G Ninja -S ${{ github.workspace }} -D CMAKE_Swift_FLAGS="${{ matrix.options }}" -D SWIFT_FIREBASE_BUILD_EXAMPLES=NO
run: |
cmake -B out `
-D CMAKE_BUILD_TYPE=Release `
-G Ninja `
-S ${{ github.workspace }} `
-D CMAKE_Swift_FLAGS="${{ matrix.options }}" `
-D SWIFT_FIREBASE_BUILD_EXAMPLES=NO
- name: Build
run: cmake --build out

android:
runs-on: windows-latest

strategy:
fail-fast: false
matrix:
include:
- branch: development
tag: DEVELOPMENT-SNAPSHOT-2024-07-09-a

abi: arm64-v8a
options: -sdk ${env:SDKROOT}\..\..\..\..\Android.platform\Developer\SDKs\Android.sdk -sysroot ${env:ANDROID_NDK_ROOT}\toolchains\llvm\prebuilt\windows-x86_64\sysroot -I${env:SDKROOT}\..\..\..\..\..\..\Toolchains\0.0.0+Asserts\usr\include -Xlinker -zdefs
target: aarch64-unknown-linux-android28

name: CMake (Android) - Swift ${{ matrix.tag }}

steps:
- uses: compnerd/gha-setup-vsdevenv@main

- uses: compnerd/gha-setup-swift@main
with:
# tag: ${{ matrix.tag }}
# branch: ${{ atrix.branch }}
github-repo: thebrowsercompany/swift-build
github-token: ${{ secrets.GITHUB_TOKEN }}
release-asset-name: installer-amd64.exe
release-tag-name: "20240712.2"

- uses: actions/checkout@v4

- uses: dsaltares/fetch-gh-release-asset@a40c8b4a0471f9ab81bdf73a010f74cc51476ad4 # v1.1.1
with:
repo: thebrowsercompany/firebase-cpp-sdk
version: tags/20240709.0
file: firebase-android-arm64-v8a.zip

- run: |
Expand-Archive -Path firebase-android-${{ matrix.abi }}.zip -DestinationPath third_party
Rename-Item -Path third_party/firebase-android-${{ matrix.abi}} -NewName firebase-development
shell: powershell
- uses: nttld/setup-ndk@afb4c9964b521afb97c864b7d40b11e6911bd410 # v1.5.0
with:
ndk-version: r26d

- uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin

- uses: android-actions/setup-android@00854ea68c109d98c75d956347303bf7c45b0277 # v3.2.1
with:
packages: 'platforms;android-21'

- name: Configure
run: |
cmake -B out `
-D CMAKE_BUILD_TYPE=RelWithDebInfo `
-G Ninja `
-S ${{ github.workspace }} `
-D CMAKE_SYSTEM_NAME=Android `
-D CMAKE_ANDROID_ARCH_ABI=${{ matrix.abi }} `
-D CMAKE_ANDROID_API=21 `
-D CMAKE_Swift_COMPILER_TARGET=${{ matrix.target }} `
-D CMAKE_Swift_COMPILER_WORKS=YES `
-D CMAKE_Swift_FLAGS="${{ matrix.options }}" `
-D SWIFT_FIREBASE_BUILD_EXAMPLES=NO
- name: Build
run: cmake --build out

0 comments on commit 67dca97

Please sign in to comment.