From b7e3d933662111f981bd1659099a6fbecd248307 Mon Sep 17 00:00:00 2001 From: Wenchao An Date: Tue, 13 Oct 2026 14:57:57 +0800 Subject: [PATCH] ci(extensions): check all bundled example packages (#6788) --- .github/workflows/extension-package-check.yml | 55 +++++++++++++++++++ scripts/AGENTS.md | 1 + 2 files changed, 56 insertions(+) create mode 100644 .github/workflows/extension-package-check.yml diff --git a/.github/workflows/extension-package-check.yml b/.github/workflows/extension-package-check.yml new file mode 100644 index 0000000000..ae81d145df --- /dev/null +++ b/.github/workflows/extension-package-check.yml @@ -0,0 +1,55 @@ +name: Extension Package Check + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + paths: + - 'examples/deerflow-extension-*/**' + - 'scripts/check_extension.py' + - 'backend/packages/extension-api/**' + - 'backend/packages/harness/deerflow/extensions/**' + - 'backend/pyproject.toml' + - 'backend/uv.lock' + - '.github/workflows/extension-package-check.yml' + push: + branches: [main, "*-dev"] + paths: + - 'examples/deerflow-extension-*/**' + - 'scripts/check_extension.py' + - 'backend/packages/extension-api/**' + - 'backend/packages/harness/deerflow/extensions/**' + - 'backend/pyproject.toml' + - 'backend/uv.lock' + - '.github/workflows/extension-package-check.yml' + +permissions: + contents: read + +concurrency: + group: extension-package-check-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + check-packages: + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-python@v6 + with: + python-version: '3.12' + - uses: astral-sh/setup-uv@v7 + with: + version: '0.11.1' + - name: Install host dependencies + working-directory: backend + run: uv sync --locked + - name: Build and check all bundled extension packages + shell: bash + run: | + for package in examples/deerflow-extension-*/; do + echo "::group::Check ${package%/}" + uv run --project backend --no-sync python scripts/check_extension.py "$package" + echo "::endgroup::" + done diff --git a/scripts/AGENTS.md b/scripts/AGENTS.md index 18846df63f..0540181019 100644 --- a/scripts/AGENTS.md +++ b/scripts/AGENTS.md @@ -26,6 +26,7 @@ path variables and compare storage defaults with the launcher's actual shell blo ## Dependency Check Diagnostics `check_extension.py` checks wheels with Gateway's asset validator. +CI builds and checks all bundled examples in `extension-package-check.yml`. Tests: `backend/tests/test_extension_check_script.py`. `check.py` decodes captured output as UTF-8 with replacement and runs pnpm with