diff --git a/publishing/PUBLISHING.md b/publishing/PUBLISHING.md new file mode 100644 index 0000000..15f161e --- /dev/null +++ b/publishing/PUBLISHING.md @@ -0,0 +1,23 @@ +# 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 the `Publish snapshot` github action +- unzip `snapshot.zip` in the `publishing` directory +- edit `secp256k1-kmp-snapshot-deploy.sh` and update the `VERSION` 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 the `Publish release` github action (which is triggered every time you publish a github release) +- unzip `release.zip` in the `publishing` directory +- edit `secp256k1-kmp-staging-upload.sh` and update the `VERSION` 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. diff --git a/publishing/secp256k1-kmp-snapshot-deploy.sh b/publishing/secp256k1-kmp-snapshot-deploy.sh new file mode 100755 index 0000000..9585c6c --- /dev/null +++ b/publishing/secp256k1-kmp-snapshot-deploy.sh @@ -0,0 +1,53 @@ +#!/bin/bash -x + +GROUP_ID=fr.acinq.secp256k1 +ARTIFACT_ID_BASE=secp256k1-kmp +VERSION=0.6.3-SNAPSHOT + +cd snapshot +pushd . +cd fr/acinq/secp256k1/secp256k1-kmp/$VERSION +mvn deploy:deploy-file -DrepositoryId=ossrh -Durl=https://oss.sonatype.org/content/repositories/snapshots/ \ + -DpomFile=$ARTIFACT_ID_BASE-$VERSION.pom \ + -Dfile=$ARTIFACT_ID_BASE-$VERSION.jar \ + -Dfiles=$ARTIFACT_ID_BASE-$VERSION.module,$ARTIFACT_ID_BASE-$VERSION-kotlin-tooling-metadata.json \ + -Dtypes=module,json \ + -Dclassifiers=,kotlin-tooling-metadata \ + -Dsources=$ARTIFACT_ID_BASE-$VERSION-sources.jar \ + -Djavadoc=$ARTIFACT_ID_BASE-$VERSION-javadoc.jar +popd +pushd . +for i in iosarm64 iosx64 jni-android jni-common jni-jvm-darwin jni-jvm-extract jni-jvm-linux jni-jvm-mingw jni-jvm jvm linux +do + cd fr/acinq/secp256k1/secp256k1-kmp-$i/$VERSION + if [ $i == iosarm64 ] || [ $i == iosx64 ] || [ $i == linux ]; then + mvn deploy:deploy-file -DrepositoryId=ossrh -Durl=https://oss.sonatype.org/content/repositories/snapshots/ \ + -DpomFile=$ARTIFACT_ID_BASE-$i-$VERSION.pom \ + -Dfile=$ARTIFACT_ID_BASE-$i-$VERSION.klib \ + -Dfiles=$ARTIFACT_ID_BASE-$i-$VERSION.module,$ARTIFACT_ID_BASE-$i-$VERSION-cinterop-libsecp256k1.klib \ + -Dtypes=module,klib \ + -Dclassifiers=,cinterop-libsecp256k1 \ + -Dsources=$ARTIFACT_ID_BASE-$i-$VERSION-sources.jar \ + -Djavadoc=$ARTIFACT_ID_BASE-$i-$VERSION-javadoc.jar + elif [ $i == jni-android ]; then + mvn deploy:deploy-file -DrepositoryId=ossrh -Durl=https://oss.sonatype.org/content/repositories/snapshots/ \ + -DpomFile=$ARTIFACT_ID_BASE-$i-$VERSION.pom \ + -Dfile=$ARTIFACT_ID_BASE-$i-$VERSION.aar \ + -Dfiles=$ARTIFACT_ID_BASE-$i-$VERSION.module \ + -Dtypes=module \ + -Dclassifiers= \ + -Dsources=$ARTIFACT_ID_BASE-$i-$VERSION-sources.jar \ + -Djavadoc=$ARTIFACT_ID_BASE-$i-$VERSION-javadoc.jar + else + mvn deploy:deploy-file -DrepositoryId=ossrh -Durl=https://oss.sonatype.org/content/repositories/snapshots/ \ + -DpomFile=$ARTIFACT_ID_BASE-$i-$VERSION.pom \ + -Dfile=$ARTIFACT_ID_BASE-$i-$VERSION.jar \ + -Dfiles=$ARTIFACT_ID_BASE-$i-$VERSION.module \ + -Dtypes=module \ + -Dclassifiers= \ + -Dsources=$ARTIFACT_ID_BASE-$i-$VERSION-sources.jar \ + -Djavadoc=$ARTIFACT_ID_BASE-$i-$VERSION-javadoc.jar + fi + popd + pushd . +done diff --git a/publishing/secp256k1-kmp-staging-upload.sh b/publishing/secp256k1-kmp-staging-upload.sh new file mode 100755 index 0000000..73dccda --- /dev/null +++ b/publishing/secp256k1-kmp-staging-upload.sh @@ -0,0 +1,28 @@ +#!/bin/bash -x +# +# first you must sign all files: +# find release -type f -print -exec gpg -ab {} \; + +VERSION=0.6.2 +for i in secp256k1-kmp \ + secp256k1-kmp-iosarm64 \ + secp256k1-kmp-iosx64 \ + secp256k1-kmp-jni-android \ + secp256k1-kmp-jni-common \ + secp256k1-kmp-jni-jvm \ + secp256k1-kmp-jni-jvm-darwin \ + secp256k1-kmp-jni-jvm-extract \ + secp256k1-kmp-jni-jvm-linux \ + secp256k1-kmp-jni-jvm-mingw \ + secp256k1-kmp-jvm \ + secp256k1-kmp-linux +do + pushd . + cd release/fr/acinq/secp256k1/$i/$VERSION + pwd + jar -cvf bundle.jar * + # use correct sonatype credentials here + curl -v -XPOST -u USER:PASSWORD --upload-file bundle.jar https://oss.sonatype.org/service/local/staging/bundle_upload + popd +done +