Update staging.yml #743
Workflow file for this run
This file contains 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: Test Staging | |
on: | |
pull_request: | |
branches: ["staging", "*.dev*"] | |
paths: | |
- 'pkgs/community/**' | |
- 'pkgs/core/**' | |
- 'pkgs/experimental/**' | |
- 'pkgs/partners/**' | |
- 'pkgs/swarmauri/**' | |
jobs: | |
detect: | |
runs-on: ubuntu-latest | |
outputs: | |
packages_matrix: ${{ steps.set-matrix.outputs.packages_matrix }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Detect Changed Packages | |
id: detect_changes | |
run: | | |
git fetch origin ${{ github.event.before }} | |
git diff --name-only ${{ github.event.before }} ${{ github.sha }} > changed_files.txt | |
CHANGED_PACKAGES=$(cat changed_files.txt | grep -oE '^pkgs/(community|core|experimental|partners|swarmauri)' | cut -d/ -f2 | sort -u | tr '\n' ',' | sed 's/,$//') | |
if [ -z "$CHANGED_PACKAGES" ]; then | |
echo "No packages changed." | |
echo "::set-output name=packages_matrix::[]" | |
else | |
# Ensure proper JSON format for single or multiple packages | |
echo "::set-output name=packages_matrix::[$(echo $CHANGED_PACKAGES | sed 's/,/\",\"/g' | sed 's/^/\"/;s/$/\"/')]" | |
fi | |
test: | |
needs: detect | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.10", "3.11", "3.12"] | |
package: ${{ fromJson(needs.detect.outputs.packages_matrix) }} | |
env: | |
# Model Provider Keys | |
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }} | |
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }} | |
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} | |
MISTRAL_API_KEY: ${{ secrets.MISTRAL_API_KEY }} | |
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
PERPLEXITY_API_KEY: ${{ secrets.PERPLEXITY_API_KEY }} | |
AI21STUDIO_API_KEY: ${{ secrets.AI21STUDIO_API_KEY }} | |
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }} | |
SHUTTLEAI_API_KEY: ${{ secrets.SHUTTLEAI_API_KEY }} | |
DEEPINFRA_API_KEY: ${{ secrets.DEEPINFRA_API_KEY }} | |
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }} | |
# Database Keys | |
QDRANT_URL_KEY: ${{ secrets.QDRANT_URL_KEY }} | |
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }} | |
QDRANT_COLLECTION_NAME: ${{ secrets.QDRANT_COLLECTION_NAME }} | |
# Tools | |
GITHUBTOOL_TEST_REPO_NAME: ${{ secrets.GITHUBTOOL_TEST_REPO_NAME }} | |
GITHUBTOOL_TEST_REPO_OWNER: ${{ secrets.GITHUBTOOL_TEST_REPO_OWNER }} | |
GITHUBTOOL_TEST_TOKEN: ${{ secrets.GITHUBTOOL_TEST_TOKEN }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip setuptools wheel | |
python -m pip install flake8 pytest | |
python -m pip install textblob | |
python -m textblob.download_corpora | |
if [ -f pkgs/${{ matrix.package }}/requirements.txt ]; then pip install -r pkgs/${{ matrix.package }}/requirements.txt; fi | |
- name: Lint with flake8 | |
run: | | |
flake8 pkgs/${{ matrix.package }} --count --select=E9,F63,F7,F82 --show-source --statistics | |
flake8 pkgs/${{ matrix.package }} --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics | |
- name: Build package | |
run: | | |
cd pkgs/${{ matrix.package }} | |
python -m pip install build | |
python -m build | |
- name: Install package | |
run: | | |
LATEST_WHL=$(ls pkgs/${{ matrix.package }}/dist/*.whl | sort -V | tail -n 1) | |
python -m pip install "$LATEST_WHL"[full] | |
- name: Get pip freeze | |
run: | | |
pip freeze | |
- name: Run tests | |
continue-on-error: true | |
run: | | |
pytest -v pkgs/${{ matrix.package }}/tests --junitxml=results.xml | |
- name: Output test results for debugging | |
run: | | |
cat results.xml | |
- name: Classify test results | |
run: | | |
python pkgs/${{ matrix.package }}/tests/classify_results.py results.xml | |
continue-on-error: false | |
- name: Publish to PyPI | |
if: success() && github.event_name == 'pull_request' && github.base_ref == 'stable' | |
uses: pypa/[email protected] | |
with: | |
user: cobycloud | |
password: ${{ secrets.PYPI_API_TOKEN }} |