diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 6d8af6c6..5dfda1a3 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -2,8 +2,8 @@ name: Continuous delivery in GitHub and Maven Central Repository on: push: - tags: - - 'rc/v*' + branch: + - 'rc-test/v*' jobs: create_release_draft: @@ -34,20 +34,27 @@ jobs: with: java-version: 1.8 - name: Prepare signing secret key ring file - run: echo "${{ secrets.NEXUS_SIGNING_SECRET_KEY_BASE64 }}" | base64 --decode > ./secret_key.gpg + run: | + echo "${{ secrets.NEXUS_SIGNING_SECRET_KEY_BASE64 }}" | base64 --decode > /tmp/secret_key.gpg + echo signing.keyId="${{ secrets.NEXUS_SIGNING_KEYID }}" >> gradle.properties + echo signing.secretKeyRingFile=/tmp/secret_key.gpg >> gradle.properties + echo signing.password="${{ secrets.NEXUS_SIGNING_PASSWORD }}" >> gradle.properties + - name: Build project run: | chmod +x ./gradlew ./gradlew shadowJar + - name: Upload artifact to Nexus env: ORG_GRADLE_PROJECT_ossrhUsername: ${{ secrets.NEXUS_OSSRH_USERNAME }} ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.NEXUS_OSSRH_PASSWORD }} - ORG_GRADLE_PROJECT_signing.keyId: ${{ secrets.NEXUS_SIGNING_KEYID }} - ORG_GRADLE_PROJECT_signing.password: ${{ secrets.NEXUS_SIGNING_PASSWORD }} - ORG_GRADLE_PROJECT_signing.secretKeyRingFile: ./secret_key.gpg + # ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.NEXUS_SIGNING_KEYID }} + # ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.NEXUS_SIGNING_PASSWORD }} + # ORG_GRADLE_PROJECT_signingKey: "/tmp/secret_key.gpg" run: | ./gradlew uploadArchives + # - name: upload artifact ckb.jar to GitHub release page # uses: actions/upload-release-asset@v1 # env: diff --git a/build.gradle b/build.gradle index 074c4d02..278ce6f1 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,7 @@ buildscript { repositories { mavenCentral() + maven { url 'https://nexus.web.cern.ch/nexus/content/repositories/public/' } } dependencies { @@ -25,6 +26,7 @@ buildscript { plugins { id 'com.github.johnrengelman.shadow' version '8.1.1' id 'java' + id 'signing' } apply plugin: 'com.github.johnrengelman.shadow' @@ -42,7 +44,7 @@ allprojects { targetCompatibility = 1.8 group 'org.nervos.ckb' - version '3.0.0' + version '0.0.11' apply plugin: 'java' repositories { @@ -59,11 +61,10 @@ allprojects { useJUnitPlatform() } apply from: rootProject.file('gradle/checkstyle.gradle') + } configure(subprojects.findAll { it.name != 'tests' }) { - // Required for Maven Nexus repository - apply plugin: 'signing' // Required for JFrog Artifactory repository apply plugin: 'maven-publish' @@ -87,11 +88,19 @@ configure(subprojects.findAll { it.name != 'tests' }) { archives sourcesJar, javadocJar, testJar } + // Required for Maven Nexus repository + apply plugin: 'signing' + ext { ossrhUsername = project.hasProperty('ossrhUsername') ? project.property('ossrhUsername') : '' ossrhPassword = project.hasProperty('ossrhPassword') ? project.property('ossrhPassword') : '' + // signingKeyId + signingKeyId = project.hasProperty('signingKeyId') ? project.property('signingKeyId') : '' + signingPassword = project.hasProperty('signingPassword') ? project.property('signingPassword') : '' + signingKey = project.hasProperty('signingKey') ? project.property('signingKey') : '' } + publishing { repositories { maven { @@ -105,12 +114,15 @@ configure(subprojects.findAll { it.name != 'tests' }) { publications { mavenJava(MavenPublication) { groupId 'org.nervos.ckb' - version '3.0.0' - from components.java + version '0.0.11' + from components.java + + artifact javadocJar + artifact sourcesJar pom { name = 'ckb-sdk-java' - description = project.description + description = "ckb java sdk" url = 'https://github.com/nervosnetwork/ckb-sdk-java.git' scm { connection = 'scm:git@github.com:nervosnetwork/ckb-sdk-java.git' @@ -131,9 +143,13 @@ configure(subprojects.findAll { it.name != 'tests' }) { } } } - } - } - } + } + } + } + + signing { + sign publishing.publications + } tasks.register('uploadArchives') { @@ -141,11 +157,6 @@ configure(subprojects.findAll { it.name != 'tests' }) { dependsOn publish } - signing { - required { gradle.taskGraph.hasTask('uploadArchives') } - // only execute as part of this task - sign configurations.archives - } tasks.register('release') { println("release ${it.name}") diff --git a/ckb/src/main/java/org/nervos/ckb/CkbRpcApi.java b/ckb/src/main/java/org/nervos/ckb/CkbRpcApi.java index 11965349..02b98af7 100644 --- a/ckb/src/main/java/org/nervos/ckb/CkbRpcApi.java +++ b/ckb/src/main/java/org/nervos/ckb/CkbRpcApi.java @@ -35,7 +35,7 @@ default TransactionWithStatus getTransaction(@Nonnull byte[] transactionHash) th * * @param transactionHash the transaction hash * @return the RPC does not return the transaction content and the field transaction must be null. - * @throws IOException + * @throws IOException Error occurs while communicating with the RPC server or if the transaction hash is invalid */ default TransactionWithStatus getTransactionStatus(@Nonnull byte[] transactionHash) throws IOException { return getTransactionStatus(transactionHash, null); diff --git a/ckb/src/main/java/org/nervos/ckb/transaction/AbstractTransactionBuilder.java b/ckb/src/main/java/org/nervos/ckb/transaction/AbstractTransactionBuilder.java index 8e10c886..709cb072 100644 --- a/ckb/src/main/java/org/nervos/ckb/transaction/AbstractTransactionBuilder.java +++ b/ckb/src/main/java/org/nervos/ckb/transaction/AbstractTransactionBuilder.java @@ -18,6 +18,7 @@ public abstract class AbstractTransactionBuilder { * * @param configuration This is the bundle of configuration for builder, * such as fee rate and registerred {@link org.nervos.ckb.transaction.handler.ScriptHandler}. + * @param availableInputs The available inputs for the transaction. */ public AbstractTransactionBuilder(TransactionBuilderConfiguration configuration, Iterator availableInputs) { this.configuration = configuration; @@ -101,6 +102,7 @@ protected static long calculateTxFee(Transaction transaction, long feeRate) { * default context null. Use {@link #build(Object...)} to pass custom contexts. * * @see org.nervos.ckb.transaction.handler.ScriptHandler#buildTransaction(AbstractTransactionBuilder, ScriptGroup, Object) + * @return The built transaction with script groups. */ public TransactionWithScriptGroups build() { return build((Object) null); @@ -149,6 +151,8 @@ public Map rebuildScriptGroups(Map scr * The contexts will be passed to the registered script handlers in the same order. * * @see org.nervos.ckb.transaction.handler.ScriptHandler#buildTransaction(AbstractTransactionBuilder, ScriptGroup, Object) + * @param contexts The custom contexts for script handlers. + * @return The built transaction with script groups. */ abstract TransactionWithScriptGroups build(Object... contexts); } diff --git a/ckb/src/main/java/org/nervos/ckb/transaction/CkbTransactionBuilder.java b/ckb/src/main/java/org/nervos/ckb/transaction/CkbTransactionBuilder.java index 431c440a..fe773419 100644 --- a/ckb/src/main/java/org/nervos/ckb/transaction/CkbTransactionBuilder.java +++ b/ckb/src/main/java/org/nervos/ckb/transaction/CkbTransactionBuilder.java @@ -28,6 +28,8 @@ public CkbTransactionBuilder(TransactionBuilderConfiguration configuration, Iter * Add a potential input for the transaction. *

