Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
e25e44e
move integrations under mellea_contribs
akihikokuroda Mar 18, 2026
250c646
move reqlib and tools src
akihikokuroda Mar 18, 2026
610a819
separate and move tests and docs
akihikokuroda Mar 18, 2026
73328e1
duplucate pyproject.toml and uv.lock to tools amd reqlib packages
akihikokuroda Mar 18, 2026
f748111
duplucate pyproject.toml and uv.lock to tools amd reqlib packages
akihikokuroda Mar 18, 2026
423bc9b
adjust imports and fix tests
akihikokuroda Mar 18, 2026
f61fe4b
update ci and fix some file path
akihikokuroda Mar 18, 2026
bb428c1
fix ci yaml error
akihikokuroda Mar 18, 2026
5734cd1
fix ci yaml error
akihikokuroda Mar 18, 2026
b0266d4
fix ci yaml error
akihikokuroda Mar 18, 2026
f52e68b
fix ci yaml error
akihikokuroda Mar 18, 2026
fc9f9fc
pin mellea (0.3.2) and fix CI of mellea-integration-core
akihikokuroda Mar 19, 2026
39edddf
fix venv issue
akihikokuroda Mar 19, 2026
6a14bb7
fix venv issue
akihikokuroda Mar 19, 2026
15c178c
fix venv issue
akihikokuroda Mar 19, 2026
3528977
fix venv issue
akihikokuroda Mar 19, 2026
73bddfe
add langchain ci
akihikokuroda Mar 19, 2026
c973014
add the rest of packages
akihikokuroda Mar 19, 2026
ff5d71c
add the rest of packages
akihikokuroda Mar 19, 2026
8d98f4e
debug
akihikokuroda Mar 19, 2026
313bd74
python version requirement change
akihikokuroda Mar 19, 2026
233837a
disable integration test in dspy
akihikokuroda Mar 19, 2026
eee34af
test reqlib ci
akihikokuroda Mar 19, 2026
6220636
test reqlib ci
akihikokuroda Mar 19, 2026
5a02668
test tools ci
akihikokuroda Mar 19, 2026
8e4b043
add empty READMEs
akihikokuroda Mar 19, 2026
fbfcaae
fixing tools reqlib
akihikokuroda Mar 19, 2026
d785039
fixing tools reqlib
akihikokuroda Mar 19, 2026
9b4736d
fixing tools reqlib
akihikokuroda Mar 19, 2026
564bd6e
Restructure CI to run tests only for changed subpackages
akihikokuroda Mar 19, 2026
5db88a5
avoid conflict
akihikokuroda Mar 19, 2026
d71bfd3
separate ci
akihikokuroda Mar 19, 2026
88896ab
add ci checking ci coverage
akihikokuroda Mar 20, 2026
e48cbe8
review comments
akihikokuroda Mar 23, 2026
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
22 changes: 22 additions & 0 deletions .github/workflows/ci-crewai-backend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: CI - CrewAI Backend

on:
pull_request:
paths:
- 'mellea_contribs/crewai_backend/**'
- 'mellea_contribs/mellea-integration-core/**'
- '.github/workflows/ci-crewai-backend.yml'
- '.github/workflows/quality-crewai-backend.yml'
push:
branches:
- main
paths:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since all the backends depend on mellea-integration-core, there is the chance that if we change something in the core that it would break the backends... should we also trigger a run of the backends if the core changes?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's right. I'll add mellea-integration-core change in all integration paths.

- 'mellea_contribs/crewai_backend/**'
- 'mellea_contribs/mellea-integration-core/**'
- '.github/workflows/ci-crewai-backend.yml'
- '.github/workflows/quality-crewai-backend.yml'

jobs:
test:
uses: ./.github/workflows/quality-crewai-backend.yml

22 changes: 22 additions & 0 deletions .github/workflows/ci-dspy-backend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: CI - DSPy Backend

