diff --git a/.github/actions/build-and-test/action.yaml b/.github/actions/build-and-test/action.yaml
index f9ab2d19b..27920a827 100644
--- a/.github/actions/build-and-test/action.yaml
+++ b/.github/actions/build-and-test/action.yaml
@@ -31,11 +31,11 @@ runs:
- name: Stage crypto
shell: bash
run: |
- ./set_cypto ${{ inputs.crypto-type }}
+ ./set_crypto ${{ inputs.crypto-type }}
- name: Build
shell: bash
- run: mvn clean install -P ${{ inputs.crypto-type }}
+ run: mvn clean install
- name: Run EE server
if: ${{ inputs.run-tests == 'true' }}
diff --git a/.github/actions/fast-forward-merge/action.yaml b/.github/actions/fast-forward-merge/action.yaml
deleted file mode 100644
index d917069b5..000000000
--- a/.github/actions/fast-forward-merge/action.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-name: "Fast forward merge"
-description: Fast forward target branch to given commit hash
-
-inputs:
- ref_to_merge:
- description: Branch to merge into base
- required: true
- base_branch:
- description: Base branch
- required: true
- git-bot-token:
- description: Git bot token
- required: true
-
-runs:
- using: composite
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- # Fetch the whole history to prevent unrelated history errors
- fetch-depth: "0"
- ref: ${{ inputs.base_branch }}
- token: ${{ inputs.git-bot-token }}
-
- - name: Debug stuff
- shell: bash
- run: |
- git remote -vvv
- - name: Fast forward
- shell: bash
- run: git merge --ff-only ${{ inputs.ref_to_merge }}
-
- - name: Upload changes to remote head branch
- shell: bash
- run: git push
diff --git a/.github/actions/publish-to-jfrog/action.yaml b/.github/actions/publish-to-jfrog/action.yaml
index 68f8a7654..e81b851a8 100644
--- a/.github/actions/publish-to-jfrog/action.yaml
+++ b/.github/actions/publish-to-jfrog/action.yaml
@@ -13,40 +13,98 @@ inputs:
jfrog-platform-url:
description: ""
required: false
- default: https://aerospike.jfrog.io/
+ default: https://aerospike.jfrog.io
oidc-provider:
description: ""
- required: false
- default: gh-aerospike-clients
+ required: true
oidc-audience:
description: ""
- required: false
- default: aerospike/clients
+ required: true
crypto-type:
description: ""
required: false
- default: gnu
+ artifact-name:
+ description: ""
+ required: true
+ artifact-id:
+ description: ""
+ required: true
runs:
using: "composite"
steps:
- name: Set up JFrog credentials
+ id: setup-jfrog-cli
uses: jfrog/setup-jfrog-cli@v4
env:
JF_URL: ${{ inputs.jfrog-platform-url }}
with:
+ version: 2.72.2
oidc-provider-name: ${{ inputs.oidc-provider }}
oidc-audience: ${{ inputs.oidc-audience }}
- - name: Set crypto dependency
+ - uses: s4u/maven-settings-action@v3.1.0
+ with:
+ servers: '[{"id": "jfrog", "username": "${{ steps.setup-jfrog-cli.outputs.oidc-user }}", "password": "${{ steps.setup-jfrog-cli.outputs.oidc-token }}"}]'
+
+ - name: Configure jf cli
+ shell: bash
+ run: |
+ jf mvn-config \
+ --repo-deploy-releases=${{ inputs.jfrog-releases-repo-name }} \
+ --repo-deploy-snapshots=${{ inputs.jfrog-snapshots-repo-name }} \
+ --exclude-patterns="*client${{ inputs.crypto-type != 'bouncycastle' && '-bc' || '' }}-jdk21*"
+
+ - name: Debug
shell: bash
+ working-directory: client
run: |
- ./set_crypto ${{ inputs.crypto-type }}
+ ls -la target
- - name: Deploy release
+ - name: Deploy client release
shell: bash
working-directory: client
run: |
- jf mvn-config --repo-deploy-releases=${{ inputs.jfrog-releases-repo-name }} --repo-deploy-snapshots=${{ inputs.jfrog-snapshots-repo-name }}
- jf mvn source:jar javadoc:jar deploy -Dusername=${{ steps.setup-jfrog-cli.outputs.oidc-user }} ${{ steps.setup-jfrog-cli.outputs.oidc-token }}
- jf rt bp
+ # jf mvn source:jar javadoc:jar install deploy:deploy-file \
+ # -DartifactId=${{ inputs.artifact-id }} \
+ # -DpomFile=src/resources/${{ inputs.crypto-type }}_pom.xml \
+ # -Dfile=target/${{ inputs.artifact-name }}.jar \
+ # -Dfiles=target/${{ inputs.artifact-name }}-jar-with-dependencies.jar \
+ # -Dtypes=jar \
+ # -Dclassifiers=jar-with-dependencies \
+ # -Dsources=target/${{ inputs.artifact-name }}-sources.jar \
+ # -Djavadoc=target/${{ inputs.artifact-name }}-javadoc.jar \
+ # -DrepositoryId=jfrog \
+ # -DgeneratePom=false \
+ # -Durl=${{ inputs.jfrog-platform-url }}/artifactory/${{ inputs.jfrog-releases-repo-name }}
+ #
+ jf mvn install -f src/resources/${{ inputs.crypto-type }}_pom.xml
+
+ jf mvn source:jar javadoc:jar deploy:deploy-file \
+ -DartifactId=${{ inputs.artifact-id }} \
+ -DpomFile=${{ inputs.crypto-type }}_pom.xml \
+ -Dfile=target/${{ inputs.artifact-name }}.jar \
+ -Dfiles=target/${{ inputs.artifact-name }}-jar-with-dependencies.jar \
+ -Dtypes=jar \
+ -Dclassifiers=jar-with-dependencies \
+ -Dsources=target/${{ inputs.artifact-name }}-sources.jar \
+ -Djavadoc=target/${{ inputs.artifact-name }}-javadoc.jar \
+ -DrepositoryId=jfrog \
+ -DgeneratePom=false \
+ -Durl=${{ inputs.jfrog-platform-url }}/artifactory/${{ inputs.jfrog-releases-repo-name }}
+
+ - name: Debug
+ shell: bash
+ working-directory: client
+ run: |
+ ls -la target
+
+ - name: Publish build info
+ shell: bash
+ run: |
+ # Collect environment variables for the build
+ jf rt bce
+ # Collect VCS details from git and add them to the build
+ jf rt bag
+ # Publish build info
+ jf rt bp clients-java-push-to-dev ${{ github.run_number }}
diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml
index 2a47beab5..1ca17a63e 100644
--- a/.github/workflows/build-dev.yaml
+++ b/.github/workflows/build-dev.yaml
@@ -75,7 +75,7 @@ jobs:
needs: java-version
strategy:
matrix:
- crypto-type: ["bouncycastle", "gnu"]
+ crypto-type: [bouncycastle, gnu]
with:
java-version: ${{ needs.java-version.outputs.java-version }}
branch: ${{ inputs.branch }}
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index f422b6b87..ac0a79c64 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -1,4 +1,5 @@
name: Build artifacts
+run-name: Build artifact for ${{ inputs.crypto-type }} ${{ inputs.java-version }}
permissions:
# This is required for requesting the OIDC token
@@ -41,12 +42,16 @@ on:
required: true
GPG_PASS:
required: true
+ JFROG_OIDC_PROVIDER:
+ required: true
+ JFROG_OIDC_AUDIENCE:
+ required: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- - name: Checkout client
+ - name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.branch }}
@@ -66,8 +71,24 @@ jobs:
server-tag: ${{ inputs.server-tag }}
use-server-rc: ${{ inputs.use-server-rc }}
+ - name: Get artifact name
+ id: get-artifact-name
+ working-directory: client
+ run: |
+ echo artifact-name=$(mvn help:evaluate -Dexpression=project.build.finalName -q -DforceStdout) >> $GITHUB_OUTPUT
+
+ - name: Get artifact ID
+ id: get-artifact-id
+ working-directory: client
+ run: |
+ echo artifact-id="aerospike-client${{ inputs.crypto-type == 'bouncycastle' && '-bc' || '' }}-jdk${{ inputs.java-version }}" >> $GITHUB_OUTPUT
+
- name: Publish to JFrog
if: ${{ !cancelled() && inputs.upload-artifacts == true }}
uses: ./.github/actions/publish-to-jfrog
with:
crypto-type: ${{ inputs.crypto-type }}
+ oidc-provider: ${{ secrets.JFROG_OIDC_PROVIDER }}
+ oidc-audience: ${{ secrets.JFROG_OIDC_AUDIENCE }}
+ artifact-name: ${{ steps.get-artifact-name.outputs.artifact-name }}
+ artifact-id: ${{ steps.get-artifact-id.outputs.artifact-id }}
diff --git a/.github/workflows/promote-prod.yaml b/.github/workflows/promote-prod.yaml
index 63f03a009..c724cf4aa 100644
--- a/.github/workflows/promote-prod.yaml
+++ b/.github/workflows/promote-prod.yaml
@@ -16,6 +16,7 @@ jobs:
name: Promot from stage to prod
uses: ./.github/workflows/promote.yaml
with:
- build-number: ${{ inputs.build-number }}
- target-repository: client-maven-stage-local
+ build-number: ${{ inputs.build-number }}
+ target-repository: clients-maven-stage-local
target-branch: dev-stage
+ secrets: inherit
diff --git a/.github/workflows/promote-to-stage.yaml b/.github/workflows/promote-to-stage.yaml
index fe52abdf9..6e01bd65a 100644
--- a/.github/workflows/promote-to-stage.yaml
+++ b/.github/workflows/promote-to-stage.yaml
@@ -20,14 +20,25 @@ jobs:
env:
JF_URL: ${{ vars.JFROG_PLATFORM_URL }}
with:
- oidc-provider-name: ${{ inputs.oidc-provider }}
- oidc-audience: ${{ inputs.oidc-audience }}
+ oidc-provider-name: ${{ secrets.JFROG_OIDC_PROVIDER }}
+ oidc-audience: ${{ secrets.JFROG_OIDC_AUDIENCE }}
- name: Get info
id: get-build-info
run: |
echo build-info=$(jf rt curl /api/build/clients-java-push-to-dev/${{ inputs.build-number }}) >> $GITHUB_OUTPUT
+ - name: Get commit hash from repo
+ id: get-commit-hash
+ run: |
+ echo commit-hash=$(echo '${{ steps.get-build-info.outputs.build-info }}' | jq -r '.buildInfo.vcs[].revision') >> $GITHUB_OUTPUT
+
+ - name: Get build name
+ id: get-build-name
+ run: |
+ echo build-name=$(echo '${{ steps.get-build-info.outputs.build-info }}' | jq -r '.buildInfo.name') >> $GITHUB_OUTPUT
+
- name: Debug
run: |
- echo ${{ steps.get-build-info.outputs.build-info }}
+ echo "commit-hash: '${{ steps.get-commit-hash.outputs.commit-hash }}'"
+ echo "build-name: '${{ steps.get-build-name.outputs.build-name }}'"
diff --git a/.github/workflows/promote.yaml b/.github/workflows/promote.yaml
index 302218397..a8d203b2e 100644
--- a/.github/workflows/promote.yaml
+++ b/.github/workflows/promote.yaml
@@ -4,7 +4,7 @@ on:
workflow_call:
inputs:
build-number:
- type: number
+ type: string
description: Build number used to build artifact to be promoted
target-repository:
type: string
@@ -25,8 +25,8 @@ jobs:
env:
JF_URL: ${{ vars.JFROG_PLATFORM_URL }}
with:
- oidc-provider-name: ${{ inputs.oidc-provider }}
- oidc-audience: ${{ inputs.oidc-audience }}
+ oidc-provider-name: ${{ secrets.JFROG_OIDC_PROVIDER }}
+ oidc-audience: ${{ secrets.JFROG_OIDC_AUDIENCE }}
- name: Get info
id: get-build-info
@@ -36,25 +36,43 @@ jobs:
- name: Get commit hash from repo
id: get-commit-hash
run: |
- echo commit-hash=$(steps.get-build-info.outputs.build-info | jq -r '.vcs[].revision') >> $GITHUB_OUTPUT
+ echo commit-hash=$(echo '${{ steps.get-build-info.outputs.build-info }}' | jq -r '.buildInfo.vcs[].revision') >> $GITHUB_OUTPUT
- - name: Get commit hash from repo
+ - name: Get build name
id: get-build-name
run: |
- echo build-name=$(steps.get-build-info.outputs.build-info | jq -r '.name') >> $GITHUB_OUTPUT
+ echo build-name=$(echo '${{ steps.get-build-info.outputs.build-info }}' | jq -r '.buildInfo.name') >> $GITHUB_OUTPUT
- name: Debug
run: |
- echo ${{ steps.get-build-info.outputs.build-info }}
- echo ${{ steps.get-build-info.outputs.build-name }}
+ echo "commit-hash: '${{ steps.get-commit-hash.outputs.commit-hash }}'"
+ echo "build-name: '${{ steps.get-build-name.outputs.build-name }}'"
+
+ # Needed since we are using actions which are part of the repository
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ # Fetch the whole history to prevent unrelated history errors
+ fetch-depth: "0"
+ ref: ${{ inputs.target-branch }}
+ token: ${{ secrets.CLIENT_BOT_PAT }}
+
+ - name: Fast forward
+ shell: bash
+ run: git merge --ff-only ${{ inputs.ref-to-merge }}
- - name: Merge commit hash from source to target branch
- uses: ./github/actions/fast-forward-merge
+ - name: Add tagging message
+ uses: stefanzweifel/git-auto-commit-action@v4
with:
- ref-to-merge: ${{ steps.get-build-info.outputs.build-info }}
- base-branch: ${{ inputs.target-branch }}
- git-bot-token: ${{ secrets.CLIENT_BOT_PAT }}
+ commit_message: "Promote to prod [skip ci]"
+ commit_author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
+ tagging_message: Promote to PROD
+ branch: ${{ inputs.target-branch }}
+
+ - name: Upload changes to remote head branch
+ shell: bash
+ run: git push
- name: Promote build
run: |
- jf rt build-promote ${{ steps.get-build-info.outputs.build-name }} ${{ inputs.build-number }} ${{ inputs.target-repository }}
+ jf rt build-promote ${{ steps.get-build-name.outputs.build-name }} ${{ inputs.build-number }} ${{ inputs.target-repository }}
diff --git a/client/bouncycastle_pom.xml b/client/bouncycastle_pom.xml
new file mode 100644
index 000000000..854b24fb8
--- /dev/null
+++ b/client/bouncycastle_pom.xml
@@ -0,0 +1,308 @@
+
+ 4.0.0
+
+
+ com.aerospike
+ aerospike-parent
+ 9.0.2
+
+ aerospike-client-bc-jdk21
+ jar
+
+ aerospike-client-jdk21
+
+
+
+ io.netty
+ netty-transport
+ provided
+ true
+
+
+
+ io.netty
+ netty-transport-native-epoll
+ linux-x86_64
+ provided
+ true
+
+
+
+ io.netty
+ netty-transport-native-kqueue
+ osx-x86_64
+ provided
+ true
+
+
+
+ io.netty.incubator
+ netty-incubator-transport-native-io_uring
+ linux-x86_64
+ provided
+ true
+
+
+
+ io.netty
+ netty-handler
+ provided
+ true
+
+
+
+ org.luaj
+ luaj-jse
+
+
+
+ org.mindrot
+ jbcrypt
+
+
+
+
+
+ bouncycastle
+
+
+ ../bouncycastle.config
+
+
+
+
+ -bc
+
+
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+ 1.69
+
+
+
+
+
+ maven-antrun-plugin
+ 3.1.0
+
+
+ copy-dev-files
+ process-resources
+
+
+
+
+
+
+ run
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-install-plugin
+ 3.1.3
+
+
+ install-custom-pom
+ install
+
+ install-file
+
+
+ ${project.basedir}/src/resources/bouncycastle_pom.xml
+ target/${project.build.finalName}.jar
+ com.aerospike
+ aerospike-client${crypto.type}-jdk21
+
+
+
+
+
+
+
+
+
+ gnu
+
+ true
+
+
+
+
+
+
+
+
+ org.gnu
+ gnu-crypto
+ 2.0.1
+
+
+
+
+
+
+ maven-antrun-plugin
+ 3.1.0
+
+
+ copy-dev-files
+ process-resources
+
+
+
+
+
+
+ run
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-install-plugin
+ 3.1.3
+
+
+ install-custom-pom
+ install
+
+ install-file
+
+
+ ${project.basedir}/src/resources/gnu_pom.xml
+ target/${project.build.finalName}.jar
+ com.aerospike
+ aerospike-client${crypto.type}-jdk21
+
+
+
+
+
+
+
+
+
+
+
+ aerospike-client${crypto.type}-jdk21-${version}
+ ${project.basedir}/src
+
+
+ ${project.basedir}/src/resources
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ 21
+
+
+
+
+ maven-assembly-plugin
+
+
+ jar-with-dependencies
+
+
+
+
+ make-my-jar-with-dependencies
+ package
+
+ single
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.6.3
+
+ none
+ ${basedir}
+ Aerospike Java Client
+ public
+ true
+ Copyright © 2012–{currentYear} Aerospike, Inc. All rights reserved.
+ ${basedir}/src
+
+ com/aerospike/client/*
+ com/aerospike/client/cdt/*
+ com/aerospike/client/listener/*
+ com/aerospike/client/command/ParticleType.java
+ com/aerospike/client/exp/*
+ com/aerospike/client/metrics/*
+ com/aerospike/client/operation/*
+ com/aerospike/client/policy/*
+ com/aerospike/client/task/*
+ com/aerospike/client/admin/Privilege.java
+ com/aerospike/client/admin/PrivilegeCode.java
+ com/aerospike/client/admin/Role.java
+ com/aerospike/client/admin/User.java
+ com/aerospike/client/async/AsyncIndexTask.java
+ com/aerospike/client/async/EventLoop.java
+ com/aerospike/client/async/EventLoopBase.java
+ com/aerospike/client/async/EventLoops.java
+ com/aerospike/client/async/EventPolicy.java
+ com/aerospike/client/async/Monitor.java
+ com/aerospike/client/async/NettyEventLoop.java
+ com/aerospike/client/async/NettyEventLoops.java
+ com/aerospike/client/async/NettyTlsContext.java
+ com/aerospike/client/async/NioEventLoop.java
+ com/aerospike/client/async/NioEventLoops.java
+ com/aerospike/client/async/Throttle.java
+ com/aerospike/client/async/Throttles.java
+ com/aerospike/client/cluster/ClusterStats.java
+ com/aerospike/client/cluster/ConnectionStats.java
+ com/aerospike/client/cluster/Node.java
+ com/aerospike/client/cluster/NodeStats.java
+ com/aerospike/client/cluster/ThreadDaemonFactory.java
+ com/aerospike/client/lua/LuaConfig.java
+ com/aerospike/client/lua/LuaCache.java
+ com/aerospike/client/query/Filter.java
+ com/aerospike/client/query/IndexCollectionType.java
+ com/aerospike/client/query/IndexType.java
+ com/aerospike/client/query/PartitionFilter.java
+ com/aerospike/client/query/QueryListener.java
+ com/aerospike/client/query/RecordSet.java
+ com/aerospike/client/query/RegexFlag.java
+ com/aerospike/client/query/ResultSet.java
+ com/aerospike/client/query/Statement.java
+ com/aerospike/client/util/ThreadLocalData.java
+
+
+
+
+
+
+
+
diff --git a/client/pom.xml b/client/pom.xml
index baa6963c9..6eb75b67c 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -116,7 +116,7 @@
install-file
- ${project.basedir}/src/resources/bouncy_pom.xml
+ ${project.basedir}/src/resources/bouncycastle_pom.xml
target/${project.build.finalName}.jar
com.aerospike
aerospike-client${crypto.type}-jdk21
@@ -301,7 +301,6 @@
-
diff --git a/client/src/resources/bouncy_pom.xml b/client/src/resources/bouncycastle_pom.xml
similarity index 98%
rename from client/src/resources/bouncy_pom.xml
rename to client/src/resources/bouncycastle_pom.xml
index c32d7bea6..1fc1c059c 100644
--- a/client/src/resources/bouncy_pom.xml
+++ b/client/src/resources/bouncycastle_pom.xml
@@ -2,7 +2,7 @@
4.0.0
com.aerospike
aerospike-client-bc-jdk21
- 9.0.1
+ 9.0.2
jar
Aerospike Java Client BC
Aerospike Java client interface to Aerospike database server. Uses Bouncy Castle crypto library for RIPEMD-160 hashing.
diff --git a/client/src/resources/gnu_pom.xml b/client/src/resources/gnu_pom.xml
index 3682ae49a..5005254e9 100644
--- a/client/src/resources/gnu_pom.xml
+++ b/client/src/resources/gnu_pom.xml
@@ -2,7 +2,7 @@
4.0.0
com.aerospike
aerospike-client-jdk21
- 9.0.1
+ 9.0.2
jar
Aerospike Java Client
Aerospike Java client interface to Aerospike database server
diff --git a/pom.xml b/pom.xml
index fb3e8f36c..2d6c63b6f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,7 @@
0.4
1.9.0
4.13.1
+ 3.1.3