Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
c0ee1d0
Move entrypoint script to docker compose
juliannguyen4 Oct 28, 2025
84ffcd4
TODO these commands need to be updated
juliannguyen4 Oct 28, 2025
0ee0a2f
WIP
juliannguyen4 Oct 28, 2025
278a70c
finish first rough draft
juliannguyen4 Oct 29, 2025
e189cc2
debug
juliannguyen4 Oct 29, 2025
cf90ce2
fix
juliannguyen4 Oct 29, 2025
449e93d
Init container (using tools image) exits with code 0, but docker comp…
juliannguyen4 Oct 29, 2025
df16496
dont restart init container since changes made by it are persistent u…
juliannguyen4 Oct 29, 2025
079aa4b
fix
juliannguyen4 Oct 29, 2025
f9704ae
fix syntax
juliannguyen4 Oct 29, 2025
fa79a97
Fix
juliannguyen4 Oct 29, 2025
5eb3b3d
fix smoke tests
juliannguyen4 Oct 29, 2025
0be755d
fix cicd
juliannguyen4 Oct 29, 2025
f3652ab
Also make user agent test not rely on asinfo bundled with server
juliannguyen4 Oct 29, 2025
c302f4b
debug
juliannguyen4 Oct 29, 2025
d5a5355
fix
juliannguyen4 Oct 29, 2025
d5a70b2
Security is enabled..
juliannguyen4 Oct 29, 2025
2e611bb
hack for now. port code needs to be rewritten
juliannguyen4 Oct 29, 2025
55fec70
fix ce test
juliannguyen4 Oct 29, 2025
e533d11
Fix
juliannguyen4 Oct 30, 2025
6fe6b7c
Keeping TLS_PORT name is fine. We can expose both tls and unencrypted…
juliannguyen4 Oct 30, 2025
51c3e27
comment..
juliannguyen4 Oct 30, 2025
399b97d
WIP script that runs outside of Docker container/compose
juliannguyen4 Oct 30, 2025
c017308
fix docker exec cmd
juliannguyen4 Oct 31, 2025
add9faf
Everything working except for mutual TLS. need additional volume for …
juliannguyen4 Oct 31, 2025
6edfe23
wip
juliannguyen4 Oct 31, 2025
31a6833
Add conf yaml file.
juliannguyen4 Oct 31, 2025
e5b222f
Now works. But needs cleanup
juliannguyen4 Oct 31, 2025
43b215a
Merge remote-tracking branch 'origin/dev' into CLIENT-3833-cicd-repla…
juliannguyen4 Nov 4, 2025
2d39e2d
Generate dummy server cert and key once
juliannguyen4 Nov 4, 2025
2c843d9
Remove unused...
juliannguyen4 Nov 5, 2025
dd23e45
Unused
juliannguyen4 Nov 5, 2025
4f749a5
Set to debug in case test regressions happen
juliannguyen4 Nov 5, 2025
0c50a6c
node-id no longer needs to be set in .conf file, since we arent using…
juliannguyen4 Nov 5, 2025
b8defae
Rm comments since these are already in the file
juliannguyen4 Nov 5, 2025
ede8640
Add TODO outside the scope of this pr
juliannguyen4 Nov 5, 2025
f3fad09
believe this is wrong
juliannguyen4 Nov 5, 2025
4921eac
fix
juliannguyen4 Nov 5, 2025
8b39117
Remove debug print
juliannguyen4 Nov 5, 2025
879c245
Fix
juliannguyen4 Nov 5, 2025
0569988
Reuse helper script to wait for server to be ready to receive info co…
juliannguyen4 Nov 5, 2025
f012b62
Waiting for CE and EE container needs to be done without asinfo embed…
juliannguyen4 Nov 5, 2025
afd3bbf
rename to something more helpful
juliannguyen4 Nov 5, 2025
0048968
Docker volume not needed here
juliannguyen4 Nov 5, 2025
6bf2ea5
Waiting for CE server should run outside of server
juliannguyen4 Nov 5, 2025
de2bfcf
Rename folder, since we no longer are building an image
juliannguyen4 Nov 5, 2025
05a9eb5
Clean up volume logic.
juliannguyen4 Nov 5, 2025
a5a0d4d
fix
juliannguyen4 Nov 5, 2025
f513d02
Not used anymore
juliannguyen4 Nov 5, 2025
3ea2d97
asinfo/asadm now being called from run-ee-server.bash script with cre…
juliannguyen4 Nov 5, 2025
1ec335e
Not used anymore
juliannguyen4 Nov 5, 2025
cb73644
clean up
juliannguyen4 Nov 5, 2025
faaa05f
Define defaults for server features
juliannguyen4 Nov 5, 2025
5b3c806
Use camel case for bash local variable and function names
juliannguyen4 Nov 5, 2025
dda85a3
Adapt run-ee-server workflow
juliannguyen4 Nov 5, 2025
dee28bb
Fix
juliannguyen4 Nov 5, 2025
e42bcd1
run with pwd to debug
juliannguyen4 Nov 5, 2025
f16c0cb
debug
juliannguyen4 Nov 6, 2025
11edc92
Revert "debug"
juliannguyen4 Nov 6, 2025
15a9431
Revert "run with pwd to debug"
juliannguyen4 Nov 6, 2025
47f36e6
Fix
juliannguyen4 Nov 6, 2025
7ccabb3
fix...
juliannguyen4 Nov 6, 2025
ba714b2
Just hardcode
juliannguyen4 Nov 6, 2025
4d51da8
Merge remote-tracking branch 'origin/dev' into CLIENT-3833-cicd-repla…
juliannguyen4 Nov 11, 2025
5fd9a2a
Add timeout so ci/cd doesn't hang
juliannguyen4 Nov 11, 2025
69a2b78
By default enable all server features to maintain backwards compatibi…
juliannguyen4 Nov 11, 2025
f1ea6e9
this comment is still valid.
juliannguyen4 Nov 12, 2025
28d642a
outdated
juliannguyen4 Nov 12, 2025
f7f52ed
Remove timeout dependency from script
juliannguyen4 Nov 12, 2025
72e81af
Add timeout in Github Actions for running run-ee-server.bash script, …
juliannguyen4 Nov 12, 2025
37e08ec
run-ee-server ee action: timeout dependency
juliannguyen4 Nov 12, 2025
d6e2cc5
Fix. leave note for later.
juliannguyen4 Nov 12, 2025
e8ac914
fix.
juliannguyen4 Nov 12, 2025
6784042
rm dup
juliannguyen4 Nov 12, 2025
92db339
Clear up
juliannguyen4 Nov 12, 2025
7ceec7e
Rm todo
juliannguyen4 Nov 12, 2025
f6da5e0
Ensure that the server container runs with a max fd limit that the se…
juliannguyen4 Nov 12, 2025
8a85e89
Fix
juliannguyen4 Nov 12, 2025
beeeb41
Update README
juliannguyen4 Nov 13, 2025
518865c
clear up.
juliannguyen4 Nov 13, 2025
17b1188
Just remove timeout because the wait-ee-server script depends on pull…
juliannguyen4 Nov 13, 2025
449d757
fix
juliannguyen4 Nov 13, 2025
edc702f
fix for windows
juliannguyen4 Nov 13, 2025
48c6621
Named volume finally works. But cleanup script probably needed TODO
juliannguyen4 Nov 13, 2025
617610d
Just hardcode the name
juliannguyen4 Nov 14, 2025
44e7836
fix
juliannguyen4 Nov 14, 2025
42a0ffb
fix...
juliannguyen4 Nov 14, 2025
2889982
Fix
juliannguyen4 Nov 14, 2025
013135a
Fix user permissions
juliannguyen4 Nov 14, 2025
1495cc9
Rm because we don't use pipes anywhere here
juliannguyen4 Nov 14, 2025
ba01388
Add teardown script
juliannguyen4 Nov 14, 2025
e48c08d
Doc
juliannguyen4 Nov 14, 2025
93ec454
Just rm since it makes harder to read
juliannguyen4 Nov 14, 2025
dc725f2
This should be in the README since it explains why we support a featu…
juliannguyen4 Nov 14, 2025
aee8c97
Rm unneeded variables
juliannguyen4 Nov 14, 2025
a03fbf6
mv
juliannguyen4 Nov 14, 2025
4fdb3b6
Clear up
juliannguyen4 Nov 14, 2025
84f07b3
break down
juliannguyen4 Nov 14, 2025
7138830
clear up
juliannguyen4 Nov 14, 2025
3941bf8
Fix because the server no longer saves logs to /var...
juliannguyen4 Nov 14, 2025
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
63 changes: 17 additions & 46 deletions .github/actions/run-ee-server/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,14 @@ inputs:
required: false
description: 'docker-host, separate-docker-container, "remote-connection" via DOCKER_HOST'
default: 'docker-host'
docker-run-extra-flags:
env-vars:
required: false
description: Used to disable server features
default: ''
default: 'STRONG_CONSISTENCY=1 SECURITY=1 MUTUAL_TLS=1'
outputs:
container-name:
description: 'Server container name'
value: ${{ steps.get-container-name.outputs.container-name }}

