Mari0304's picture
Add GitHub Actions CI pipeline for unit tests, linting, DVC model pulling, and Docker image building.
11e5ccd
name: CI Pipeline
on:
push:
branches: [ "main", "feature/*" ]
pull_request:
branches: [ "main" ]
jobs:
unit-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Free Disk Space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo docker image prune --all --force
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: "3.10"
cache: 'pip'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
# Install CPU-only PyTorch to save space (we don't need CUDA for tests)
pip install torch --index-url https://download.pytorch.org/whl/cpu
# Install other dependencies
pip install -r requirements.txt --no-cache-dir
pip install -e .
- name: Lint with Ruff
run: |
make lint
- name: Run Unit Tests
run: |
pytest tests/unit/ -v -m unit --html=report.html --self-contained-html
# Preserved contribution from Antonio Fratta
- name: Upload Test Report
if: failure()
uses: actions/upload-artifact@v4
with:
name: test-report
path: report.html
build-image:
needs: unit-tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Free Disk Space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo docker image prune --all --force
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: "3.10"
cache: 'pip'
- name: Install DVC
run: |
python -m pip install --upgrade pip
pip install dvc dvc-s3
- name: Configure DVC
run: |
dvc remote modify origin --local auth basic
dvc remote modify origin --local user ${{ secrets.DAGSHUB_USERNAME }}
dvc remote modify origin --local password ${{ secrets.DAGSHUB_TOKEN }}
- name: Pull Models with DVC
run: |
dvc pull models/random_forest_embedding_gridsearch.pkl models/label_names.pkl
- name: Build Docker Image
run: |
docker build . -t hopcroft-app:latest