Administrateurs systèmes - DevOps - Développeurs confirmés
Notions d'administration systèmes
Comprendre les principes DevOps - Mettre en place une solution de configuration logicielle basée sur Git - Gérer les versions des projets du dépôt de données - Mettre en œuvre et exploiter un serveur d'intégration continue - Gérer les interconnexions avec un système de build et de tests
Le manifeste AgileDe la vision à la livraison, la chronologie du projetLe système sensoriel pour suivre l’évolution du projetLa planification et la gestion de l’inconnuLe rythme: travailler de façon itérativeLa mutation: amélioration progressive et continue du projet et des processQuelques principes: KISS, YAGNI, empirisme, transparence, …
Le Lean Management : objectif, principes Kanban: principe, avantage, cycle de vie d'une étiquette Pratiques XP (eXtreme Programming)Le cadre Scrum, distribution des rôlesTime boxes: Sprint planning, Sprint Review, SprintRetrospective, Daily Scrum Artéfacts: Product Backlog,Sprint Backlog, Burndown chart
Principes de gestion de contrôle de source (SCM)Historique, contrôle local, centralisé et distribuéFonctionnement des instantanées, comparaison avec les différencesInstallation (Linux, MacOS, Windows)Accès au manuel: man / helpConfiguration initiale de Git: préférences, profil utilisateurInitialisation d’un dépôt local
Atelier: Installation de Git - Création d'un projet
Concepts, de répertoire de travail, index et dépôtVérifier l’état de la copie de travail: statusIndexer ses modifications: addIgnorer des fichier:.gitignoreValider ses modifications: commitSupprimer et déplacer des fichiers
Atelier: contributions et validations
Visualiser les modifications: logPersonnaliser le format: stat, pretty, …Filtrer par date, auteur, message de commit, contenu modifié,...Visualiser et exporter une différence (format natif, outil externe)Étiqueter ses validations: étiquettes légères et annotéesRechercher avec git-grep
Réécrire la dernière validationDésindexer un fichierRéinitialiser un fichier
Principe de branche, le pointeur HEADCréer une brancheBasculer entre les branches, le mode détachéFusionner les branches: avance-rapide, trois sourcesGérer les conflits de fusionOutil de fusion externe: mergetool (emerge, vimdiff, meld, …)Visualiser les branches existantes, celles qui ont été fusionnéesSupprimer une brancheStratégies de gestion de branches: branche longue, thématique, …
Dépôt distant, branches distantes, suivi de brancheAfficher et inspecter les dépôts distantsAjouter, renommer, retirer ses dépôts distantsTirer, pousser et supprimer une branche distante
Mise en garde: les dangers de la réécritureRebaser une portion de brancheQuand rebaser et quand fusionner
Remiser son travail en coursCréer une branche depuis une remiseNettoyer son répertoire de travail
Configurer éditeur par défaut, exclusions automatiques,...Création et utilisation d’aliasOutils graphiques: Git-Gui, GitKraken, SmartGit,...Créer des filtres: smudge et cleanCrochets côté client: pre-commit, pre-rebase, post-rewrite…Crochets côté serveur: pre-receive, update, post-receive
Principe des sous-modulesDéclarer, tirer et mettre à jour un sous-moduleModifier et gérer les conflits sur une bibliothèque externeProblèmes des sous-modules
Les protocoles: local, HTTP, SSH, GitCréation d’un dépôt nu, comptes utilisateursUtilisateur git unique, clés SSH et git-shellDémon Git
Atelier: Mise en place d’un serveur Git
Les différentes formes de virtualisation et leur conceptPrésentation des avantages et des cas d'utilisation des conteneursPrésentation de Docker et de son architecture
Processus de développement, d'intégration et de déploiementIntégration continue: présentation, positionnement dans une démarche agileGestion des environnements: développement, recette, productionPanorama outils de gestion: versionning, build, tests, qualitéPrésentation d'outils d'intégration continue: Jenkins, GitLab-CI, Bamboo, …
Atelier: Publier un projet PHP sur une plateforme d’intégration continue
Chargement d’une image Docker PHP CLIMise en place du pipeline: les stages et les jobsExécution du pipeline et visualisation de la sortieConfigurer les dépendances entre jobsGérer le déclenchement de l’intégration suivant les branches ou tags
Atelier: Configurer et lancer l’intégration
Outils de qualité, types et intérêtsAnalyse à froid: php_cs_fixer, PHP_CodeSnifferPanorama des types tests: unitaires, fonctionnels, e2eStratégies des tests, TDD, BDD,StoryBDD, non-régressionCe qu’il faut et ne faut pas tester
Atelier: Mettre en place un contrôle de convention d’écriture
Présentation de PHPUnitClasses et méthodes de tests, assertionProvisionner en données: fixturesLes doublures: bouchons, mockLes résultats: succès, échec, erreur, risqué, incomplet
Atelier: Mettre en place des tests automatisés, contrôler les scénarios
Présentation du mouvement DevOpsValeurs DevOps: Culture,Automatisation, Lean, Mesure, PartageCulture DevOps: présentation, caractéristiques, mise en placePrincipe d’infrastructure as codePrésentation d’Ansible
Méthodologie basée sur l'Active Learning : 75% de pratique minimum. Chaque point théorique est systématiquement suivi d'exemples et exercices.
Contrôle continu
Attestation de fin de stage mentionnant le résultat des acquis