on:
pull_request:
paths:
- 'mellea_contribs/dspy_backend/**'
- 'mellea_contribs/mellea-integration-core/**'
- '.github/workflows/ci-dspy-backend.yml'
- '.github/workflows/quality-dspy-backend.yml'
push:
branches:
- main
paths:
- 'mellea_contribs/dspy_backend/**'
- 'mellea_contribs/mellea-integration-core/**'
- '.github/workflows/ci-dspy-backend.yml'
- '.github/workflows/quality-dspy-backend.yml'

jobs:
test:
uses: ./.github/workflows/quality-dspy-backend.yml

22 changes: 22 additions & 0 deletions .github/workflows/ci-langchain-backend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: CI - LangChain Backend

on:
pull_request:
paths:
- 'mellea_contribs/langchain_backend/**'
- 'mellea_contribs/mellea-integration-core/**'
- '.github/workflows/ci-langchain-backend.yml'
- '.github/workflows/quality-langchain-backend.yml'
push:
branches:
- main
paths:
- 'mellea_contribs/langchain_backend/**'
- 'mellea_contribs/mellea-integration-core/**'
- '.github/workflows/ci-langchain-backend.yml'
- '.github/workflows/quality-langchain-backend.yml'

jobs:
test:
uses: ./.github/workflows/quality-langchain-backend.yml

20 changes: 20 additions & 0 deletions .github/workflows/ci-mellea-integration-core.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: CI - Mellea Integration Core

on:
pull_request:
paths:
- 'mellea_contribs/mellea-integration-core/**'
- '.github/workflows/ci-mellea-integration-core.yml'
- '.github/workflows/quality-mellea-integration-core.yml'
push:
branches:
- main
paths:
- 'mellea_contribs/mellea-integration-core/**'
- '.github/workflows/ci-mellea-integration-core.yml'
- '.github/workflows/quality-mellea-integration-core.yml'

jobs:
test:
uses: ./.github/workflows/quality-mellea-integration-core.yml

19 changes: 19 additions & 0 deletions .github/workflows/ci-reqlib-package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: CI - Reqlib Package

on:
pull_request:
paths:
- 'mellea_contribs/reqlib_package/**'
- '.github/workflows/ci-reqlib-package.yml'
- '.github/workflows/quality-reqlib-package.yml'
push:
branches:
- main
paths:
- 'mellea_contribs/reqlib_package/**'
- '.github/workflows/ci-reqlib-package.yml'
- '.github/workflows/quality-reqlib-package.yml'

jobs:
test:
uses: ./.github/workflows/quality-reqlib-package.yml
169 changes: 169 additions & 0 deletions .github/workflows/ci-subpackage-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
name: CI - Subpackage Validation

on:
pull_request:
paths:
- 'mellea_contribs/**'
- '.github/workflows/ci-*.yml'
- '.github/workflows/quality-*.yml'
- '.github/workflows/ci-subpackage-validation.yml'
push:
branches:
- main
paths:
- 'mellea_contribs/**'
- '.github/workflows/ci-*.yml'
- '.github/workflows/quality-*.yml'
- '.github/workflows/ci-subpackage-validation.yml'

jobs:
validate-subpackage-ci:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4

- name: Validate subpackage CI configurations
run: |
set -e

echo "=== Validating CI configurations for mellea_contribs subpackages ==="
echo ""

# Track validation status
all_valid=true
missing_ci=()
missing_quality=()
invalid_paths=()
missing_test_jobs=()

