feat: Add 5 new framework adapters (AutoGen, Vercel, Haystack, Pineco… #2
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: Adapters CI | |
| on: | |
| push: | |
| branches: [main, feat/*] | |
| paths: | |
| - 'adapters/**' | |
| - '.github/workflows/adapters-ci.yml' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - 'adapters/**' | |
| - '.github/workflows/adapters-ci.yml' | |
| jobs: | |
| test-adapters: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.9', '3.10', '3.11', '3.12'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Cache pip packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('adapters/**/requirements*.txt') }} | |
| - name: Install dependencies | |
| run: | | |
| cd adapters | |
| pip install -e . | |
| pip install pytest pytest-asyncio black isort flake8 | |
| - name: Lint with black | |
| run: | | |
| cd adapters | |
| black --check a3m_adapter/ --exclude='/(\.git|\.venv|__pycache__)/' | |
| - name: Lint with isort | |
| run: | | |
| cd adapters | |
| isort --check-only a3m_adapter/ --exclude='/(\.git|\.venv|__pycache__)/' | |
| - name: Lint with flake8 | |
| run: | | |
| cd adapters | |
| flake8 a3m_adapter/ --max-line-length=100 --exclude='/(\.git|\.venv|__pycache__)/' | |
| - name: Run tests | |
| run: | | |
| cd adapters | |
| pytest a3m_adapter/tests/ -v --tb=short | |
| test-integration: | |
| runs-on: ubuntu-latest | |
| needs: test-adapters | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Start A3M Router | |
| run: | | |
| npx a3m-router serve & | |
| sleep 5 | |
| curl -f http://localhost:8787/health || exit 1 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install adapter and test deps | |
| run: | | |
| cd adapters | |
| pip install -e . | |
| pip install requests pytest pytest-asyncio | |
| - name: Run integration tests | |
| run: | | |
| cd adapters | |
| pytest a3m_adapter/tests/ -v --tb=short -k "integration" | |
| publish-adapters: | |
| runs-on: ubuntu-latest | |
| needs: test-integration | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Publish to PyPI | |
| env: | |
| PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} | |
| run: | | |
| cd adapters | |
| pip install build twine | |
| python -m build | |
| twine upload --token $PYPI_TOKEN dist/* | |
| docker-build: | |
| runs-on: ubuntu-latest | |
| needs: test-integration | |
| if: github.event_name == 'push' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build Docker image | |
| run: | | |
| docker build -t ghcr.io/das-rebel/a3m-router:latest . | |
| - name: Run container health check | |
| run: | | |
| docker run -d --name a3m-test -p 8787:8787 ghcr.io/das-rebel/a3m-router:latest | |
| sleep 5 | |
| curl -f http://localhost:8787/health | |
| docker stop a3m-test | |
| - name: Push to GHCR | |
| if: github.event_name == 'push' | |
| run: | | |
| echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
| docker push ghcr.io/das-rebel/a3m-router:latest |