--- 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 ```