Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
45c0903
add
juliannguyen4 Jan 8, 2026
ba4e7c7
WIP dry run
juliannguyen4 Jan 8, 2026
4af7f76
Merge remote-tracking branch 'origin/dev' into CLIENT-4051-cicd-allow…
juliannguyen4 Jan 15, 2026
d1b4327
Merge remote-tracking branch 'origin/dev' into CLIENT-4051-cicd-allow…
juliannguyen4 Jan 16, 2026
a1405e0
Merge remote-tracking branch 'origin/dev' into CLIENT-4051-cicd-allow…
juliannguyen4 Jan 21, 2026
8e19597
Need registry name to test qe nightly builds
juliannguyen4 Jan 21, 2026
3cf8e8d
Add skeleton code to disable tagging
juliannguyen4 Jan 21, 2026
e0ed822
finish
juliannguyen4 Jan 22, 2026
070591d
Support dry run flag for uploading to jfrog workflow
juliannguyen4 Jan 22, 2026
297944f
Add implementation and first rough draft of test case. TODO: needs ed…
juliannguyen4 Mar 23, 2026
cc5475f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 23, 2026
8519ae2
Fix test syntax.
juliannguyen4 Mar 23, 2026
71f84e7
Revert c changes. Sets need to belong to a namespace
juliannguyen4 Mar 24, 2026
142c0eb
Merge remote-tracking branch 'origin/dev' into CLIENT-4313-support-cr…
juliannguyen4 Apr 3, 2026
3c89436
Rename since we will have set index creation logic in here
juliannguyen4 Apr 3, 2026
24ac4c5
fix test. This should be its own method
juliannguyen4 Apr 3, 2026
52e5328
Implement index_set_create
juliannguyen4 Apr 6, 2026
ac49a08
Fix compiler error
juliannguyen4 Apr 6, 2026
f15587e
add type stub
juliannguyen4 Apr 6, 2026
44c8075
Have sindex test case log in as user with only sindex-admin role.
juliannguyen4 Apr 6, 2026
41acfa8
Update c client to address segv from dereferencing NULL ptr
juliannguyen4 Apr 6, 2026
441aff0
Update c client again.
juliannguyen4 Apr 7, 2026
a08dd29
Fix incorrect kwarg. TODO need to fix type stubs as well...
juliannguyen4 Apr 7, 2026
fae5bdb
Fix test not cleaning up after new user
juliannguyen4 Apr 7, 2026
204957d
Have test start with known environment
juliannguyen4 Apr 7, 2026
5a30969
Explicitly set index_type to AS_INDEX_TYPE_SET and index_datatype to …
juliannguyen4 Apr 7, 2026
76691c6
Type stubs: fix admin commands having incorrect kwarg username. Stubt…
juliannguyen4 Apr 7, 2026
7ff71c6
Fix test syntax
juliannguyen4 Apr 7, 2026
0905b0d
Skip test for CE. But also running on server < 8.1.2 to see what happens
juliannguyen4 Apr 7, 2026
2540025
Fix regression where methods were removed from type stubs..
juliannguyen4 Apr 7, 2026
c5538a4
Pull c client again to address segv when running against server 8.1.1
juliannguyen4 Apr 8, 2026
21785c6
Pull c client to fix linker error
juliannguyen4 Apr 8, 2026
486775f
Align with c client's config provider interval default of 5000
juliannguyen4 Apr 8, 2026
65b487c
Fix test
juliannguyen4 Apr 8, 2026
4115420
Update c client again to fix test error
juliannguyen4 Apr 8, 2026
9287ff9
Fix
juliannguyen4 Apr 8, 2026
9491241
Test should expect server error on < 8.1.2
juliannguyen4 Apr 8, 2026
33a0b65
Cherry pick ci/cd changes from other 8.1.2 branches
juliannguyen4 Apr 8, 2026
53bfc81
Add test case for code coverage.
juliannguyen4 Apr 8, 2026
7e8ca48
Point c client back to stage now that set index creation is there
juliannguyen4 Apr 9, 2026
1f0c4de
Revert for now. Create a separate PR/jira ticket for this
juliannguyen4 Apr 9, 2026
60adad8
jf docker pull fails because it can't connect to the Docker daemon fo…
juliannguyen4 Apr 9, 2026
2f8b47d
Fix bad syntax
juliannguyen4 Apr 9, 2026
d98a655
Strong consistency requires features.conf
juliannguyen4 Apr 9, 2026
1776e44
Fix CE tests by always pulling from docker.io for now. There's no sha…
juliannguyen4 Apr 9, 2026
8c31958
Test feature branch from shared workflows to fix tls not working
juliannguyen4 Apr 9, 2026
b62aef3
Fix wrong output name
juliannguyen4 Apr 9, 2026
5505ccc
Fix user agent job
juliannguyen4 Apr 9, 2026
fa8f4ab
Fix tls paths. TODO this will probably fail for cibuildwheel manylinu…
juliannguyen4 Apr 9, 2026
bb0d281
Fix workflow
juliannguyen4 Apr 9, 2026
6c1a487
Point to my feature branch in shared workflows repo to fix TLS connec…
juliannguyen4 Apr 9, 2026
6cb90c7
Fix not creating superuser. Forgot to include this after migrating
juliannguyen4 Apr 9, 2026
4826825
Fix workflow
juliannguyen4 Apr 9, 2026
06672e7
Fix bad syntax..
juliannguyen4 Apr 9, 2026
2b679aa
Fix workflow..
juliannguyen4 Apr 9, 2026
8a45404
Fix workflow
juliannguyen4 Apr 9, 2026
c1955c0
Use Mirza's branch
juliannguyen4 Apr 9, 2026
962bc79
Fix test since we aren't creating superuser anymore
juliannguyen4 Apr 9, 2026
a79055b
Pull mirza's latest changes to fix tls name not matching cluster name
juliannguyen4 Apr 9, 2026
fcececa
Fix workflow..
juliannguyen4 Apr 9, 2026
10c4539
Fix workflow
juliannguyen4 Apr 9, 2026
bf6fc36
Pull mirza's latest changes to fix action failing if only security is…
juliannguyen4 Apr 9, 2026
3b879db
Just pull 8.1.x manually, latest tag is pointing to 8.1.0.0-start-75-…
juliannguyen4 Apr 9, 2026
0ab2ba7
Just uncomment to get tests to pass.
juliannguyen4 Apr 9, 2026
0ede309
Replace latest tag since its borked in the jfrog repo
juliannguyen4 Apr 9, 2026
74601c0
Merge remote-tracking branch 'origin/CLIENT-4051-cicd-allow-running-d…
juliannguyen4 Apr 10, 2026
f21bb15
update ci/cd to not depend on latest tag. this means every manual wor…
juliannguyen4 Apr 10, 2026
fa356b0
Read source code for shared action, this could be why?
juliannguyen4 Apr 10, 2026
f47e3ef
Make action work inside a docker container
juliannguyen4 Apr 10, 2026
4fc4c03
Fix syntax
juliannguyen4 Apr 10, 2026
916290a
Use this syntax to support hyphens.
juliannguyen4 Apr 10, 2026
a54f9aa
Google AI's suggestion didn't work
juliannguyen4 Apr 10, 2026
936ff6b
Forgot to remove quotes.
juliannguyen4 Apr 10, 2026
9d92f10
Can't find a setting in cibuildwheel to create the container on the b…
juliannguyen4 Apr 10, 2026
abc7b51
Revert "Can't find a setting in cibuildwheel to create the container …
juliannguyen4 Apr 10, 2026
6b6b518
Send server container network name to cibuildwheel
juliannguyen4 Apr 10, 2026
80d619d
Fix build-wheels failing due to printing logs from incorrect containe…
juliannguyen4 Apr 10, 2026
d370d5d
Fix same issue in smoke tests
juliannguyen4 Apr 10, 2026
970e807
Fix valgrind failing if wheel is not found
juliannguyen4 Apr 10, 2026
aaf4c60
only connect to server's network if running tests
juliannguyen4 Apr 10, 2026
3337378
Also mount docker host's root directory onto container so it can acce…
juliannguyen4 Apr 10, 2026
b52e255
Merge remote-tracking branch 'origin/dev' into CLIENT-4313-support-cr…
juliannguyen4 Apr 10, 2026
9369266
Merge remote-tracking branch 'origin/dev' into CLIENT-4313-support-cr…
juliannguyen4 Apr 15, 2026
a4d2d69
Try following current implementation as a workaround to get env vars …
juliannguyen4 Apr 15, 2026
c18bdf7
Rm certs and private keys now that the setup-aerospike-server action …
juliannguyen4 Apr 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 45 additions & 60 deletions .github/actions/run-ee-server/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,77 +2,57 @@ name: 'Run EE Server in a Docker container'
description: 'Run EE server. Returns once server is ready. Only tested on Linux and macOS'
# NOTE: do not share this server container with others
# since it's using the default admin / admin credentials
outputs:
container-network:
description: Forwards the container's network name from setup-as-server
value: ${{ steps.setup-as-server.outputs.network-name }}
container-name:
description: Forwards the container name from setup-as-server
value: ${{ steps.setup-as-server.outputs.container-names }}
inputs:
# All inputs in composite actions are strings
registry-name:
description: Registry name
required: false
default: docker.io
registry-username:
description: Required for using release candidates
required: false
# Github Composite Actions can't access secrets
# so we need to pass them in as inputs
registry-password:
description: Required for using release candidates
required: false
image-name:
required: false
description: aerospike/aerospike-server-enterprise
default: 'aerospike/aerospike-server-enterprise'
oidc-provider-name:
description: For pulling server images from JFrog
required: true
oidc-audience:
description: For pulling server images from JFrog
required: true
features-content:
description: For enabling strong consistency
required: true
server-tag:
required: true
description: Specify Docker tag
default: 'latest'
where-is-client-connecting-from:
required: false
description: 'docker-host, separate-docker-container, "remote-connection" via DOCKER_HOST'
default: 'docker-host'
env-vars:
required: false
description: Used to disable server features
default: 'STRONG_CONSISTENCY=1 SECURITY=1 MUTUAL_TLS=1'

