Spaces:
Sleeping
Sleeping
File size: 3,879 Bytes
632ab6a 12161ea 632ab6a 12161ea 710129f 12161ea 710129f 12161ea 632ab6a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | ---
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
```
|