Skip to content

Instantly share code, notes, and snippets.

@gtomek
Created November 12, 2024 19:38
Show Gist options
  • Save gtomek/1fe4db14129f8c1a37f8ddf16de2a93b to your computer and use it in GitHub Desktop.
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/
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