Files
ENI-ml-mlops/.forgejo/workflows/pipeline.yml

51 lines
2.2 KiB
YAML

name: pipeline
# Partie 4 : le pipeline ML est rejoue automatiquement a chaque Pull Request
# vers la branche principale (Q4.1). Autres declencheurs possibles (Q4.4) :
# push sur main, tag de release, planification (schedule/cron), declenchement
# manuel (workflow_dispatch).
on:
pull_request:
branches: [main]
jobs:
train-and-register:
runs-on: docker
# Le runner (mode docker, reseau mlops-net) lance le job dans ce conteneur.
# On y monte en lecture seule les donnees source du fil rouge et le magasin
# de certificats du host (pour faire confiance a la CA interne ENI MLOps).
container:
image: node:20-bookworm
volumes:
- /data/modelling:/data/modelling:ro
- /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro
steps:
- name: Recuperation du code
uses: actions/checkout@v4
- name: Installation de Python et des dependances
run: |
apt-get update
apt-get install -y --no-install-recommends python3-venv
python3 -m venv .venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -r requirements.txt
- name: Execution du pipeline (split -> train --register -> promote)
run: .venv/bin/python pipeline.py
env:
# Serveur MLflow (basic auth) : URLs HTTPS via Caddy, resolues sur mlops-net.
MLFLOW_TRACKING_URI: ${{ secrets.MLFLOW_TRACKING_URI }}
MLFLOW_TRACKING_USERNAME: ${{ secrets.MLFLOW_TRACKING_USERNAME }}
MLFLOW_TRACKING_PASSWORD: ${{ secrets.MLFLOW_TRACKING_PASSWORD }}
MLFLOW_EXPERIMENT_NAME: ${{ secrets.MLFLOW_EXPERIMENT_NAME }}
# Artefacts sur S3 Garage (log_model).
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
MLFLOW_S3_ENDPOINT_URL: ${{ secrets.MLFLOW_S3_ENDPOINT_URL }}
# CA interne ENI MLOps (requests/boto3 n'utilisent pas le store systeme par defaut).
REQUESTS_CA_BUNDLE: /etc/ssl/certs/ca-certificates.crt
AWS_CA_BUNDLE: /etc/ssl/certs/ca-certificates.crt
# Import du package lab depuis la racine du depot.
PYTHONPATH: ${{ github.workspace }}