# Find all subpackages (directories with pyproject.toml)
subpackages=()
for dir in mellea_contribs/*/; do
if [ -f "${dir}pyproject.toml" ]; then
subpackage=$(basename "$dir")
subpackages+=("$subpackage")
fi
done

echo "Found ${#subpackages[@]} subpackages:"
printf ' - %s\n' "${subpackages[@]}"
echo ""

# Validate each subpackage
for subpackage in "${subpackages[@]}"; do
echo "Checking: $subpackage"

# Convert subpackage name to CI filename format
# e.g., langchain_backend -> ci-langchain-backend.yml
ci_name=$(echo "$subpackage" | sed 's/_/-/g')
ci_file=".github/workflows/ci-${ci_name}.yml"
quality_file=".github/workflows/quality-${ci_name}.yml"

# Check if CI file exists
if [ ! -f "$ci_file" ]; then
echo " ❌ Missing CI file: $ci_file"
missing_ci+=("$subpackage")
all_valid=false
continue
fi
echo " ✓ CI file exists: $ci_file"

# Check if quality workflow file exists
if [ ! -f "$quality_file" ]; then
echo " ❌ Missing quality workflow: $quality_file"
missing_quality+=("$subpackage")
all_valid=false
continue
fi
echo " ✓ Quality workflow exists: $quality_file"

# Validate CI file has correct path triggers
expected_path="mellea_contribs/${subpackage}/"
if ! grep -q "paths:" "$ci_file"; then
echo " ❌ CI file missing 'paths:' section"
invalid_paths+=("$subpackage")
all_valid=false
elif ! grep -q "'${expected_path}\*\*'" "$ci_file" && ! grep -q "\"${expected_path}\*\*\"" "$ci_file"; then
echo " ❌ CI file missing path trigger for: ${expected_path}**"
invalid_paths+=("$subpackage")
all_valid=false
else
echo " ✓ CI file has correct path triggers"
fi

# Validate CI file references quality workflow
if ! grep -q "uses: ./.github/workflows/quality-${ci_name}.yml" "$ci_file"; then
echo " ⚠️ Warning: CI file may not reference quality workflow correctly"
else
echo " ✓ CI file references quality workflow"
fi

# Validate quality workflow has test jobs
if ! grep -q "jobs:" "$quality_file"; then
echo " ❌ Quality workflow missing 'jobs:' section"
missing_test_jobs+=("$subpackage")
all_valid=false
elif ! grep -q "pytest" "$quality_file" && ! grep -q "test" "$quality_file"; then
echo " ⚠️ Warning: Quality workflow may not run tests (no 'pytest' or 'test' found)"
else
echo " ✓ Quality workflow has test jobs"
fi

echo ""
done

# Summary report
echo "=== Validation Summary ==="
echo ""

if [ "$all_valid" = true ]; then
echo "✅ All subpackages have valid CI configurations!"
exit 0
else
echo "❌ Validation failed for one or more subpackages"
echo ""

if [ ${#missing_ci[@]} -gt 0 ]; then
echo "Subpackages missing CI files:"
printf ' - %s\n' "${missing_ci[@]}"
echo ""
fi

if [ ${#missing_quality[@]} -gt 0 ]; then
echo "Subpackages missing quality workflows:"
printf ' - %s\n' "${missing_quality[@]}"
echo ""
fi

if [ ${#invalid_paths[@]} -gt 0 ]; then
echo "Subpackages with invalid path triggers:"
printf ' - %s\n' "${invalid_paths[@]}"
echo ""
fi

if [ ${#missing_test_jobs[@]} -gt 0 ]; then
echo "Subpackages with missing test jobs:"
printf ' - %s\n' "${missing_test_jobs[@]}"
echo ""
fi

echo "Please ensure each subpackage has:"
echo " 1. A CI workflow file: .github/workflows/ci-<subpackage-name>.yml"
echo " 2. A quality workflow file: .github/workflows/quality-<subpackage-name>.yml"
echo " 3. Correct path triggers in the CI file"
echo " 4. Test jobs in the quality workflow"
echo ""
echo "Example CI file structure:"
echo " on:"
echo " pull_request:"
echo " paths:"
echo " - 'mellea_contribs/<subpackage>/**'"
echo " - '.github/workflows/ci-<subpackage>.yml'"
echo " - '.github/workflows/quality-<subpackage>.yml'"
echo " jobs:"
echo " test:"
echo " uses: ./.github/workflows/quality-<subpackage>.yml"

exit 1
fi
19 changes: 19 additions & 0 deletions .github/workflows/ci-tools-package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: CI - Tools Package

on:
pull_request:
paths:
- 'mellea_contribs/tools_package/**'
- '.github/workflows/ci-tools-package.yml'
- '.github/workflows/quality-tools-package.yml'
push:
branches:
- main
paths:
- 'mellea_contribs/tools_package/**'
- '.github/workflows/ci-tools-package.yml'
- '.github/workflows/quality-tools-package.yml'

jobs:
test:
uses: ./.github/workflows/quality-tools-package.yml
65 changes: 61 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,66 @@
name: "Run CI"

on:
pull_request:
types: [opened, reopened, synchronize]
workflow_dispatch:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this would need to be run manually right? would this be more for auditing or do you see another purpose?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this must be run manually. I just left it for convenience. It can be deleted.


jobs:
code-checks:
uses: ./.github/workflows/quality.yml
detect-changes:
runs-on: ubuntu-latest
outputs:
mellea-integration-core: ${{ steps.changes.outputs.mellea-integration-core }}
crewai-backend: ${{ steps.changes.outputs.crewai-backend }}
dspy-backend: ${{ steps.changes.outputs.dspy-backend }}
langchain-backend: ${{ steps.changes.outputs.langchain-backend }}
reqlib-package: ${{ steps.changes.outputs.reqlib-package }}
tools-package: ${{ steps.changes.outputs.tools-package }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Detect changed files
id: changes
run: |
# Get the base and head commits
BASE=${{ github.event.pull_request.base.sha }}
HEAD=${{ github.event.pull_request.head.sha }}

# Get list of changed files
CHANGED_FILES=$(git diff --name-only $BASE...$HEAD)

# Check each package
echo "mellea-integration-core=$(echo "$CHANGED_FILES" | grep -q 'mellea_contribs/mellea-integration-core/\|\.github/workflows/quality-mellea-integration-core\.yml' && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT
echo "crewai-backend=$(echo "$CHANGED_FILES" | grep -q 'mellea_contribs/crewai_backend/\|\.github/workflows/quality-crewai-backend\.yml' && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT
echo "dspy-backend=$(echo "$CHANGED_FILES" | grep -q 'mellea_contribs/dspy_backend/\|\.github/workflows/quality-dspy-backend\.yml' && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT
echo "langchain-backend=$(echo "$CHANGED_FILES" | grep -q 'mellea_contribs/langchain_backend/\|\.github/workflows/quality-langchain-backend\.yml' && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT
echo "reqlib-package=$(echo "$CHANGED_FILES" | grep -q 'mellea_contribs/reqlib_package/\|\.github/workflows/quality-reqlib-package\.yml' && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT
echo "tools-package=$(echo "$CHANGED_FILES" | grep -q 'mellea_contribs/tools_package/\|\.github/workflows/quality-tools-package\.yml' && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT

mellea-integration-core:
needs: detect-changes
uses: ./.github/workflows/quality-mellea-integration-core.yml
if: needs.detect-changes.outputs.mellea-integration-core == 'true'

crewai-backend:
needs: [detect-changes, mellea-integration-core]
uses: ./.github/workflows/quality-crewai-backend.yml
if: needs.detect-changes.outputs.crewai-backend == 'true'

dspy-backend:
needs: [detect-changes, mellea-integration-core]
uses: ./.github/workflows/quality-dspy-backend.yml
if: needs.detect-changes.outputs.dspy-backend == 'true'

langchain-backend:
needs: [detect-changes, mellea-integration-core]
uses: ./.github/workflows/quality-langchain-backend.yml
if: needs.detect-changes.outputs.langchain-backend == 'true'

reqlib-package:
needs: detect-changes
uses: ./.github/workflows/quality-reqlib-package.yml
if: needs.detect-changes.outputs.reqlib-package == 'true'

tools-package:
needs: detect-changes
uses: ./.github/workflows/quality-tools-package.yml
if: needs.detect-changes.outputs.tools-package == 'true'
Loading
Loading