runs:
using: "composite"
steps:
# Start up server

- name: Log into registry to get non-public server RCs
# We can still pull public images while logged in, so just do this all the time to make things simple
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
- uses: aerospike/shared-workflows/.github/actions/setup-aerospike-server@48edf9ff59ab4da5f15915b22d8895f19ce7fd55
id: setup-as-server
with:
registry: ${{ inputs.registry-name }}
username: ${{ inputs.registry-username }}
password: ${{ inputs.registry-password }}

- run: echo IMAGE_FULL_NAME=${{ inputs.registry-name }}/${{ inputs.image-name }}:${{ inputs.server-tag }} >> $GITHUB_ENV
shell: bash

- run: echo CA_CERT_FILE_NAME="ca.cer" >> $GITHUB_ENV
shell: bash

- run: echo TLS_PORT="4333" >> $GITHUB_ENV
shell: bash
enable-security: "true"
enable-tls: "true"
enable-strong-consistency: "true"
features-content: ${{ inputs.features-content }}
num-nodes: 1
oidc-provider: ${{ inputs.oidc-provider-name }}
oidc-audience: ${{ inputs.oidc-audience }}
server-tag: ${{ inputs.server-tag }}
env-vars: DEFAULT_TTL=2592000\;

- name: 'macOS: install timeout command'
if: ${{ runner.os == 'macOS' }}
run: brew install coreutils
shell: bash

