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..82af79888 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 source:jar javadoc:jar clean install -f src/resources/${{ inputs.crypto-type }}_pom.xml
+
+ 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 }}
+
+ - 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/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