CI Tests #50
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
# CI Tests | |
# These should only be run on main, because they access secrets | |
name: CI Tests | |
on: | |
workflow_dispatch: | |
push: | |
branches: [main] | |
schedule: | |
# * is a special character in YAML so we quote this string | |
# Run at 1030 UTC every day | |
- cron: '30 10 * * *' | |
jobs: | |
build: | |
runs-on: gpu-runner | |
strategy: | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust | |
shell: bash | |
run: | | |
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain 1.75.0 | |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Show GPUs | |
run: | | |
nvidia-smi | |
- name: Update Ubuntu | |
run: | | |
sudo apt-get update | |
sudo apt-get -y upgrade | |
- name: Ensure NVIDIA SDK available | |
run: | | |
sudo apt-get -y install cuda-toolkit | |
echo "/usr/local/cuda-12.4/bin" >> $GITHUB_PATH | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pytest | |
pip install -e .[all,test] | |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
- name: GPU pip installs | |
run: | | |
pip install accelerate | |
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install "llama-cpp-python<0.2.58" | |
- name: Check GPU available | |
run: | | |
python -c "import torch; assert torch.cuda.is_available()" | |
- name: Test with pytest | |
env: | |
# Configure endpoints | |
AZUREAI_CHAT_ENDPOINT: ${{ secrets.AZUREAI_CHAT_ENDPOINT }} | |
AZUREAI_CHAT_KEY: ${{ secrets.AZUREAI_CHAT_KEY }} | |
AZUREAI_CHAT_MODEL: ${{ secrets.AZUREAI_CHAT_MODEL }} | |
AZUREAI_COMPLETION_ENDPOINT: ${{ secrets.AZUREAI_COMPLETION_ENDPOINT }} | |
AZUREAI_COMPLETION_KEY: ${{ secrets.AZUREAI_COMPLETION_KEY }} | |
AZUREAI_COMPLETION_MODEL: ${{ secrets.AZUREAI_COMPLETION_MODEL }} | |
run: | | |
pytest --cov=guidance --cov-report=xml --cov-report=term-missing \ | |
-m needs_credentials \ | |
./tests/ | |
- name: Upload coverage reports to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} |