# Github composite actions don't support env variables for the whole composite action,
# so this is a workaround
- id: get-container-name
run: echo container-name=aerospike >> $GITHUB_OUTPUT
- run: echo SUPERUSER_NAME_AND_PASSWORD="superuser" >> $GITHUB_ENV
shell: bash

- run: ${{ inputs.env-vars }} bash ./run-ee-server.bash
working-directory: .github/workflows/docker-setup
- run: |
docker run --rm --network host aerospike/aerospike-tools asadm -U admin -P admin --enable --execute "manage acl \
create user $SUPERUSER_NAME_AND_PASSWORD password $SUPERUSER_NAME_AND_PASSWORD \
roles read-write-udf, sys-admin, user-admin, data-admin"
shell: bash
env:
CONTAINER_NAME: ${{ steps.get-container-name.outputs.container-name }}

# Configure tests

- name: Install crudini to manipulate config.conf
run: pipx install crudini --pip-args "-c ${{ github.workspace }}/.github/workflows/requirements.txt"
Expand All @@ -89,19 +69,21 @@ runs:
working-directory: test
shell: bash

- run: echo SUPERUSER_NAME_AND_PASSWORD="superuser" >> $GITHUB_ENV
shell: bash

- name: Set credentials in config file
run: |
crudini --existing=param --set config.conf enterprise-edition user ${{ env.SUPERUSER_NAME_AND_PASSWORD }}
crudini --existing=param --set config.conf enterprise-edition password ${{ env.SUPERUSER_NAME_AND_PASSWORD }}
crudini --set config.conf tls enable true
# Cannot use abs path because config.conf is copied into Docker container during cibuildwheel tests
crudini --set config.conf tls cafile ../.github/workflows/docker-setup/${{ env.CA_CERT_FILE_NAME }}
crudini --set config.conf tls keyfile ../.github/workflows/docker-setup/client.pem
crudini --set config.conf tls certfile ../.github/workflows/docker-setup/client.cer

tls_cert_dir=${{ steps.setup-as-server.outputs.tls-cert-dir }}
if [[ "${{ inputs.where-is-client-connecting-from }}" == "separate-docker-container" ]]; then
tls_cert_dir="/host${tls_cert_dir}"
fi

crudini --set config.conf tls cafile $tls_cert_dir/ca.crt
crudini --set config.conf tls keyfile $tls_cert_dir/client.key
crudini --set config.conf tls certfile $tls_cert_dir/client.crt
working-directory: test
shell: bash

Expand All @@ -121,7 +103,10 @@ runs:

- name: Set IP address to Docker container for the server
if: ${{ inputs.where-is-client-connecting-from == 'separate-docker-container' }}
run: echo SERVER_IP=$(docker container inspect -f '{{ .NetworkSettings.Networks.bridge.IPAddress }}' ${{ steps.get-container-name.outputs.container-name }}) >> $GITHUB_ENV
run: |
server_container_network_name=${{ steps.setup-as-server.outputs.network-name }}
# Go templating doesn't support selecting names with hyphens
echo SERVER_IP=$(docker container inspect -f json ${{ steps.setup-as-server.outputs.container-names }} | jq -r ".[].NetworkSettings.Networks.\"${server_container_network_name}\".IPAddress") >> $GITHUB_ENV
shell: bash

- name: Invalid input
Expand All @@ -134,6 +119,6 @@ runs:
- name: Set EE server's IP address and TLS name for test config
run: |
cluster_name=$(docker run --rm --network host aerospike/aerospike-tools asinfo -U admin -P admin -v "get-config:context=service" -l | grep -i cluster-name | cut -d = -f 2)
crudini --existing=param --set config.conf enterprise-edition hosts "${{ env.SERVER_IP }}:${{ env.TLS_PORT }}|${cluster_name}"
crudini --existing=param --set config.conf enterprise-edition hosts "${{ env.SERVER_IP }}:${{ steps.setup-as-server.outputs.tls-service-ports }}|${cluster_name}"
working-directory: test
shell: bash
7 changes: 6 additions & 1 deletion .github/workflows/build-and-run-stage-tests.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
name: Build artifacts and run stage tests
run-name: Build artifacts and run stage tests (registry-name=${{ inputs.registry-name }}, server-tag=${{ inputs.server-tag }}, test-macos-x86=${{ inputs.test-macos-x86 }})

permissions:
contents: read
id-token: write
statuses: write
packages: read

on:
workflow_dispatch:
inputs:
Expand All @@ -17,7 +23,6 @@ on:
server-tag:
type: string
required: true
default: 'latest'
description: 'Server docker image tag'
test-macos-x86:
required: true
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/build-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ run-name: Build artifacts (run_tests=${{ inputs.run_tests }}, registry-name=${{
# Optionally run tests on manylinux wheels
# Then upload artifacts to Github

permissions:
id-token: write
statuses: write
packages: read
contents: read

on:
workflow_dispatch:
inputs:
Expand Down Expand Up @@ -36,8 +42,7 @@ on:
default: 'aerospike/aerospike-server-enterprise'
server-tag:
type: string
required: true
default: 'latest'
required: false
description: 'Server docker image tag (e.g to test a client backport version)'
test-file:
required: false
Expand Down Expand Up @@ -84,16 +89,11 @@ on:
server-tag:
type: string
required: false
default: 'latest'
test-file:
required: false
type: string
default: ''
secrets:
DOCKER_HUB_BOT_USERNAME:
required: true
DOCKER_HUB_BOT_PW:
required: true
MAC_M1_SELF_HOSTED_RUNNER_PW:
required: true

Expand Down
44 changes: 22 additions & 22 deletions .github/workflows/build-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@ run-name: 'Build wheels (python-tags=${{ inputs.python-tags }}, platform-tag=${{

# Build wheels on all (or select) Python versions supported by the Python client for a specific platform

permissions:
id-token: write
statuses: write
packages: read
contents: read

on:
workflow_dispatch:
inputs:
Expand Down Expand Up @@ -67,8 +73,7 @@ on:
description: Image name
default: 'aerospike/aerospike-server-enterprise'
server-tag:
required: true
default: 'latest'
required: false
description: 'Server docker image tag'
test-file:
required: false
Expand Down Expand Up @@ -116,18 +121,12 @@ on:
server-tag:
required: false
type: string
default: 'latest'
description: 'Server docker image tag'
test-file:
required: false
type: string
default: ''
secrets:
# Just make all the secrets required to make things simpler...
DOCKER_HUB_BOT_USERNAME:
required: true
DOCKER_HUB_BOT_PW:
required: true
QE_DOCKER_REGISTRY_USERNAME:
required: true
QE_DOCKER_REGISTRY_PASSWORD:
Expand All @@ -141,8 +140,6 @@ env:
# Github mac m1 and windows runners don't support Docker / nested virtualization
# so we need to use self-hosted runners to test wheels for these platforms
RUN_INTEGRATION_TESTS_IN_CIBW: ${{ inputs.run_tests && (startsWith(inputs.platform-tag, 'manylinux') || inputs.platform-tag == 'macosx_x86_64') }}
REGISTRY_USERNAME: ${{ inputs.registry-name == 'docker.io' && secrets.DOCKER_HUB_BOT_USERNAME || secrets.QE_DOCKER_REGISTRY_USERNAME }}
REGISTRY_PASSWORD: ${{ inputs.registry-name == 'docker.io' && secrets.DOCKER_HUB_BOT_PW || secrets.QE_DOCKER_REGISTRY_PASSWORD }}

jobs:
# Maps don't exist in Github Actions, so we have to store the map using a script and fetch it in a job
Expand Down Expand Up @@ -224,11 +221,11 @@ jobs:
- name: 'Run Aerospike server in Docker container and configure tests accordingly'
if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }}
uses: ./.github/actions/run-ee-server
id: run-ee-server
with:
registry-name: ${{ inputs.registry-name }}
registry-username: ${{ env.REGISTRY_USERNAME }}
registry-password: ${{ env.REGISTRY_PASSWORD }}
image-name: ${{ inputs.image-name }}
oidc-provider-name: ${{ vars.OIDC_PROVIDER_NAME }}
oidc-audience: ${{ vars.OIDC_AUDIENCE }}
features-content: ${{ secrets.FEATURES_CONTENT }}
server-tag: ${{ inputs.server-tag }}
where-is-client-connecting-from: ${{ inputs.platform-tag == 'macosx_x86_64' && 'docker-host' || 'separate-docker-container' }}

Expand Down Expand Up @@ -303,6 +300,11 @@ jobs:
# Just do it for all Python versions (even those that don't require more room) for futureproofing
run: echo CIBW_ENVIRONMENT_MACOS="LDFLAGS='-headerpad_max_install_names'" >> $GITHUB_ENV

- if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }}
run: |
echo CIBW_CONTAINER_ENGINE="docker;create_args: --network ${{ steps.run-ee-server.outputs.container-network }}" >> $GITHUB_ENV
shell: bash

