L'[intégration continue](https://fr.wikipedia.org/wiki/Int%C3%A9gration_continue) consiste à exécuter une série d'actions à chaque modification du code source d'un projet (cad. à chaque push/merge sur le dépot). Ces actions peuvent être des tests unitaires, fonctionnels, la compilation, tests de performances, des contrôles de qualité du code...etc. ## I - Gitlab-CI ![gitlab-ci-logo](Gitlab-CI/gitlab-ci-logo.png) Gitlab (à partir de la version 8.0) propose un outil intégré d'intégration continue. > Voir la [page de présentation](https://about.gitlab.com/gitlab-ci/) et le [guide de départ](https://docs.gitlab.com/ce/ci/quick_start/). Un fichier .gitlab-ci.yml doit être ajouté au projet: c'est lui qui définit les actions (jobs) à effectuer à chaque mise à jour du code (build). Ces actions sont ensuite effectuées sur une machine distante, sur laquelle a été installée le ou les"runner(s)". Les résultats sont ensuite disponibles dans l'onglet "Pipelines" du projet. Ils peuvent aussi être visibles depuis la page d'accueil du projet, envoyés par mail aux développeurs...etc. Concrétement, Gitlab-CI clonera le dépôt Git sur la machine de build, et exécutera les commandes du job dans le répertoire cloné. 1. [**Mise en place**](Gitlab-CI/readme.md) 2. [**Exemples de fichiers .gitlab-ci.yml**](Gitlab-CI/gitlab-ci_files) 3. [**Avec Docker**](Gitlab-CI/docker.md) ## II - Avec Jenkins ![jenkins-logo](logo.png) [**Jenkins**](https://wiki.jenkins-ci.org/) est un "puppet-master". En clair, il permet d'automatiser tout un tas de choses, en particulier en ce qui concerne l'intégration continue. **Avantages:** Eprouvé, grande communauté d'utilisateurs, des centaines de plugins. **Inconvénients**: Vieillissant, plus trés ergonomique. 1. [**Installer Jenkins**](Jenkins/install-jenkins.md) 2. [**Configurer un job**](Jenkins/new-job.md) 3. [**Un exemple avec Python**](Jenkins/jenkins-python.md) ## III - Différents exemples d'intégration continue 1. [**Projets Python**](Exemples/Python/python-ci.md)