Skip to content

Tests - Nightly Run #10

Tests - Nightly Run

Tests - Nightly Run #10

Workflow file for this run

name: Tests - Nightly Run
on:
schedule:
- cron: "0 3 * * *" # 3 AM UTC nightly
workflow_dispatch:
env:
PYTHON_VERSION: "3.11"
jobs:
# ---------------------------------------------------------
# 1) Gather all notebooks (except skip-list)
# ---------------------------------------------------------
gather_all_notebooks:
runs-on: ubuntu-latest
outputs:
notebooks: ${{ steps.get_nbs.outputs.notebooks }}
steps:
- uses: actions/checkout@v2
- id: get_nbs
run: |
# 1) Read ignore patterns from .github/ignore-notebooks.txt
IGNORE_LIST=()
while IFS= read -r skip_nb || [ -n "$skip_nb" ]; do
# Skip empty lines or comment lines
[[ -z "$skip_nb" || "$skip_nb" =~ ^# ]] && continue
IGNORE_LIST+=("$skip_nb")
done < .github/ignore-notebooks.txt
# 2) Find all .ipynb in python-recipes (or your path)
NBS=$(find python-recipes -name '*.ipynb')
# 3) Filter out notebooks that match anything in IGNORE_LIST
FILTERED_NBS=()
for nb in $NBS; do
skip=false
for ignore_nb in "${IGNORE_LIST[@]}"; do
if [[ "$nb" == *"$ignore_nb"* ]]; then
skip=true
break
fi
done
if [ "$skip" = false ]; then
FILTERED_NBS+=("$nb")
fi
done
# 4) Convert the final array to compact JSON for GitHub Actions
NB_JSON=$(printf '%s\n' "${FILTERED_NBS[@]}" \
| jq -R . \
| jq -s -c .)
# 5) Default to an empty array if there's nothing left
if [ -z "$NB_JSON" ] || [ "$NB_JSON" = "[]" ]; then
NB_JSON="[]"
fi
echo "All valid notebooks: $NB_JSON"
echo "notebooks=$NB_JSON" >> $GITHUB_OUTPUT
# ---------------------------------------------------------
# 2) Test all notebooks in parallel
# ---------------------------------------------------------
test_all_notebooks:
needs: gather_all_notebooks
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
notebook: ${{ fromJson(needs.gather_all_notebooks.outputs.notebooks) }}
services:
redis:
image: redis/redis-stack-server:latest
ports:
- 6379:6379
steps:
- uses: actions/checkout@v2
# Setup Python
- uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Create and activate venv
run: |
python -m venv venv
source venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install pytest nbval
- name: Test notebook
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }}
run: |
echo "Testing notebook: ${{ matrix.notebook }}"
source venv/bin/activate
pytest --nbval-lax --disable-warnings "${{ matrix.notebook }}"