* The input may not be actually used if there's already enough capacity for the outputs. + * @param transactionInput The input. + * @return The builder. */ public CkbTransactionBuilder addInput(TransactionInput transactionInput) { transactionInputs.add(transactionInput); @@ -45,6 +47,9 @@ public CkbTransactionBuilder addHeaderDep(String headerDep) { /** * Add outputs and data. The two parameters should have the same size. + * @param outputs The outputs. + * @param outputsData The data of the outputs. + * @return The builder. */ public CkbTransactionBuilder setOutputs(List outputs, List outputsData) { tx.outputs.addAll(outputs); @@ -75,6 +80,9 @@ public CkbTransactionBuilder addDaoDepositOutput(String address, long capacity) * Set possible change output. Its capacity must be 0. *

* Change output should be set only once. + * @param output The change output. + * @param data The data of the change output. + * @return The builder. */ public CkbTransactionBuilder setChangeOutput(@Nonnull CellOutput output, @Nonnull byte[] data) { if (changeOutput != null) { @@ -92,6 +100,8 @@ public CkbTransactionBuilder setChangeOutput(@Nonnull CellOutput output, @Nonnul * Set possible change output address. *

* Change output should be set only once. + * @param address The address of the change output. + * @return The builder. */ public CkbTransactionBuilder setChangeOutput(@Nonnull String address) { CellOutput output = new CellOutput(0, Address.decode(address).getScript()); diff --git a/ckb/src/main/java/org/nervos/ckb/transaction/handler/ScriptHandler.java b/ckb/src/main/java/org/nervos/ckb/transaction/handler/ScriptHandler.java index f1035a81..95396a2b 100644 --- a/ckb/src/main/java/org/nervos/ckb/transaction/handler/ScriptHandler.java +++ b/ckb/src/main/java/org/nervos/ckb/transaction/handler/ScriptHandler.java @@ -29,8 +29,9 @@ public interface ScriptHandler { * *

For example:

* - *
{@code
-   * @Override
+   * 
+   * 
+   * \@Override
    * boolean buildTransaction(AbstractTransactionBuilder txBuilder, ScriptGroup scriptGroup, Object context) {
    *    // Only change the transaction when the script is used.
    *    if (scriptGroup == null || !isMatched(scriptGroup.getScript())) {
@@ -45,8 +46,8 @@ public interface ScriptHandler {
    *    txBuilder.setWitness(witnessIndex, WitnessArgs.Type.LOCK, dummyWitness);
    *
    *    return true;
-   * }
-   * }
+ * + *
* * @param txBuilder The transaction in building. * @param scriptGroup Transaction builder calls this callback for each script group found in the transaction. diff --git a/core/src/main/java/org/nervos/ckb/sign/ScriptSigner.java b/core/src/main/java/org/nervos/ckb/sign/ScriptSigner.java index c114b45b..c1f07925 100644 --- a/core/src/main/java/org/nervos/ckb/sign/ScriptSigner.java +++ b/core/src/main/java/org/nervos/ckb/sign/ScriptSigner.java @@ -20,9 +20,9 @@ public interface ScriptSigner { * @param context This is passed from {@code TransactionSigner.signTransaction} * @return {@code true} when the script handler has modified the transaction. * - * @see TransactionSigner#signTransaction(TransactionWithScriptGroups, Context...) - * @see TransactionSigner#signTransaction(TransactionWithScriptGroups, Set) - * @see TransactionSigner#signTransaction(TransactionWithScriptGroups, String...) + * @see "TransactionSigner#signTransaction(TransactionWithScriptGroups, Context...)" + * @see "TransactionSigner#signTransaction(TransactionWithScriptGroups, Set)" + * @see "TransactionSigner#signTransaction(TransactionWithScriptGroups, String...)" */ boolean signTransaction(Transaction transaction, ScriptGroup scriptGroup, Context context); }