From d757e9db85fb6c8652bb7750cc3308dba48a59e0 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Mon, 23 Feb 2026 00:08:09 +0100 Subject: [PATCH 1/2] fix: switch Kotlin publishing to GitHub Packages --- .github/workflows/publish-android.yml | 52 +++++++++++++++++++ .github/workflows/publish-jvm.yml | 52 +++++++++++++++++++ .gitignore | 10 ---- AGENTS.md | 4 +- bindings/README.md | 2 +- bindings/kotlin/ldk-node-android/README.md | 24 ++++----- .../kotlin/ldk-node-android/build.gradle.kts | 6 +-- .../kotlin/ldk-node-android/gradle.properties | 3 +- .../ldk-node-android/lib/build.gradle.kts | 48 ++++++++--------- bindings/kotlin/ldk-node-jvm/build.gradle.kts | 6 +-- .../kotlin/ldk-node-jvm/gradle.properties | 2 +- .../kotlin/ldk-node-jvm/lib/build.gradle.kts | 47 ++++++++--------- jitpack.yml | 4 -- scripts/uniffi_bindgen_generate_kotlin.sh | 6 ++- .../uniffi_bindgen_generate_kotlin_android.sh | 8 +-- 15 files changed, 177 insertions(+), 97 deletions(-) create mode 100644 .github/workflows/publish-android.yml create mode 100644 .github/workflows/publish-jvm.yml delete mode 100644 jitpack.yml diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml new file mode 100644 index 0000000000..c315efc554 --- /dev/null +++ b/.github/workflows/publish-android.yml @@ -0,0 +1,52 @@ +name: Android Publish + +on: + release: + types: [published] + workflow_dispatch: + inputs: + version: + description: "Version to publish (e.g., v0.1.0)" + required: true + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + server-id: github + settings-path: ${{ github.workspace }} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Extract version from input or tag + id: version + shell: bash + run: | + VERSION="${{ inputs.version }}" + if [[ -z "$VERSION" ]]; then + VERSION="$GITHUB_REF_NAME" + fi + echo "version=${VERSION#v}" >> $GITHUB_OUTPUT + + - name: Build with Gradle + working-directory: bindings/kotlin/ldk-node-android + run: ./gradlew build -Pversion=${{ steps.version.outputs.version }} + + - name: Publish to GitHub Packages + working-directory: bindings/kotlin/ldk-node-android + env: + GITHUB_ACTOR: ${{ github.actor }} + GITHUB_TOKEN: ${{ secrets.ORG_PACKAGES_TOKEN }} + GITHUB_REPO: ${{ github.repository }} + run: ./gradlew publish -Pversion=${{ steps.version.outputs.version }} diff --git a/.github/workflows/publish-jvm.yml b/.github/workflows/publish-jvm.yml new file mode 100644 index 0000000000..34624e5b4c --- /dev/null +++ b/.github/workflows/publish-jvm.yml @@ -0,0 +1,52 @@ +name: JVM Publish + +on: + release: + types: [published] + workflow_dispatch: + inputs: + version: + description: "Version to publish (e.g., v0.1.0)" + required: true + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + server-id: github + settings-path: ${{ github.workspace }} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Extract version from input or tag + id: version + shell: bash + run: | + VERSION="${{ inputs.version }}" + if [[ -z "$VERSION" ]]; then + VERSION="$GITHUB_REF_NAME" + fi + echo "version=${VERSION#v}" >> $GITHUB_OUTPUT + + - name: Build with Gradle + working-directory: bindings/kotlin/ldk-node-jvm + run: ./gradlew build -x test -Pversion=${{ steps.version.outputs.version }} + + - name: Publish to GitHub Packages + working-directory: bindings/kotlin/ldk-node-jvm + env: + GITHUB_ACTOR: ${{ github.actor }} + GITHUB_TOKEN: ${{ secrets.ORG_PACKAGES_TOKEN }} + GITHUB_REPO: ${{ github.repository }} + run: ./gradlew publish -Pversion=${{ steps.version.outputs.version }} diff --git a/.gitignore b/.gitignore index dfe51a6232..eafe128323 100644 --- a/.gitignore +++ b/.gitignore @@ -23,16 +23,6 @@ swift.swiftdoc # Ignore LDKNodeFFI.xcframework files /bindings/swift/LDKNodeFFI.xcframework -/bindings/kotlin/ldk-node-android/lib/src/main/jniLibs -/bindings/kotlin/ldk-node-android/lib/src/main/kotlin/org/lightningdevkit/ldknode/ldk_node.kt -/bindings/kotlin/ldk-node-jvm/lib/src/main/kotlin/org/lightningdevkit/ldknode/ldk_node.kt -/bindings/kotlin/ldk-node-jvm/lib/src/main/resources/ - -# fork -!/bindings/kotlin/ldk-node-android/lib/src/main/jniLibs -!/bindings/kotlin/ldk-node-android/lib/src/main/kotlin/org/lightningdevkit/ldknode/ldk_node.kt -!/bindings/kotlin/ldk-node-jvm/lib/src/main/kotlin/org/lightningdevkit/ldknode/ldk_node.kt -!/bindings/kotlin/ldk-node-jvm/lib/src/main/resources/ # IDE and local files .idea diff --git a/AGENTS.md b/AGENTS.md index 52aafcc529..6565785ead 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -207,8 +207,8 @@ RUSTFLAGS="--cfg no_download" cargo build && ./scripts/uniffi_bindgen_generate.s ## Version Bumping Checklist When bumping the version, ALWAYS update ALL of these files: 1. `Cargo.toml` - main crate version -2. `bindings/kotlin/ldk-node-android/gradle.properties` - Android libraryVersion -3. `bindings/kotlin/ldk-node-jvm/gradle.properties` - JVM libraryVersion +2. `bindings/kotlin/ldk-node-android/gradle.properties` - Android version +3. `bindings/kotlin/ldk-node-jvm/gradle.properties` - JVM version 4. `bindings/python/pyproject.toml` - Python version 5. `Package.swift` - Swift tag (and checksum after building) 6. `CHANGELOG.md` - Add release notes section at top diff --git a/bindings/README.md b/bindings/README.md index 28d580bf2a..a0d18a0362 100644 --- a/bindings/README.md +++ b/bindings/README.md @@ -11,7 +11,7 @@ RUSTFLAGS="--cfg no_download" cargo build && ./scripts/uniffi_bindgen_generate.s Detailed instructions for publishing a new version of the bindings. 1. Update `Cargo.toml` -2. Update `libraryVersion` in: +2. Update `version` in: - `bindings/kotlin/ldk-node-android/gradle.properties` - `bindings/kotlin/ldk-node-jvm/gradle.properties` 3. Run the above command to build all bindings diff --git a/bindings/kotlin/ldk-node-android/README.md b/bindings/kotlin/ldk-node-android/README.md index 1787da0174..68f1b2955f 100644 --- a/bindings/kotlin/ldk-node-android/README.md +++ b/bindings/kotlin/ldk-node-android/README.md @@ -4,36 +4,32 @@ Publishing new version guide. 1. Run in root dir `sh scripts/uniffi_bindgen_generate_kotlin_android.sh` -1. Update `libraryVersion` in `bindings/kotlin/ldk-node-android/gradle.properties`. +1. Update `version` in `bindings/kotlin/ldk-node-android/gradle.properties`. 1. Commit 1. Push new branch (or new tag) -1. Go to [Jitpack repo url](https://jitpack.io/#synonymdev/ldk-node), - choose the build type by tab (ie. releases, branch, etc.), and tap 'Get it' - for the required version. - - - If a build already exists, tap the file icon under 'Log' to check the status. - 1. In the android project: - - in `settings.gradle.kts` add jitpack repository using `maven("https://jitpack.io")`: + - in `settings.gradle.kts` add GitHub Packages repository: ```kt dependencyResolutionManagement { repositories { google() mavenCentral() - maven("https://jitpack.io") + maven { + url = uri("https://maven.pkg.github.com/synonymdev/ldk-node") + credentials { + username = providers.gradleProperty("gpr.user").orNull ?: System.getenv("GITHUB_ACTOR") + password = providers.gradleProperty("gpr.key").orNull ?: System.getenv("GITHUB_TOKEN") + } + } } ``` - add dependency in `libs.versions.toml`: ```toml - # by tag - ldk-node-android = { module = "com.github.synonymdev:ldk-node", version = "v0.6.0-rc.4" - - # or by branch - ldk-node-android = { module = "com.github.synonymdev:ldk-node", version = "main-SNAPSHOT" + ldk-node-android = { module = "com.synonym:ldk-node-android", version = "0.7.0-rc.26" } ``` - Run `Sync project with gradle files` action in android studio diff --git a/bindings/kotlin/ldk-node-android/build.gradle.kts b/bindings/kotlin/ldk-node-android/build.gradle.kts index 5520553e3a..76bf5e6d33 100644 --- a/bindings/kotlin/ldk-node-android/build.gradle.kts +++ b/bindings/kotlin/ldk-node-android/build.gradle.kts @@ -13,8 +13,4 @@ plugins { kotlin("plugin.serialization") version "2.2.0" apply false } -// library version is defined in gradle.properties -val libraryVersion: String by project - -group = "org.lightningdevkit" -version = libraryVersion +// group and version are defined in gradle.properties diff --git a/bindings/kotlin/ldk-node-android/gradle.properties b/bindings/kotlin/ldk-node-android/gradle.properties index c7596b3d86..f1ac84414e 100644 --- a/bindings/kotlin/ldk-node-android/gradle.properties +++ b/bindings/kotlin/ldk-node-android/gradle.properties @@ -2,4 +2,5 @@ org.gradle.jvmargs=-Xmx1536m android.useAndroidX=true android.enableJetifier=true kotlin.code.style=official -libraryVersion=0.7.0-rc.25 +group=com.synonym +version=0.7.0-rc.25 diff --git a/bindings/kotlin/ldk-node-android/lib/build.gradle.kts b/bindings/kotlin/ldk-node-android/lib/build.gradle.kts index d55a4aa4dd..71fe96176c 100644 --- a/bindings/kotlin/ldk-node-android/lib/build.gradle.kts +++ b/bindings/kotlin/ldk-node-android/lib/build.gradle.kts @@ -1,6 +1,3 @@ -// library version is defined in gradle.properties -val libraryVersion: String by project - plugins { id("com.android.library") kotlin("android") @@ -65,39 +62,42 @@ afterEvaluate { publishing { publications { create("maven") { - groupId = "org.lightningdevkit" - artifactId = "ldk-node-android" - version = libraryVersion + val mavenArtifactId = "ldk-node-android" + groupId = providers.gradleProperty("group").orNull ?: "com.synonym" + artifactId = mavenArtifactId + version = providers.gradleProperty("version").orNull ?: "0.0.0" from(components["release"]) pom { - name.set("ldk-node-android") - description.set( - "LDK Node, a ready-to-go Lightning node library built using LDK and BDK." - ) - url.set("https://lightningdevkit.org") + name.set(mavenArtifactId) + description.set("LDK Node Android bindings (Synonym fork).") + url.set("https://github.com/synonymdev/ldk-node") licenses { - license { - name.set("APACHE 2.0") - url.set("https://github.com/lightningdevkit/ldk-node/blob/main/LICENSE-APACHE") - } license { name.set("MIT") - url.set("https://github.com/lightningdevkit/ldk-node/blob/main/LICENSE-MIT") + url.set("https://github.com/synonymdev/ldk-node/blob/main/LICENSE-MIT") } } developers { developer { - id.set("tnull") - name.set("Elias Rohrer") - email.set("dev@tnull.de") + id.set("synonymdev") + name.set("Synonym") + email.set("noreply@synonym.to") } } - scm { - connection.set("scm:git:github.com/lightningdevkit/ldk-node.git") - developerConnection.set("scm:git:ssh://github.com/lightningdevkit/ldk-node.git") - url.set("https://github.com/lightningdevkit/ldk-node/tree/main") - } + } + } + } + repositories { + maven { + val repo = System.getenv("GITHUB_REPO") + ?: providers.gradleProperty("gpr.repo").orNull + ?: "synonymdev/ldk-node" + name = "GitHubPackages" + url = uri("https://maven.pkg.github.com/$repo") + credentials { + username = System.getenv("GITHUB_ACTOR") ?: providers.gradleProperty("gpr.user").orNull + password = System.getenv("GITHUB_TOKEN") ?: providers.gradleProperty("gpr.key").orNull } } } diff --git a/bindings/kotlin/ldk-node-jvm/build.gradle.kts b/bindings/kotlin/ldk-node-jvm/build.gradle.kts index faf316ef06..b4bff75c28 100644 --- a/bindings/kotlin/ldk-node-jvm/build.gradle.kts +++ b/bindings/kotlin/ldk-node-jvm/build.gradle.kts @@ -10,8 +10,4 @@ buildscript { plugins { } -// library version is defined in gradle.properties -val libraryVersion: String by project - -group = "org.lightningdevkit" -version = libraryVersion +// version is defined in gradle.properties diff --git a/bindings/kotlin/ldk-node-jvm/gradle.properties b/bindings/kotlin/ldk-node-jvm/gradle.properties index 3169dc7fd4..375e9a606c 100644 --- a/bindings/kotlin/ldk-node-jvm/gradle.properties +++ b/bindings/kotlin/ldk-node-jvm/gradle.properties @@ -1,3 +1,3 @@ org.gradle.jvmargs=-Xmx1536m kotlin.code.style=official -libraryVersion=0.7.0-rc.25 +version=0.7.0-rc.25 diff --git a/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts b/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts index 2ad609c3dc..2f4f519946 100644 --- a/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts +++ b/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts @@ -17,11 +17,8 @@ plugins { id("org.jlleitschuh.gradle.ktlint") version "11.6.1" } -// library version is defined in gradle.properties -val libraryVersion: String by project - group = "org.lightningdevkit" -version = libraryVersion +// version is read from gradle.properties automatically repositories { // Use Maven Central for resolving dependencies. @@ -94,39 +91,39 @@ afterEvaluate { create("maven") { groupId = "org.lightningdevkit" artifactId = "ldk-node-jvm" - version = libraryVersion + version = providers.gradleProperty("version").orNull ?: "0.0.0" from(components["java"]) pom { name.set("ldk-node-jvm") - description.set( - "LDK Node, a ready-to-go Lightning node library built using LDK and BDK." - ) - url.set("https://lightningdevkit.org") + description.set("LDK Node JVM bindings (Synonym fork).") + url.set("https://github.com/synonymdev/ldk-node") licenses { - license { - name.set("APACHE 2.0") - url.set("https://github.com/lightningdevkit/ldk-node/blob/main/LICENSE-APACHE") - } license { name.set("MIT") - url.set("https://github.com/lightningdevkit/ldk-node/blob/main/LICENSE-MIT") + url.set("https://github.com/synonymdev/ldk-node/blob/main/LICENSE-MIT") } } developers { - developers { - developer { - id.set("tnull") - name.set("Elias Rohrer") - email.set("dev@tnull.de") - } + developer { + id.set("synonymdev") + name.set("Synonym") + email.set("noreply@synonym.to") } } - scm { - connection.set("scm:git:github.com/lightningdevkit/ldk-node.git") - developerConnection.set("scm:git:ssh://github.com/lightningdevkit/ldk-node.git") - url.set("https://github.com/lightningdevkit/ldk-node/tree/main") - } + } + } + } + repositories { + maven { + val repo = System.getenv("GITHUB_REPO") + ?: providers.gradleProperty("gpr.repo").orNull + ?: "synonymdev/ldk-node" + name = "GitHubPackages" + url = uri("https://maven.pkg.github.com/$repo") + credentials { + username = System.getenv("GITHUB_ACTOR") ?: providers.gradleProperty("gpr.user").orNull + password = System.getenv("GITHUB_TOKEN") ?: providers.gradleProperty("gpr.key").orNull } } } diff --git a/jitpack.yml b/jitpack.yml deleted file mode 100644 index be1c0b44e0..0000000000 --- a/jitpack.yml +++ /dev/null @@ -1,4 +0,0 @@ -jdk: openjdk17 -install: - - bindings/kotlin/ldk-node-android/gradlew -p bindings/kotlin/ldk-node-android publishToMavenLocal - - bindings/kotlin/ldk-node-jvm/gradlew -p bindings/kotlin/ldk-node-jvm publishToMavenLocal diff --git a/scripts/uniffi_bindgen_generate_kotlin.sh b/scripts/uniffi_bindgen_generate_kotlin.sh index 2777a74f6b..6ac4f1b049 100755 --- a/scripts/uniffi_bindgen_generate_kotlin.sh +++ b/scripts/uniffi_bindgen_generate_kotlin.sh @@ -54,7 +54,7 @@ fi # Sync version from Cargo.toml echo "Syncing version from Cargo.toml..." CARGO_VERSION=$(grep '^version = ' Cargo.toml | sed 's/version = "\(.*\)"/\1/' | head -1) -sed -i.bak "s/^libraryVersion=.*/libraryVersion=$CARGO_VERSION/" "$JVM_LIB_DIR/gradle.properties" +sed -i.bak "s/^version=.*/version=$CARGO_VERSION/" "$JVM_LIB_DIR/gradle.properties" rm -f "$JVM_LIB_DIR/gradle.properties.bak" echo "JVM version synced: $CARGO_VERSION" @@ -62,4 +62,8 @@ echo "JVM version synced: $CARGO_VERSION" echo "Testing JVM library build..." $JVM_LIB_DIR/gradlew --project-dir "$JVM_LIB_DIR" clean build -x test || exit 1 +# Verify JVM library publish task graph +echo "Verifying JVM library publish task graph..." +$JVM_LIB_DIR/gradlew --project-dir "$JVM_LIB_DIR" clean publish --dry-run || exit 1 + echo "JVM build process completed successfully!" diff --git a/scripts/uniffi_bindgen_generate_kotlin_android.sh b/scripts/uniffi_bindgen_generate_kotlin_android.sh index 3c153efe69..c6a68e9bb0 100755 --- a/scripts/uniffi_bindgen_generate_kotlin_android.sh +++ b/scripts/uniffi_bindgen_generate_kotlin_android.sh @@ -74,12 +74,12 @@ rm -f "$KOTLIN_BINDINGS_FILE.bak" # Sync version from Cargo.toml echo "Syncing version from Cargo.toml..." CARGO_VERSION=$(grep '^version = ' Cargo.toml | sed 's/version = "\(.*\)"/\1/' | head -1) -sed -i.bak "s/^libraryVersion=.*/libraryVersion=$CARGO_VERSION/" "$ANDROID_LIB_DIR/gradle.properties" +sed -i.bak "s/^version=.*/version=$CARGO_VERSION/" "$ANDROID_LIB_DIR/gradle.properties" rm -f "$ANDROID_LIB_DIR/gradle.properties.bak" echo "Version synced: $CARGO_VERSION" -# Verify android library publish -echo "Testing android library publish to Maven Local..." -$ANDROID_LIB_DIR/gradlew --project-dir "$ANDROID_LIB_DIR" clean publishToMavenLocal +# Verify android library publish task graph +echo "Verifying android library publish task graph..." +$ANDROID_LIB_DIR/gradlew --project-dir "$ANDROID_LIB_DIR" clean publish --dry-run echo "Android build process completed successfully!" From 6a45f08faad09720c25ab2c157cdebb29723a60a Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Mon, 23 Feb 2026 11:51:51 +0100 Subject: [PATCH 2/2] fix: use com.synonym groupId for JVM publishing The JVM groupId was still hardcoded to org.lightningdevkit while Android correctly used com.synonym. This aligns both by reading group from gradle.properties, matching the Android pattern. Co-Authored-By: Claude Opus 4.6 --- bindings/kotlin/ldk-node-jvm/build.gradle.kts | 2 +- bindings/kotlin/ldk-node-jvm/gradle.properties | 1 + bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts | 5 ++--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bindings/kotlin/ldk-node-jvm/build.gradle.kts b/bindings/kotlin/ldk-node-jvm/build.gradle.kts index b4bff75c28..aa82ba6fbf 100644 --- a/bindings/kotlin/ldk-node-jvm/build.gradle.kts +++ b/bindings/kotlin/ldk-node-jvm/build.gradle.kts @@ -10,4 +10,4 @@ buildscript { plugins { } -// version is defined in gradle.properties +// group and version are defined in gradle.properties diff --git a/bindings/kotlin/ldk-node-jvm/gradle.properties b/bindings/kotlin/ldk-node-jvm/gradle.properties index 375e9a606c..cc08292e6c 100644 --- a/bindings/kotlin/ldk-node-jvm/gradle.properties +++ b/bindings/kotlin/ldk-node-jvm/gradle.properties @@ -1,3 +1,4 @@ org.gradle.jvmargs=-Xmx1536m kotlin.code.style=official +group=com.synonym version=0.7.0-rc.25 diff --git a/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts b/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts index 2f4f519946..79f13475ef 100644 --- a/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts +++ b/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts @@ -17,8 +17,7 @@ plugins { id("org.jlleitschuh.gradle.ktlint") version "11.6.1" } -group = "org.lightningdevkit" -// version is read from gradle.properties automatically +// group and version are read from gradle.properties automatically repositories { // Use Maven Central for resolving dependencies. @@ -89,7 +88,7 @@ afterEvaluate { publishing { publications { create("maven") { - groupId = "org.lightningdevkit" + groupId = providers.gradleProperty("group").orNull ?: "com.synonym" artifactId = "ldk-node-jvm" version = providers.gradleProperty("version").orNull ?: "0.0.0"