ci: add tests for the examples vec-473 vec-474 vec-475 #34
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run Prism Tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
tests: | |
name: Prism Tests | |
runs-on: ubuntu-latest | |
env: | |
WORKING_DIR: prism-image-search | |
strategy: | |
matrix: | |
deployment: [waitress, docker] | |
steps: | |
# Checkout the repository | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
# Set up Python environment | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
# Install Python dependencies | |
- name: Install Dependencies | |
working-directory: ${{ env.WORKING_DIR }} | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r prism/requirements.txt | |
pip install -r tests/requirements.txt | |
# Write feature keys to config files for use by AVS and Aerospike | |
- name: Write feature keys | |
working-directory: docker | |
env: | |
FEATURES_CONF : ${{secrets.FEATURES_CONF}} | |
run: | | |
echo "$FEATURES_CONF" > config/features.conf | |
# Run the AVS server with Docker Compose | |
- name: Start AVS Server | |
working-directory: docker | |
run: | | |
docker compose -f docker-compose.yaml up -d | |
# Wait for the AVS Docker Container to be Healthy | |
- name: Wait for Docker Container to Be Healthy | |
run: | | |
CONTAINER_NAME="aerospike-vector-search" | |
while [ "$(docker inspect -f '{{.State.Health.Status}}' $CONTAINER_NAME)" != "healthy" ]; do | |
echo "Waiting for container $CONTAINER_NAME to be healthy..." | |
sleep 1 | |
done | |
echo "Container $CONTAINER_NAME is healthy, continuing..." | |
# Run the app server with waitress | |
- name: Start Server with Waitress | |
working-directory: ${{ env.WORKING_DIR }}/prism | |
if: matrix.deployment == 'waitress' | |
env: | |
# By default, the docker compose in /docker maps the AVS_PORT from 5000 to 5555 on localhost | |
AVS_PORT: 5555 | |
run: | | |
nohup python -m waitress --host=127.0.0.1 --port=8080 --threads 32 prism:app & | |
sleep 30 # Wait for the server to be ready | |
# TODO come up with a better/faster way to wait for the server to be ready | |
# Build and run Docker container | |
- name: Build and Start app with Docker | |
working-directory: ${{ env.WORKING_DIR }} | |
if: matrix.deployment == 'docker' | |
run: | | |
docker build -t prism . -f Dockerfile-prism | |
docker run -d -p 8080:8080 --name prism \ | |
--network svc \ | |
-e AVS_PORT=5000 \ | |
-e AVS_HOST=aerospike-vector-search \ | |
prism | |
sleep 30 # Wait for the server to be ready | |
# TODO come up with a better/faster way to wait for the server to be ready | |
# Run Pytest tests | |
- name: Run Pytest | |
working-directory: ${{ env.WORKING_DIR }} | |
run: | | |
python -m pytest tests/e2e -s | |
# Cleanup Docker container (only for Docker deployment) | |
- name: Cleanup Docker | |
if: matrix.deployment == 'docker' | |
run: | | |
docker stop prism | |
docker rm prism | |
- name: Setup tmate session | |
if: ${{ failure() }} | |
uses: mxschmitt/action-tmate@v3 |