Merge pull request #533 from MichaelDecent/0.4.5.dev1 #66
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 and Publish Dev Release | |
on: | |
push: | |
branches: ["*.dev*"] | |
paths: | |
- 'pkgs/community/**' | |
- 'pkgs/core/**' | |
- 'pkgs/experimental/**' | |
- 'pkgs/partners/**' | |
- 'pkgs/swarmauri/**' | |
jobs: | |
detect-changes: | |
runs-on: ubuntu-latest | |
outputs: | |
packages: ${{ steps.packages.outputs.packages }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Detect Changed Packages | |
id: packages | |
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 | |
# If no packages changed, set to an empty array | |
CHANGED_PACKAGES_ARRAY="[]" | |
else | |
# Convert the comma-separated packages to a JSON array format | |
CHANGED_PACKAGES_ARRAY=$(echo "[\"$(echo $CHANGED_PACKAGES | sed 's/,/","/g')\"]") | |
fi | |
# Export it to GITHUB_OUTPUT in JSON format | |
echo "packages=$CHANGED_PACKAGES_ARRAY" | |
echo "packages=$CHANGED_PACKAGES_ARRAY" >> $GITHUB_OUTPUT | |
test: | |
needs: detect-changes | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.12"] | |
package: ${{ fromJSON(needs.detect-changes.outputs.packages) }} | |
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@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
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 scripts/classify_results.py results.xml | |
continue-on-error: false | |
- name: Publish to PyPI | |
if: success() | |
uses: pypa/[email protected] | |
with: | |
user: cobycloud | |
password: ${{ secrets.DANGER_MASTER_PYPI_API_TOKEN }} | |
packages_dir: pkgs/${{ matrix.package }}/dist |