- name: Build wheel
uses: pypa/cibuildwheel@298ed2fb2c105540f5ed055e8a6ad78d82dd3a7e # v3.3.1
id: cibuildwheel
Expand Down Expand Up @@ -342,10 +344,9 @@ jobs:
# uses: mxschmitt/action-tmate@v3

# For debugging
- run: |
# Checks that server started up properly
docker logs aerospike
if: ${{ always() && env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }}
# Checks that server started up properly
- if: ${{ !cancelled() && env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }}
run: docker logs ${{ steps.run-ee-server.outputs.container-name }}
shell: bash

- name: Upload wheels to GitHub
Expand Down Expand Up @@ -403,10 +404,9 @@ jobs:

- uses: ./.github/actions/run-ee-server
with:
registry-name: ${{ inputs.registry-name }}
registry-username: ${{ env.REGISTRY_USERNAME }}
registry-password: ${{ env.REGISTRY_PASSWORD }}
image-name: ${{ inputs.image-name }}
oidc-provider-name: ${{ vars.OIDC_PROVIDER_NAME }}
oidc-audience: ${{ vars.OIDC_AUDIENCE }}
features-content: ${{ secrets.FEATURES_CONTENT }}
server-tag: ${{ inputs.server-tag }}
where-is-client-connecting-from: ${{ inputs.platform-tag == 'win_amd64' && 'remote-connection' || 'docker-host' }}

Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/bump-stage-and-upload-to-jfrog.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
on:
workflow_call:
inputs:
dry-run:
required: false
default: false
type: boolean
description: "Don't tag or upload anything to JFrog"
passed-dev-tag:
type: string
description: Dev tag to fast forward the stage branch to
Expand Down Expand Up @@ -31,6 +36,7 @@ jobs:
with:
change: 'promote-dev-build-to-rc'
ref: ${{ vars.STAGE_BRANCH_NAME }}
dry-run: ${{ inputs.dry-run }}
secrets: inherit

rebuild-artifacts-with-rc-version:
Expand All @@ -50,6 +56,7 @@ jobs:
uses: ./.github/workflows/upload-to-jfrog.yml
with:
version: ${{ needs.promote-dev-build-to-rc.outputs.new_version }}
dry-run: ${{ inputs.dry-run }}
secrets: inherit

# See reason for deleting artifacts in dev-workflow-p2.yml
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/bump-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ name: Bump version
on:
workflow_dispatch:
inputs:
dry-run:
required: false
default: false
type: boolean
description: "Don't tag"
change:
type: choice
description: Python script name to update the version
Expand All @@ -15,6 +20,11 @@ on:
- promote-rc-build-to-release
workflow_call:
inputs:
dry-run:
required: false
default: false
type: boolean
description: "Don't tag"
change:
# Since workflow_call doesn't support 'options' input type,
# we take in a string instead that must be a valid Python script name (excluding the .py part)
Expand Down Expand Up @@ -93,4 +103,5 @@ jobs:
with:
new_version: ${{ needs.get-new-version.outputs.new_version }}
ref: ${{ inputs.is_workflow_call && inputs.ref || github.ref }}
dry-run: ${{ inputs.dry-run }}
secrets: inherit
Loading
Loading