🖨️ Version PDF
Ce cours fait l’objet d’une introduction avec une présentation sous forme de diaporama (slides libre office). Cette page concerne la mise en pratique.
Imaginez que vous construisiez une cabane avec vos amis :
Souvent, ces deux groupes ne se parlent pas assez, et la cabane finit par s’effondrer (j’exagère un peu, c’est pour l’exemple). Le DevOps, c’est apprendre à collaborer et automatiser les tâches pour que la cabane soit toujours solide.
Objectifs du DevOps :
Git, c’est comme une machine à remonter le temps (en ce qui concerne le code)
Vous pouvez :
Commandes de base de Git :
# Crée un nouveau projet Git dans un dossier git init # Vérifie l'état du projet git status # Ajoute tous les fichiers à la zone d'attente git add . # Crée une sauvegarde (commit) avec un message git commit -m "Mon premier commit" # Affiche l’historique des sauvegardes git log
Chaque commit correspond à une photo de votre projet à un instant donné !
cabane
cd cabane
Tapez les commandes suivantes :
git init echo "Bonjour DevOps" > README.md git add . git commit -m "premier commit"
git log
Résultat attendu :
Un commit apparaît avec votre nom et votre message.
GitHub et GitLab sont des réseaux sociaux pour le code. Vous pouvez y déposer votre projet (push) et vos collègues peuvent le récupérer (clone).
push
clone
Commandes essentielles :
# Connecter votre projet à GitHub git remote add origin https://github.com/votre_pseudo/mon-projet.git # Envoyer votre code git push -u origin main # Récupérer le projet d’un collègue git clone https://github.com/collegue/projet.git
cabane-devops
Connectez votre dépôt local :
git remote add origin https://github.com/votre_pseudo/cabane-devops.git git branch -M main git push -u origin main
Votre projet est désormais sur GitHub.
Imaginez un arbre :
main
master
Chaque membre de l’équipe peut travailler sur sa branche, puis fusionner les changements par la suite.
Commandes principales :
# Créer une nouvelle branche git branch ma-branche # Aller sur une branche git checkout ma-branche # Créer et aller sur la branche en une seule commande git checkout -b ma-branche # Fusionner une branche dans main git checkout main git merge ma-branche
ajouter-ami
amis.txt
ajouter-ami2
Le fichier amis.txt contient vos deux prénoms !
Remarque : Si deux personnes modifient la même ligne, Git ne sait pas quelle version garder et donc il y a conflit.
Exemple :
<<<<<<< HEAD Bonjour ======= Salut >>>>>>> ajouter-ami
Vous devez choisir : garder Bonjour ou Salut ou les deux !
Git
Un texte final unique dans le fichier.
Docker, c’est comme une boîte magique qui contient votre application et tout ce dont elle a besoin pour fonctionner. Peu importe la machine et le système sur lequel vous déposez votre boite, elle fonctionnera de la même manière !
# Voir les conteneurs qui tournent sur votre machine docker ps # Télécharger une image depuis le Docker Hub (ici, le serveur web open source NGINX) # L'intérêt de ce serveur est qu'il utilise un proxy inverse (reverse proxy) qui se trouve devant le serveur web et reçoit toutes les requêtes avant qu’elles n’atteignent le serveur d’origine. docker pull nginx # Lancer votre conteneur sur le port 8080 docker run -d -p 8080:80 nginx # Arrêter le conteneur docker stop <id>
Lancez :
docker run -d -p 8080:80 nginx
La page s’affiche normalement dans votre navigateur !
Le fichier Dockerfile est une recette de cuisine pour construire votre application. En tant que développeur, il faut que nous sachions comment créer nos propres images.
Dockerfile
FROM node:16 WORKDIR /app COPY . . RUN npm install CMD ["node", "index.js"]
index.js
docker build -t monapp . docker run -p 3000:3000 monapp
Votre application fonctionne depuis un conteneur.
Ces concepts sont abordés dans la partie présentation de DevOps (diaporama)
Tester automatiquement le code
Déployer automatiquement le code en production
Ces pratiques permettent d’éviter les erreurs humaines et d’accélérer le développement.
.gitlab-ci.yml
Dans ce fichier, nous n’avons que 2 étapes, le build et le test. Cette exemple n’affiche rien d’autre que des messages mais il montre bien la mise en place d’un processus automatisé.
stages: - build - test build: stage: build script: - echo "Je construis mon projet" test: stage: test script: - echo "Je teste mon projet"
Les jobs build et test s’exécutent avec succès (normalement ;))
build
test
Pour les projets Fil Rouge, vous avez le choix entre la “ToDO liste”, la “Gestion du Panier”, “Waouf Waouf” étudié en UML ou autre.
Créer une application web simple de type “to-do list”, intégrant un pipeline complet :
Chaque groupe présentera son projet en fin de journée.
Objectif : relier la modélisation UML à la chaîne DevOps !
Compétences mobilisées :
Pour simplifier, vous pouvez utiliser vos propres modèles UML (Diagramme de classes ou celui de la correction) Nous n’allons pas encore mettre en place les diagrammes de séquences dont il est question mais simplement se limiter à :
Bientôt… un QCM de 15/20 questions sur Git, Docker et CI/CD pour vous entrainer.
Auteur : Philippe Bouget