Created
November 12, 2024 19:38
-
-
Save gtomek/1fe4db14129f8c1a37f8ddf16de2a93b to your computer and use it in GitHub Desktop.
CircleCi config for KMP library build and publishing with kmmbridge plugin setup https://touchlab.co/kmmbridge/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: 2.1 | |
executors: | |
macos-executor: | |
resource_class: macos.m1.medium.gen1 | |
macos: | |
xcode: 16.1.0 | |
commands: | |
install-java: | |
steps: | |
- run: | |
name: Install Microsoft OpenJDK 21 | |
command: | | |
brew install microsoft-openjdk@21 | |
export JAVA_HOME=`/usr/libexec/java_home -v 21` | |
java --version | |
jobs: | |
build-lib: | |
executor: macos-executor | |
steps: | |
- checkout | |
- install-java | |
- run: | |
name: Install Android SDK Tools | |
command: | | |
# Install Android SDK tools via Homebrew | |
brew install --cask android-platform-tools | |
brew install --cask android-commandlinetools | |
# Install Android build tools and platform tools | |
yes | sdkmanager --licenses || true | |
sdkmanager "build-tools;34.0.0" "platform-tools" "platforms;android-34" | |
- run: | |
name: Install Android Studio | |
command: | | |
# Install Android Studio tools via Homebrew | |
brew install --cask android-studio | |
echo "Setting up Android environment..." | |
export ANDROID_HOME=/opt/homebrew/share/android-commandlinetools | |
export PATH=$PATH:$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/34.0.0 | |
echo "Android environment setup complete ANDROID_HOME=$ANDROID_HOME" | |
- run: | |
name: Create XCFramework directory | |
command: | | |
./gradlew assembleyourLibraryXCFramework | |
- run: | |
name: Run Jar Build | |
command: ./gradlew allMetadataJar | |
- run: | |
name: Run Assemble Build | |
command: | | |
export ANDROID_HOME=/opt/homebrew/share/android-commandlinetools | |
echo "Using ANDROID_HOME=$ANDROID_HOME" | |
./gradlew assemble | |
- run: | |
name: Run Tests | |
command: | | |
export ANDROID_HOME=/opt/homebrew/share/android-commandlinetools | |
./gradlew testDebugUnitTest | |
- store_artifacts: | |
path: yourLibrary/build/libs | |
destination: lib-jar | |
- store_artifacts: | |
path: yourLibrary/build/XCFrameworks | |
destination: lib-ios-xcframework | |
- store_artifacts: | |
path: yourLibrary/build/outputs | |
destination: lib-outputs-aar | |
- store_artifacts: | |
path: yourLibrary/build/reports | |
destination: lib-reports | |
publish-lib: | |
executor: macos-executor | |
steps: | |
- checkout | |
- install-java | |
- run: | |
name: Publish your library | |
command: ./gradlew publish | |
workflows: | |
version: 2 | |
build: | |
jobs: | |
- build-lib | |
- approve-before-publish: | |
type: approval | |
requires: | |
- build-lib | |
- publish-lib: | |
requires: | |
- approve-before-publish |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment