Skip to content

CI - E2E tests

CI - E2E tests #3548

Workflow file for this run

name: CI - E2E tests
on:
workflow_dispatch: {}
schedule:
# keep different crons to reduce the n. of databases at the same time on astra
- cron: "0 0 * * *"
- cron: "0 1 * * *"
- cron: "0 2 * * *"
- cron: "0 3 * * *"
pull_request:
branches:
- main
concurrency:
group: ragstack-e2e-tests-${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}-${{ github.event.schedule }}
cancel-in-progress: true
jobs:
preconditions:
name: Preconditions
runs-on: ubuntu-latest
outputs:
notebooks: ${{ steps.filter.outputs.notebooks }}
e2e_tests: ${{ steps.filter.outputs.e2e_tests }}
astradb-dev-region: "us-west-2"
astradb-dev-cloud: "aws"
astradb-prod-region: "us-east-2"
astradb-prod-cloud: "aws"
is-scheduled: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
# yamllint disable-line rule:line-length
is-ragstack-dev-cron: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'schedule' && github.event.schedule == '0 0 * * *') }}
# yamllint disable-line rule:line-length
is-ragstack-latest-release-cron: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'schedule' && github.event.schedule == '0 1 * * *') }}
# yamllint disable-line rule:line-length
is-langchain-dev-cron: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'schedule' && github.event.schedule == '0 2 * * *') }}
# yamllint disable-line rule:line-length
is-llamaindex-dev-cron: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'schedule' && github.event.schedule == '0 3 * * *') }}
steps:
- uses: actions/checkout@v4
- name: Setup Python 3.11
uses: ./.github/actions/setup-python
- name: Run lint
uses: ./.github/actions/lint
- uses: dorny/paths-filter@v3
id: filter
with:
filters: ./.github/changes-filter.yaml
ragstack-dev-dse-tests:
name: "RAGStack dev / DSE"
needs: ["preconditions"]
if: ${{ needs.preconditions.outputs.is-ragstack-dev-cron == 'true' || needs.preconditions.outputs.e2e_tests == 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "RAGStack dev / DSE"
suite-name: "ragstack"
astradb: false
vector-database-type: "local-cassandra"
deploy-to-slack: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
deploy-to-testspace: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
testspace-space: "RAGStack test suite - RAGStack dev - DSE"
ragstack-dev-astradev-tests:
name: "RAGStack dev / AstraDB dev"
needs: ["preconditions"]
if: ${{ needs.preconditions.outputs.is-ragstack-dev-cron == 'true' || needs.preconditions.outputs.e2e_tests == 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "RAGStack dev / AstraDB dev"
suite-name: "ragstack"
astradb: true
astradb-token-secret-name: "E2E_TESTS_ASTRA_DEV_DB_TOKEN"
astradb-env: "DEV"
astradb-region: "${{ needs.preconditions.outputs.astradb-dev-region }}"
astradb-cloud: "${{ needs.preconditions.outputs.astradb-dev-cloud }}"
vector-database-type: "astradb"
deploy-to-slack: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
deploy-to-testspace: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
testspace-space: "RAGStack test suite - RAGStack dev - AstraDB"
langchain-dse-tests:
name: "LangChain dev / DSE"
needs: ["preconditions"]
if: ${{ false }}
# disabled langchain & llamaindex dev tests 19-Jul-24
# if: ${{ needs.preconditions.outputs.is-langchain-dev-cron == 'true' || needs.preconditions.outputs.e2e_tests == 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "LangChain dev / DSE"
suite-name: "langchain"
astradb: false
vector-database-type: "local-cassandra"
deploy-to-slack: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
deploy-to-testspace: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
testspace-space: "RAGStack test suite - LangChain dev - DSE"
langchain-astradev-tests:
name: "LangChain dev / AstraDB dev"
needs: ["preconditions"]
if: ${{ false }}
# disabled langchain & llamaindex dev tests 19-Jul-24
# if: ${{ needs.preconditions.outputs.is-langchain-dev-cron == 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "LangChain dev / AstraDB dev"
suite-name: "langchain"
astradb: true
astradb-token-secret-name: "E2E_TESTS_ASTRA_DEV_DB_TOKEN"
astradb-env: "DEV"
astradb-region: "${{ needs.preconditions.outputs.astradb-dev-region }}"
astradb-cloud: "${{ needs.preconditions.outputs.astradb-dev-cloud }}"
vector-database-type: "astradb"
deploy-to-slack: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
deploy-to-testspace: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
testspace-space: "RAGStack test suite - LangChain dev - AstraDB"
llamaindex-dse-tests:
name: "LLamaIndex dev / DSE"
needs: ["preconditions"]
if: ${{ false }}
# disabled langchain & llamaindex dev tests 19-Jul-24
# if: ${{ needs.preconditions.outputs.is-llamaindex-dev-cron == 'true' || needs.preconditions.outputs.e2e_tests == 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "LLamaIndex dev / DSE"
suite-name: "llamaindex"
astradb: false
vector-database-type: "local-cassandra"
deploy-to-slack: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
deploy-to-testspace: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
testspace-space: "RAGStack test suite - LLamaIndex dev - DSE"
llamaindex-astradev-tests:
name: "LLamaIndex dev / AstraDB dev"
needs: ["preconditions"]
if: ${{ false }}
# disabled langchain & llamaindex dev tests 19-Jul-24
# if: ${{ needs.preconditions.outputs.is-llamaindex-dev-cron == 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "LLamaIndex dev / AstraDB dev"
suite-name: "llamaindex"
astradb: true
astradb-token-secret-name: "E2E_TESTS_ASTRA_DEV_DB_TOKEN"
astradb-env: "DEV"
astradb-region: "${{ needs.preconditions.outputs.astradb-dev-region }}"
astradb-cloud: "${{ needs.preconditions.outputs.astradb-dev-cloud }}"
vector-database-type: "astradb"
deploy-to-slack: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
deploy-to-testspace: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
testspace-space: "RAGStack test suite - LLamaIndex dev - AstraDB"
ragstack-latest-release-dse-tests:
name: "RAGStack latest / DSE"
needs: ["preconditions"]
if: ${{ needs.preconditions.outputs.is-ragstack-latest-release-cron == 'true' || needs.preconditions.outputs.e2e_tests == 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "RAGStack latest / DSE"
suite-name: "ragstack-latest-release"
astradb: false
vector-database-type: "local-cassandra"
deploy-to-slack: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
deploy-to-testspace: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
testspace-space: "RAGStack test suite - RAGStack latest - DSE"
ragstack-latest-release-astradev-tests:
name: "RAGStack latest / AstraDB dev"
needs: ["preconditions"]
if: ${{ needs.preconditions.outputs.is-ragstack-latest-release-cron == 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "RAGStack latest / AstraDB dev"
suite-name: "ragstack-latest-release"
astradb: true
astradb-token-secret-name: "E2E_TESTS_ASTRA_DEV_DB_TOKEN"
astradb-env: "DEV"
astradb-region: "${{ needs.preconditions.outputs.astradb-dev-region }}"
astradb-cloud: "${{ needs.preconditions.outputs.astradb-dev-cloud }}"
vector-database-type: "astradb"
deploy-to-slack: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
deploy-to-testspace: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
testspace-space: "RAGStack test suite - RAGStack latest - AstraDB"
notebook-tests:
# we run notebook tests only on PROD env since we CassIO need different parameters for DEV, and we don't want to dirty the notebook
name: "Notebooks"
needs: ["preconditions"]
if: ${{ needs.preconditions.outputs.notebooks == 'true' && needs.preconditions.outputs.is-scheduled != 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "Notebooks"
astradb: true
run-tests: false
run-notebooks: true
astradb-token-secret-name: "E2E_TESTS_ASTRA_PROD_DB_TOKEN"
astradb-env: "PROD"
astradb-region: "${{ needs.preconditions.outputs.astradb-prod-region }}"
astradb-cloud: "${{ needs.preconditions.outputs.astradb-prod-cloud }}"
deploy-to-slack: false
deploy-to-testspace: false