Skip to content

CI

CI #1093

Workflow file for this run

name: CI
on:
workflow_dispatch: {}
schedule:
- cron: "0 3 * * *"
pull_request:
paths-ignore:
- "README.md"
branches:
- main
concurrency:
group: ragstack-ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
preconditions:
name: Preconditions
runs-on: ubuntu-latest
outputs:
e2e_tests: ${{ steps.filter.outputs.e2e_tests }}
astradb-dev-region: "us-west-2"
astradb-dev-cloud: "aws"
is-scheduled: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
steps:
- uses: actions/checkout@v4
- name: "Setup: Node"
uses: ./.github/actions/setup-node
- name: Install
run: yarn
- name: Build
run: |
yarn workspace @datastax/ragstack-ai build
yarn workspace @datastax/ragstack-ai-cli build
yarn workspace @datastax/ragstack-ai set-lib-version
yarn workspace @datastax/ragstack-ai-cli set-lib-version
yarn check-resolutions
- name: Check working directory
run: |
if [ ! -z "$(git status --porcelain)" ]; then
git status
git diff
echo "The working directory is dirty. Please ensure the 'install' command won't change any source file."
exit 1
fi
- name: Lint
run: yarn lint
- name: Run unit tests
run: yarn workspace @datastax/ragstack-ai test:unit
- name: Run unit tests (CLI)
run: |
yarn workspace @datastax/ragstack-ai-cli test
cd packages/ragstack-ai-cli
npm link
ragstack-ai --version
- uses: dorny/paths-filter@v2
id: filter
with:
filters: ./.github/changes-filter.yaml
ragstack-dev-dse-tests:
name: "RAGStack dev / DSE"
needs: ["preconditions"]
if: ${{ needs.preconditions.outputs.is-scheduled == '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-scheduled == '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-latest-dse-tests:
name: "LangChain latest / DSE"
needs: [ "preconditions" ]
if: ${{ needs.preconditions.outputs.is-scheduled == 'true' || needs.preconditions.outputs.e2e_tests == 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "LangChain latest / 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 latest - DSE"
langchain-latest-astradev-tests:
name: "LangChain latest / AstraDB dev"
needs: [ "preconditions" ]
if: ${{ needs.preconditions.outputs.is-scheduled == 'true' }}
uses: ./.github/workflows/_run_e2e_tests.yml
secrets: inherit
with:
title: "LangChain latest / 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 latest - AstraDB"