blob: f07d0506d1eaae7c7dee02eab877dca4955d8d85 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
components:
# Workspace-level changes that affect all Rust components
rust-workspace:
paths:
- "Cargo.toml"
- "Cargo.lock"
- "rust-toolchain.toml"
- ".cargo/**"
# CI/CD infrastructure changes that require full regression
ci-infrastructure:
paths:
- ".github/**"
# Core library components that others depend on
rust-sdk:
depends_on:
- "rust-workspace" # SDK is affected by workspace changes
- "ci-infrastructure" # CI changes trigger full regression
paths:
- "core/sdk/**"
rust-common:
depends_on:
- "rust-workspace" # Common is affected by workspace changes
- "ci-infrastructure" # CI changes trigger full regression
paths:
- "core/common/**"
rust-binary-protocol:
depends_on:
- "rust-workspace" # Protocol is affected by workspace changes
- "ci-infrastructure" # CI changes trigger full regression
paths:
- "core/binary_protocol/**"
rust-server:
depends_on:
- "rust-workspace" # Server is affected by workspace changes
- "ci-infrastructure" # CI changes trigger full regression
- "rust-common"
- "rust-binary-protocol"
paths:
- "core/server/**"
# Main Rust workspace testing
rust:
depends_on:
- "rust-workspace"
- "rust-sdk"
- "rust-common"
- "rust-binary-protocol"
- "rust-server"
- "rust-tools"
- "ci-infrastructure" # CI changes trigger full regression
paths:
- "Dockerfile*"
- "!foreign/**" # Exclude foreign SDKs
- "!web/**" # Exclude web UI
tasks:
- "check"
- "fmt"
- "clippy"
- "sort"
- "doctest"
- "machete"
- "test"
- "compat"
# CLI component
rust-cli:
depends_on:
- "rust-sdk"
- "rust-binary-protocol"
paths:
- "core/cli/**"
# Benchmark component
rust-bench:
depends_on:
- "rust-sdk"
paths:
- "core/bench/**"
# Connectors runtime
rust-connectors:
depends_on:
- "rust-sdk"
paths:
- "core/connectors/**"
# MCP AI component
rust-mcp:
depends_on:
- "rust-sdk"
paths:
- "core/ai/mcp/**"
# Integration tests
rust-integration:
depends_on:
- "rust-sdk"
- "rust-common"
- "rust-binary-protocol"
- "rust-server"
paths:
- "core/integration/**"
sdk-python:
depends_on:
- "rust-sdk" # Python SDK wraps the Rust SDK
- "rust-server" # For integration tests
- "ci-infrastructure" # CI changes trigger full regression
paths:
- "foreign/python/**"
tasks: ["lint", "test", "build"]
sdk-node:
depends_on:
- "rust-sdk" # Node SDK depends on core SDK
- "rust-server" # For integration tests
- "ci-infrastructure" # CI changes trigger full regression
paths:
- "foreign/node/**"
tasks: ["lint", "test", "build", "e2e"]
sdk-go:
depends_on:
- "rust-sdk" # Go SDK depends on core SDK
- "rust-server" # For integration tests
- "ci-infrastructure" # CI changes trigger full regression
paths:
- "foreign/go/**"
- "bdd/go/**"
- "examples/go/**"
tasks: ["lint", "test", "build", "e2e"]
sdk-java:
depends_on:
- "rust-sdk" # Java SDK depends on core SDK
- "rust-server" # For integration tests
- "ci-infrastructure" # CI changes trigger full regression
paths:
- "foreign/java/**"
tasks: ["lint", "test", "build"]
sdk-csharp:
depends_on:
- "rust-sdk" # C# SDK depends on core SDK
- "rust-server" # For integration tests
- "ci-infrastructure" # CI changes trigger full regression
paths:
- "foreign/csharp/**"
tasks: ["lint", "test", "build", "e2e"]
# Individual BDD tests per SDK - only run when specific SDK changes
bdd-rust:
depends_on:
- "rust-sdk"
- "rust-server"
- "ci-infrastructure"
paths:
- "bdd/rust/**"
- "bdd/scenarios/**"
tasks: ["bdd-rust"]
bdd-python:
depends_on:
- "rust-server"
- "rust-sdk" # All SDKs depend on core SDK changes
- "sdk-python"
- "ci-infrastructure"
paths:
- "bdd/python/**"
- "bdd/scenarios/**"
tasks: ["bdd-python"]
bdd-go:
depends_on:
- "rust-server"
- "rust-sdk" # All SDKs depend on core SDK changes
- "sdk-go"
- "ci-infrastructure"
paths:
- "bdd/go/**"
- "bdd/scenarios/**"
tasks: ["bdd-go"]
bdd-node:
depends_on:
- "rust-server"
- "rust-sdk" # All SDKs depend on core SDK changes
- "sdk-node"
- "ci-infrastructure"
paths:
- "bdd/node/**"
- "bdd/scenarios/**"
tasks: ["bdd-node"]
bdd-csharp:
depends_on:
- "rust-server"
- "rust-sdk" # All SDKs depend on core SDK changes
- "sdk-csharp"
- "ci-infrastructure"
paths:
- "bdd/csharp/**"
- "bdd/scenarios/**"
tasks: ["bdd-csharp"]
examples-suite:
depends_on:
- "rust-sdk"
- "rust-server"
- "sdk-go"
- "ci-infrastructure" # CI changes trigger full regression
paths:
- "examples/**"
- "scripts/run-rust-examples-from-readme.sh"
- "scripts/run-go-examples-from-readme.sh"
tasks: ["examples-rust", "examples-go"]
web-ui:
paths:
- "web/**"
tasks: ["lint", "build"]
rust-bench-dashboard:
paths:
- "core/bench/dashboard/**"
- "scripts/dashboard/**"
tasks: ["build"]
# Core tools component
rust-tools:
depends_on:
- "rust-workspace"
paths:
- "core/tools/**"
# CI/CD workflow monitoring (informational, no tasks)
ci-workflows:
paths:
- ".github/workflows/**/*.yml"
- ".github/actions/**/*.yml"
- ".github/ci/**/*.yml"
tasks: ["validate"] # Could run workflow validation