runs:
using: "composite"
Expand All @@ -49,58 +53,23 @@ runs:
- run: echo IMAGE_FULL_NAME=${{ inputs.registry-name }}/${{ inputs.image-name }}:${{ inputs.server-tag }} >> $GITHUB_ENV
shell: bash

- run: echo NEW_IMAGE_FULL_NAME=${{ env.IMAGE_FULL_NAME }}-python-client-testing >> $GITHUB_ENV
shell: bash

# QE images are not multi-platform and only support a single platform.
- name: Allow building images from different platforms other than the native one
uses: docker/setup-qemu-action@v3

# macOS Github runners and Windows self-hosted runners don't have buildx installed by default
- if: ${{ runner.os == 'Windows' || runner.os == 'macOS' }}
uses: docker/setup-buildx-action@v3

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

- run: echo TLS_PORT="4333" >> $GITHUB_ENV
shell: bash

- name: Build Aerospike server Docker image for testing
# We enable TLS standard authentication to verify that the OpenSSL library bundled with the wheel works
# You can manually verify this by enabling debug logging in the client and checking that the server certificate was verified
uses: docker/build-push-action@v6
with:
# Don't want to use default Git context or else it will clone the whole Python client repo again
context: .github/workflows/docker-build-context
build-args: |
SERVER_IMAGE=${{ env.IMAGE_FULL_NAME }}
TLS_PORT=${{ env.TLS_PORT }}
tags: ${{ env.NEW_IMAGE_FULL_NAME }}
# setup-buildx-action configures Docker to use the docker-container build driver
# This driver doesn't publish an image locally by default
# so we have to manually enable it
load: true

