github-actions[bot]
deploy: production build for sonix-ml-api
597500e
Raw
History Blame Contribute Delete
2.34 kB
name: SONIX-ML Continuous Training
on:
# Triggered via Supabase Webhook (Database Changes)
repository_dispatch:
types: [shoe_data_changed]
# Allows manual triggering from GitHub Actions tab (for testing)
workflow_dispatch:
jobs:
train-and-deploy:
runs-on: ubuntu-latest
# Standard permissions (overridden by GH_PAT for the push)
permissions:
contents: write
steps:
# 1. Checkout Code with PERSONAL ACCESS TOKEN
- name: Checkout Repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GH_PAT }}
fetch-depth: 0 # Fetch full history to ensure rebase works
persist-credentials: true # Keep the token for the push step
# 2. Setup Python Environment
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"
# 3. Install Dependencies
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
# 4. Execute Training Engine
# This script connects to Supabase, retrains the model, and saves artifacts.
- name: Run Training Pipeline
env:
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
PYTHONPATH: .
run: python -m src.training.training_engine
# 5. Commit, Rebase, and Push
# This step handles version control for the new model artifacts.
- name: Commit and Push New Artifacts
run: |
# Configure Git Identity (Bot)
git config --local user.email "action@github.com"
git config --local user.name "SONIX ML Bot"
# Stage the new model artifacts
git add model_artifacts/
# Commit changes (if any)
# '|| echo' prevents the workflow from failing if there are no changes
git commit -m "auto: model retraining complete [skip ci]" || echo "No changes to commit"
# PULL REBASE: Critical to prevent 'race conditions' if the repo changed during training
git pull --rebase origin main
# Push changes using the GH_PAT credentials from the checkout step
git push origin main