streamlit_app / README.md
martper56's picture
import streamlit code from streamlit branch
632ab6a

A newer version of the Streamlit SDK is available: 1.54.0

Upgrade
metadata
title: Quality Air Streamlit App
emoji: 💨
colorFrom: green
colorTo: blue
sdk: streamlit
python_version: '3.9'
app_file: streamlit/Home.py
pinned: false

Guide de Configuration Jenkins et Pipeline CI/CD

📌 Introduction

Ce projet implémente un pipeline CI/CD dans Jenkins pour exécuter un processus ETL en conteneur Docker. Le pipeline inclut des tests unitaires et envoie les résultats sur AWS S3.

📂 Structure du projet

├── data/
│   ├── input_data.csv              # Fichier d'entrée pour l'ETL
│   ├── sample_output_data.csv      # Résultat attendu du processus ETL (échantillon)
│
├── jenkins/
│   └── Jenkinsfile                 # Pipeline Jenkins pour CI/CD
│
├── streamlit/
│   └── (streamlit files)           # Each file corresponds to a panel in the streamlit app
│
├── tests/
│   ├── Dockerfile                  # Dockerfile pour lancer les tests
│   ├── requirements.txt            # Dépendances spécifiques aux tests
│   ├── test_etl.py                 # Tests unitaires du pipeline ETL
│   └── upload_s3.py                # Script d'upload de test vers S3
│
├── Dockerfile                      # Conteneurisation du projet principal
├── etl_process.py                  # Script principal du processus ETL
├── requirements.txt                # Dépendances du projet
└── README.md                       # Documentation du projet

🚀 Étapes de configuration

1️⃣ Configuration de Jenkins

Assurez-vous que Jenkins est bien installé et fonctionne.

2️⃣ Ajout des Variables d'Environnement

Les variables AWS pour l'upload sur S3 doivent être ajoutées à Jenkins.

  1. Aller dans JenkinsManage JenkinsManage Credentials
  2. Sélectionnez (global)Add Credentials
  3. Ajoutez les clés AWS en tant que Secret Text:
    • AWS_ACCESS_KEY_ID et la nommer aws-access-key
    • AWS_SECRET_ACCESS_KEY et la nommer aws-secret-key
  4. Ajoutez les clés Github en tant que SSH Username with private key:
    • GITHUB_TOKEN et la nommer github_token

Ou ajoutez-les directement dans Jenkins :

  1. Aller dans JenkinsManage JenkinsConfigure System
  2. Ajoutez sous Global PropertiesEnvironment Variables :
    • AWS_ACCESS_KEY_ID = VOTRE_CLE
    • AWS_SECRET_ACCESS_KEY = VOTRE_CLE_SECRET
    • GITHUB_TOKEN = VOTRE_TOKEN

3️⃣ Configuration du Job Jenkins

  1. Créer un nouveau job JenkinsPipeline
  2. Sélectionner Pipeline Script from SCM
  3. Ajouter le repository GitHub contenant le Jenkinsfile
  4. Sauvegarder et exécuter

🏗️ Fonctionnement du Pipeline

🛠️ Étapes du Pipeline :

  1. Clone du repository : Récupère le code depuis GitHub.
  2. Exécution des tests :
    • Lance les tests dans un conteneur Docker.
    • Enregistre les résultats en XML.
    • Envoie les résultats sur S3.
  3. Build de l'ETL :
    • Construit l'image Docker pour l'ETL.
  4. Exécution de l'ETL :
    • Monte les fichiers CSV et exécute le traitement.
    • Sauvegarde le résultat dans data/output_data.csv.

Ce pipeline CI/CD garantit l'intégration et le déploiement automatisé du processus ETL en utilisant Jenkins et Docker.

🔥 N'hésitez pas à adapter les configurations en fonction de votre environnement !

🏗️ A word on streamlit

To get the streamlit app to function on HuggingFace, we need to add the HF repo as an remote repository:

git remote set-url --add origin https://huggingface.co/spaces/martper56/streamlit_app

Then we need to push the code in the development branch as the main branch on streamlit:

git push -f https://huggingface.co/spaces/martper56/streamlit_app development:main