- run: echo SERVER_CONTAINER_NAME="aerospike" >> $GITHUB_ENV
shell: bash

# Confirmed via logs that input string will not be quoted in bash
- run: docker run -d ${{ inputs.docker-run-extra-flags }} --name ${{ env.SERVER_CONTAINER_NAME }} -p 3000:3000 -p ${{ env.TLS_PORT }}:${{ env.TLS_PORT }} ${{ env.NEW_IMAGE_FULL_NAME }}
shell: bash

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

- name: Wait for container to be healthy
run: |
timeout 30s bash -c 'until [[ "$(docker inspect -f {{.State.Health.Status}} ${{ env.SERVER_CONTAINER_NAME }})" == "healthy" ]]; do sleep 0.1; done'
- run: ${{ inputs.env-vars }} bash ./run-ee-server.bash
working-directory: .github/workflows/docker-setup
shell: bash

# For debugging
- run: docker logs ${{ env.SERVER_CONTAINER_NAME }}
- id: get-container-name
run: echo container-name=aerospike >> $GITHUB_OUTPUT
shell: bash

# Configure tests
Expand Down Expand Up @@ -129,9 +98,9 @@ runs:
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-build-context/${{ env.CA_CERT_FILE_NAME }}
crudini --set config.conf tls keyfile ../.github/workflows/docker-build-context/client.pem
crudini --set config.conf tls certfile ../.github/workflows/docker-build-context/client.cer
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

working-directory: test
shell: bash
Expand All @@ -152,7 +121,7 @@ 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.IPAddress }}' ${{ env.SERVER_CONTAINER_NAME }}) >> $GITHUB_ENV
run: echo SERVER_IP=$(docker container inspect -f '{{ .NetworkSettings.IPAddress }}' ${{ steps.get-container-name.outputs.container-name }}) >> $GITHUB_ENV
shell: bash

- name: Invalid input
Expand All @@ -161,7 +130,9 @@ runs:
shell: bash

- name: Get cluster name
run: echo CLUSTER_NAME=$(docker exec ${{ env.SERVER_CONTAINER_NAME }} asinfo -v "get-config:context=service" -l | grep -i cluster-name | cut -d = -f 2) >> $GITHUB_ENV
# Here we just assume that security is enabled. Whenever the dev tests are run with run-ee-server.yml, security is enabled anyways.
# TODO: but this needs to be fixed eventually for other clients that disable security for their tests.
run: echo 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) >> $GITHUB_ENV
shell: bash

- name: Set EE server's IP address
Expand Down
8 changes: 2 additions & 6 deletions .github/actions/wait-for-ce-server-to-start/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,11 @@ runs:
- run: echo WAIT_SCRIPT_FILE_NAME=wait-for-as-server-to-start.bash >> $GITHUB_ENV
shell: bash

- name: Copy wait script in server Docker container
run: docker cp $WAIT_SCRIPT_FILE_NAME ${{ inputs.container-name }}:/
working-directory: .github/workflows/docker-build-context
shell: bash

# There is no healthcheck by default in the server CE Docker image.
# We can just reuse our wait script. because the CE server should be ready after it finishes.
- name: Wait for EE server to start
# Composite actions doesn't support step-level timeout-minutes, so we use timeout command.
# Call bash shell explicitly since timeout uses "sh" shell by default, for some reason
run: docker exec ${{ inputs.container-name }} timeout 30s bash /$WAIT_SCRIPT_FILE_NAME
run: timeout 30s bash $WAIT_SCRIPT_FILE_NAME
shell: bash
working-directory: .github/workflows/docker-setup
2 changes: 0 additions & 2 deletions .github/workflows/build-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -335,8 +335,6 @@ jobs:
- run: |
# Checks that server started up properly
docker logs aerospike
# Prints the actual logs from asd
docker exec aerospike cat /var/log/aerospike/aerospike.log
if: ${{ always() && env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }}
shell: bash

Expand Down
114 changes: 0 additions & 114 deletions .github/workflows/docker-build-context/Dockerfile

This file was deleted.

50 changes: 0 additions & 50 deletions .github/workflows/docker-build-context/README.md

This file was deleted.

92 changes: 0 additions & 92 deletions .github/workflows/docker-build-context/aerospike-dev.conf.jinja

This file was deleted.

Loading
Loading