diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9d878cea..2308b404 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,29 +23,6 @@ jobs: echo "will-publish=false" >> $GITHUB_OUTPUT fi - build-android: - needs: check-release - if: needs.check-release.outputs.will-publish == 'true' - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - persist-credentials: "false" - - name: Setup project - uses: ./.github/actions/setup-project - with: - node-cache: "" - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v5 - - name: Build Android native library - run: bash ./scripts/build-native-lib.sh android - - name: Upload Android artifacts - uses: actions/upload-artifact@v4 - with: - name: android-artifacts - path: packages/async-storage/android/local_repo - build-apple: needs: check-release if: needs.check-release.outputs.will-publish == 'true' @@ -82,12 +59,6 @@ jobs: uses: ./.github/actions/setup-project - name: Install dependencies run: yarn - - name: Download Android artifacts - if: needs.check-release.outputs.will-publish == 'true' - uses: actions/download-artifact@v4 - with: - name: android-artifacts - path: packages/async-storage/android/local_repo - name: Download Apple artifacts if: needs.check-release.outputs.will-publish == 'true' uses: actions/download-artifact@v4 diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 00000000..fd80e43b --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,32 @@ +# Release instructions + +## Code check + +Run tests with + +```shell +yarn test:lint +``` + +```shell +yarn test:ts +``` + +```shell +yarn test:format +``` + +## Release new Shared Storage for Android Maven Central + +1. Update `VERSION_NAME` in [gradle.properties](shared-storage/gradle.properties) +2. Commit changes ("release shared-storage-android vX.X.X") +3. Create PR, NO CHANGESET LOG, Merge. +4. Release artifact via `./gradlew publishToMavenCentral --no-configuration-cache` +5. Publish deployment on [Sonatype Central](https://central.sonatype.com/publishing/deployments) + +## Release new Async Storage version + +1. Update version of Shared Storage for Android binary + in [gradle.properties](packages/async-storage/android/gradle.properties) +2. Create a PR with changeset log. +3. Merge Release PR and CI will publish new version. \ No newline at end of file diff --git a/examples/react-native/android/build.gradle b/examples/react-native/android/build.gradle index 487a730a..fd5e739b 100644 --- a/examples/react-native/android/build.gradle +++ b/examples/react-native/android/build.gradle @@ -37,10 +37,9 @@ allprojects { } while (searchDir = searchDir.getParent()) // As of 0.80, React Native is no longer installed from npm }() + + mavenLocal() mavenCentral() google() - maven { - url = uri(project(":react-native-async-storage_async-storage").file("local_repo")) - } } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4579f4ad..0db14406 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -20,7 +20,6 @@ kermit = "2.0.4" androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" } androidx-lifecycle-viewmodelCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" } androidx-lifecycle-runtimeCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" } -kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "coroutines" } kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } androidx-sqlite-bundled = { module = "androidx.sqlite:sqlite-bundled", version.ref = "sqlite" } androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } diff --git a/packages/async-storage/android/build.gradle b/packages/async-storage/android/build.gradle index 4f80202c..2e4ac94a 100644 --- a/packages/async-storage/android/build.gradle +++ b/packages/async-storage/android/build.gradle @@ -78,13 +78,15 @@ android { } repositories { + mavenLocal() // used for local development of AsyncStorage mavenCentral() google() } dependencies { + def shared_storage_version = project.ext.AsyncStorage.sharedStorageVersion implementation "com.facebook.react:react-android" - api "org.asyncstorage.shared_storage:storage-android:1.0.0" + api "io.github.react-native-async-storage:shared-storage-android:$shared_storage_version" // ksp/room is required to support legacy storage diff --git a/packages/async-storage/android/config.gradle b/packages/async-storage/android/config.gradle index 52488996..0b12d2f4 100644 --- a/packages/async-storage/android/config.gradle +++ b/packages/async-storage/android/config.gradle @@ -1,6 +1,7 @@ project.ext.AsyncStorage = [ isNewArch : project.hasProperty("newArchEnabled") && project.newArchEnabled == "true", roomVersion: getConfigValueOrDefault("roomVersion"), + sharedStorageVersion: getConfigValueOrDefault("sharedStorageVersion"), compileSdk : getConfigValueOrDefault("compileSdkVersion").toInteger(), minSdk : getConfigValueOrDefault("minSdkVersion").toInteger(), diff --git a/packages/async-storage/android/gradle.properties b/packages/async-storage/android/gradle.properties index 6a68ad18..b48a786e 100644 --- a/packages/async-storage/android/gradle.properties +++ b/packages/async-storage/android/gradle.properties @@ -2,4 +2,5 @@ AsyncStorage_kotlinVersion=2.2.10 AsyncStorage_roomVersion=2.7.2 AsyncStorage_minSdkVersion=24 AsyncStorage_targetSdkVersion=36 -AsyncStorage_compileSdkVersion=36 \ No newline at end of file +AsyncStorage_compileSdkVersion=36 +AsyncStorage_sharedStorageVersion=0.0.1 \ No newline at end of file diff --git a/scripts/build-native-lib.sh b/scripts/build-native-lib.sh index e45d7f6b..c9044ba9 100755 --- a/scripts/build-native-lib.sh +++ b/scripts/build-native-lib.sh @@ -6,10 +6,9 @@ MODULE_NAME="shared-storage" RN_MODULE_DIR="packages/async-storage" ANDROID_BUILD_TASK="bundleAndroidMainAar" -ANDROID_OUTPUT_NAME="local_repo" # Maven local repo ANDROID_OUTPUT_DIR="$MODULE_NAME/build" ANDROID_RN_OUTPUT_DIR="$RN_MODULE_DIR/android" -ANDROID_PUBLISH_TASK="publishAndroidPublicationToLocalRepoRepository" +ANDROID_PUBLISH_TASK="publishToMavenLocal --no-configuration-cache" APPLE_BUILD_TASK="assembleSharedAsyncStorageReleaseXCFramework" APPLE_OUTPUT_NAME="SharedAsyncStorage.xcframework" @@ -22,14 +21,9 @@ build_android() { log "👷 Assembling android shared-storage" ./gradlew :$MODULE_NAME:$ANDROID_BUILD_TASK - log "Publishing binaries to local repo" + log "Publishing binaries to maven local" ./gradlew :$MODULE_NAME:$ANDROID_PUBLISH_TASK - log "Remove old local repo" - rm -rf $ANDROID_RN_OUTPUT_DIR/$ANDROID_OUTPUT_NAME - - log "Moving local repo to RN target" - mv $ANDROID_OUTPUT_DIR/$ANDROID_OUTPUT_NAME $ANDROID_RN_OUTPUT_DIR/$ANDROID_OUTPUT_NAME log "🚀 all done" } diff --git a/shared-storage/build.gradle.kts b/shared-storage/build.gradle.kts index 337349e2..09eb1a27 100644 --- a/shared-storage/build.gradle.kts +++ b/shared-storage/build.gradle.kts @@ -90,11 +90,7 @@ kotlin { skie { build { produceDistributableFramework() } } -publishing { - repositories { - maven { - name = "LocalRepo" - url = uri(layout.buildDirectory.dir("local_repo")) - } - } -} +mavenPublishing { + publishToMavenCentral() + signAllPublications() +} \ No newline at end of file diff --git a/shared-storage/gradle.properties b/shared-storage/gradle.properties index a680e7a5..a89af451 100644 --- a/shared-storage/gradle.properties +++ b/shared-storage/gradle.properties @@ -1,3 +1,21 @@ -GROUP=org.asyncstorage.shared_storage -POM_ARTIFACT_ID=storage -VERSION_NAME=1.0.0 \ No newline at end of file +# Publishing +VERSION_NAME=0.0.1 + +SONATYPE_HOST=CENTRAL_PORTAL +RELEASE_SIGNING_ENABLED=true + +GROUP=io.github.react-native-async-storage +POM_ARTIFACT_ID=shared-storage +POM_NAME=React Native Async Storage - Shared Storage +POM_DESCRIPTION=Kotlin Multiplatform shared storage library for React Native Async Storage, providing SQLite-backed key-value persistence for Android and Apple platforms. +POM_INCEPTION_YEAR=2025 +POM_URL=https://github.com/react-native-async-storage/async-storage +POM_LICENSE_NAME=MIT License +POM_LICENSE_URL=https://github.com/react-native-async-storage/async-storage/blob/main/LICENSE +POM_LICENSE_DIST=repo +POM_SCM_URL=https://github.com/react-native-async-storage/async-storage +POM_SCM_CONNECTION=scm:git:git://github.com/react-native-async-storage/async-storage.git +POM_SCM_DEV_CONNECTION=scm:git:ssh://github.com/react-native-async-storage/async-storage.git +POM_DEVELOPER_ID=kborowy +POM_DEVELOPER_NAME=Krzysztof Borowy +POM_DEVELOPER_URL=https://www.kborowy.com/ \ No newline at end of file