streamlit_app / README.md
martper56's picture
import streamlit code from streamlit branch
632ab6a
---
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
```bash
├── 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 Jenkins****Manage Jenkins****Manage 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`
3. 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 Jenkins** → **Manage Jenkins****Configure System**
2. Ajoutez sous **Global Properties****Environment 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 Jenkins****Pipeline**
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
```