3.2 KiB
Publishing secp256k1-kmp artifacts
snapshots
Snapshots are published to the Sonatype snapshot repository (https://oss.sonatype.org/content/repositories/snapshots/).
To publish snapshot, you must add your sonatype credentials for the ossrh
server to your local maven settings (typically in $HOME/.m2/settings.xml)
- Download
snapshot.zip
generated by thePublish snapshot
github action - unzip
snapshot.zip
in thepublishing
directory - add additional JNI bindings (optional, see below)
- edit
secp256k1-kmp-snapshot-deploy.sh
and update theVERSION
environment variable if needed - run
secp256k1-kmp-snapshot-deploy.sh
releases
Releases are published to the Sonatype staging repository. If all items are valid they will be published to maven central
repository.
You must edit secp256k1-kmp-staging-upload.sh
and add your sonatype credentials. You must also have a valid GPG key.
- Download
release.zip
generated by thePublish release
github action (which is triggered every time you publish a github release) - unzip
release.zip
in thepublishing
directory - add additional JNI bindings (optional, see below)
- edit
secp256k1-kmp-staging-upload.sh
and update theVERSION
environment variable if needed - sign all artifacts with a valid gpg key:
find release -type f -print -exec gpg -ab {} \;
- run
secp256k1-kmp-staging-upload.sh
- log into sonatype, close and publish your staging repository. Artifacts will be available on Maven Central within a few hours.
Adding custom JNI bindings
Github CI currently generates JNI bindings for Windows x64, Linux x64 and iOS x64. But it is possible to add custom bindings to JNI packages before they are published to maven central.
This is how we add linux arm64 bindings:
- compile JNI bindings for Linux Arm64 (on a Linux Arm64 machine, cross-compilation is not supported)
- git clone --recursive https://github.com/ACINQ/secp256k1-kmp.git
- cd secp256k1-kmp
- TARGET=linux ./native/build.sh
- mkdir -p jni/jvm/build/linux
- TARGET=linux ./jni/jvm/build.sh
- JNI library is: jni/jvm/build/linux/libsecp256k1-jni.so
- copy libsecp256k1-jni.so to fr/acinq/secp256k1/jni/native/linux-aarch64/libsecp256k1-jni.so
- run
secp256k1-kmp-add-linuxarm64.sh
and specify eitherrelease
orsnapshot
and theVERSION
environment variable, for example:- VERSION=0.9.0-SNAPSHOT ./secp256k1-kmp-add-linuxarm64.sh snapshot
- VERSION=0.9.0 ./secp256k1-kmp-add-linuxarm64.sh release
This is how we add macos arm64 (M1/M2) bindings:
- compile JNI bindings for macos Arm64 (on a macos Arm64 machine, cross-compilation is not supported)
- git clone --recursive https://github.com/ACINQ/secp256k1-kmp.git
- cd secp256k1-kmp
- TARGET=darwin ./native/build.sh
- mkdir -p jni/jvm/build/darwin
- TARGET=darwin ./jni/jvm/build.sh
- JNI library is: jni/jvm/build/darwin/libsecp256k1-jni.dylib
- copy libsecp256k1-jni.dylib to fr/acinq/secp256k1/jni/native/darwin-aarch64/libsecp256k1-jni.dylib
- run
secp256k1-kmp-add-darwinaarch64.sh
and specify eitherrelease
orsnapshot
and theVERSION
environment variable, for example:- VERSION=0.9.0-SNAPSHOT ./secp256k1-kmp-add-darwinaarch64.sh snapshot
- VERSION=0.9.0 ./secp256k1-kmp-add-darwinaarch64.sh release