feat: add tool annotations, new hook types, and comprehensive test suite #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: ["main", "master"] | |
| pull_request: | |
| branches: ["main", "master"] | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| name: Lint (Non-blocking) | |
| runs-on: ubuntu-latest | |
| continue-on-error: true # 不阻塞工作流 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| cache-dependency-path: | | |
| pyproject.toml | |
| setup.py | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e ".[dev]" | |
| - name: Ruff | |
| id: ruff | |
| run: | | |
| echo "Running ruff check..." | |
| if ruff check . --output-format=github; then | |
| echo "ruff_status=passed" >> $GITHUB_OUTPUT | |
| echo "Ruff check passed" | |
| else | |
| echo "ruff_status=failed" >> $GITHUB_OUTPUT | |
| echo "::warning::Ruff found code style issues (non-blocking)" | |
| fi | |
| - name: Mypy | |
| id: mypy | |
| run: | | |
| echo "Running mypy..." | |
| if python -m mypy ripperdoc_agent_sdk --show-error-codes; then | |
| echo "mypy_status=passed" >> $GITHUB_OUTPUT | |
| echo "Mypy check passed" | |
| else | |
| echo "mypy_status=failed" >> $GITHUB_OUTPUT | |
| echo "::warning::Mypy found type issues (non-blocking)" | |
| fi | |
| - name: Lint Summary | |
| if: always() | |
| run: | | |
| echo "=== Lint Check Summary ===" | |
| echo "Ruff: ${{ steps.ruff.outputs.ruff_status || 'unknown' }}" | |
| echo "Mypy: ${{ steps.mypy.outputs.mypy_status || 'unknown' }}" | |
| echo "=========================" | |
| echo "Note: Lint checks are non-blocking. Focus on test results." | |
| tests: | |
| name: Tests - Primary Check (Python ${{ matrix.python-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12"] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| cache-dependency-path: | | |
| pyproject.toml | |
| setup.py | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e ".[dev]" | |
| - name: Pytest | |
| id: pytest | |
| run: | | |
| echo "Running tests..." | |
| if pytest; then | |
| echo "pytest_status=passed" >> $GITHUB_OUTPUT | |
| echo "Tests passed" | |
| else | |
| echo "pytest_status=failed" >> $GITHUB_OUTPUT | |
| echo "::error::Tests failed" | |
| exit 1 | |
| fi | |
| - name: Test Summary | |
| if: always() | |
| run: | | |
| echo "=== Test Results Summary ===" | |
| echo "Python ${{ matrix.python-version }}: ${{ steps.pytest.outputs.pytest_status || 'unknown' }}" | |
| echo "============================" | |
| summary: | |
| name: Workflow Summary | |
| runs-on: ubuntu-latest | |
| needs: [lint, tests] | |
| if: always() | |
| steps: | |
| - name: Display Summary | |
| run: | | |
| echo "=== CI Workflow Summary ===" | |
| echo "" | |
| echo "Lint Checks (Non-blocking):" | |
| echo " - Ruff: ${{ needs.lint.result || 'skipped' }}" | |
| echo " - Mypy: ${{ needs.lint.result || 'skipped' }}" | |
| echo "" | |
| echo "Test Results (Primary Check):" | |
| echo " - Python 3.10: ${{ needs.tests.result == 'success' && 'passed' || 'failed' }}" | |
| echo " - Python 3.11: ${{ needs.tests.result == 'success' && 'passed' || 'failed' }}" | |
| echo " - Python 3.12: ${{ needs.tests.result == 'success' && 'passed' || 'failed' }}" | |
| echo "" | |
| echo "=== Final Status ===" | |
| echo "Workflow ${{ github.event_name == 'pull_request' && 'PR check' || 'Push check' }}: ${{ needs.tests.result == 'success' && 'PASSED' || 'FAILED' }}" | |
| echo "====================" | |
| echo "" | |
| echo "Note: Lint checks (ruff/mypy) are informational only." | |
| echo "Test results determine workflow success." |