virli/tutorial/devops/what.md

2.1 KiB

\newpage

But du TP

Nous allons nous mettre aujourd'hui dans la peau d'une équipe DevOps et réaliser une solution complète de intégration/déploiement continu (le fameux CI/CD, pour Continuous Integration et Continuous Delivery).

Le résultat attendu d'ici la fin du TP sera de mettre en place toutes les briques décrite dans la section précédente. \

Nous allons commencer par automatiser le projet youp0m, plus simple, puis la plate-forme du FIC dans son ensemble, ce qui représente un petit challenge.

Il est également attendu que vous rendiez un playbook Ansible, permettant de retrouver un environnement similaire. Car on se reservira de cette installation dans un prochain TP. \

Dans un premier temps, on voudra juste compiler notre projet, pour s'assurer que chaque commit poussé ne contient pas d'erreur de compilation, dans l'environnement défini comme étant celui de production. Ensuite, on ajoutera quelques tests automatiques. Puis nous publierons automatiquement le binaire youp0m comme fichier associé à un tag au sein de l'interface web du gestionnaire de versions.

Enfin, nous mettrons en place un registre Docker qui nous permettra de publier automatiquement l'image Docker assocciée. C'est à partir de cette image Docker que l'on va commencer à déployer automatiquement...

Préparer le terrain

Tous les déploiements sont à faire sur votre machine en utilisant des conteneurs Docker, qui seront regroupés au sein de réseaux Docker. Cela vous permettra d'utiliser la résolution de noms entre vos conteneurs.

Dans votre playbook Ansible, vous pourrez procéder ainsi :

```yaml - name: Create virli network docker_network: name: virli3 ```

Étant donné que votre machine ne dispose pas de domaine sur Internet et que l'on va essayer de simplifier au maximum l'installation, vous devriez ajouter cette ligne à votre fichier /etc/hosts :

```conf 127.0.0.1 gitea droneci ```

Cette ligne va vous permettre de résoudre les noms des conteneurs. Cela permettra aux requêtes OAuth de se faire de manière transparente pour vous lorsque vous serez dans votre navigateur.