Skip to content

Commit

Permalink
Parallelizes CI jobs by platform (#209)
Browse files Browse the repository at this point in the history
  • Loading branch information
JayShortway authored Sep 20, 2024
1 parent b32f55d commit 9f6851a
Showing 1 changed file with 151 additions and 32 deletions.
183 changes: 151 additions & 32 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ parameters:
default: ''

executors:
android202409:
docker:
- image: cimg/android:2024.09.1
resource_class: large
jdk17:
docker:
- image: cimg/openjdk:17.0
Expand Down Expand Up @@ -130,40 +134,137 @@ jobs:
command: ./gradlew apiCheck
- android/save-gradle-cache

test-public-api:
build-libraries-android:
executor: android202409
steps:
- checkout
- android/restore-gradle-cache
- run:
name: Build libraries for Android
command: |
tasks=()
for module in core revenuecatui datetime either result; do
for buildType in Debug Release; do
tasks+=(":$module:compile${buildType}KotlinAndroid")
done
done
./gradlew "${tasks[@]}"
- android/save-gradle-cache

build-libraries-ios:
executor: xcode15
steps:
- install-android-sdk-on-macos
- checkout
- android/restore-gradle-cache
- revenuecat/install-gem-mac-dependencies:
cache-version: v1
- install-cocoapods-on-macos
- run:
name: Test public API
command: ./gradlew :apiTester:assemble
name: Build libraries for iOS
command: |
tasks=()
for module in core revenuecatui datetime either result; do
for arch in Arm64 SimulatorArm64 X64; do
tasks+=(":$module:compileKotlinIos$arch")
done
done
./gradlew "${tasks[@]}"
- android/save-gradle-cache

unit-tests:
build-sample-android:
executor: android202409
steps:
- checkout
- android/restore-gradle-cache
- run:
name: Build sample app for Android
command: |
tasks=()
for buildType in Debug Release; do
tasks+=(":composeApp:compile${buildType}KotlinAndroid")
done
./gradlew "${tasks[@]}"
- android/save-gradle-cache

build-sample-ios:
executor: xcode15
steps:
- install-android-sdk-on-macos
- checkout
- android/restore-gradle-cache
- revenuecat/install-gem-mac-dependencies:
cache-version: v1
- install-cocoapods-on-macos
- run:
name: Execute unit tests
command: ./gradlew allTests
name: Build sample app for iOS
command: |
tasks=()
for arch in Arm64 SimulatorArm64 X64; do
tasks+=(":composeApp:compileKotlinIos$arch")
done
./gradlew "${tasks[@]}"
- android/save-gradle-cache

build:
public-api-tests-android:
executor: android202409
steps:
- checkout
- android/restore-gradle-cache
- run:
name: Test public API for Android
command: |
tasks=()
for buildType in Debug Release; do
tasks+=(":apiTester:compile${buildType}KotlinAndroid")
done
./gradlew "${tasks[@]}"
- android/save-gradle-cache

public-api-tests-ios:
executor: xcode15
steps:
- install-android-sdk-on-macos
- checkout
- android/restore-gradle-cache
- revenuecat/install-gem-mac-dependencies:
cache-version: v1
- install-cocoapods-on-macos
- run:
name: Test public API for iOS
command: |
tasks=()
for arch in Arm64 SimulatorArm64 X64; do
tasks+=(":apiTester:compileKotlinIos$arch")
done
./gradlew "${tasks[@]}"
- android/save-gradle-cache

unit-tests-android:
executor: android202409
steps:
- checkout
- android/restore-gradle-cache
- run:
name: Build libraries
command: ./gradlew assemble -x :composeApp:assemble
name: Execute unit tests for Android
command: |
tasks=()
for buildType in Debug Release; do
tasks+=("test${buildType}UnitTest")
done
./gradlew "${tasks[@]}"
- android/save-gradle-cache

unit-tests-ios:
executor: xcode15
steps:
- checkout
- android/restore-gradle-cache
- run:
name: Build sample
command: ./gradlew :composeApp:assembleDebug
name: Execute unit tests for iOS
command: |
tasks=()
for arch in SimulatorArm64 X64; do
tasks+=("ios${arch}Test")
done
./gradlew "${tasks[@]}"
- android/save-gradle-cache

publish:
Expand Down Expand Up @@ -229,15 +330,24 @@ workflows:
- revenuecat/danger:
context: danger-bot
- detekt
- validate-binary-compatibility
- test-public-api
- unit-tests
- build:
requires:
- detekt
- validate-binary-compatibility
- test-public-api
- unit-tests
- build-libraries-android
- build-libraries-ios
- build-sample-android:
requires: [build-libraries-android]
- build-sample-ios:
requires: [build-libraries-ios]
- public-api-tests-android:
requires: [build-libraries-android]
- public-api-tests-ios:
requires: [build-libraries-ios]
- unit-tests-android:
requires: [build-libraries-android]
- unit-tests-ios:
requires: [build-libraries-ios]
- validate-binary-compatibility:
requires:
- build-libraries-android
- build-libraries-ios

on-main-branch:
when:
Expand Down Expand Up @@ -285,15 +395,24 @@ workflows:
equal: [ scheduled_pipeline, << pipeline.trigger_source >> ]
jobs:
- detekt
- validate-binary-compatibility
- test-public-api
- unit-tests
- build:
requires:
- detekt
- validate-binary-compatibility
- test-public-api
- unit-tests
- build-libraries-android
- build-libraries-ios
- build-sample-android:
requires: [build-libraries-android]
- build-sample-ios:
requires: [build-libraries-ios]
- public-api-tests-android:
requires: [build-libraries-android]
- public-api-tests-ios:
requires: [build-libraries-ios]
- unit-tests-android:
requires: [build-libraries-android]
- unit-tests-ios:
requires: [build-libraries-ios]
- validate-binary-compatibility:
requires:
- build-libraries-android
- build-libraries-ios
- hold:
type: approval
requires:
Expand Down

0 comments on commit 9f6851a

Please sign in to comment.