DevOps
Intégrez et déployez en continu (avec exemple clés en main)
Avant-propos
1. Introduction9
2. Organisation du livre10
Chapitre 1
DevOps : les raisons d'un succès
1. Contexte13
2. Un peu d'histoire16
2.1 Cycle en V17
2.2 Vers les méthodologies dites « Agiles »20
3. L'état de l'art22
3.1 Intégrer en continu26
3.2 Vérifier en continu27
3.3 Délivrer en continu28
4. Quels retours sur investissement ?29
Chapitre 2
Gestion de code source
1. Présentation31
2. Architecture de base34
3. Prise en main de GitLab-CE35
3.1 Présentation de Git35
3.2 Prise en main de GitLab-CE sous Azure36
4. Initialisation d'un projet sous Git42
5. Création du projet web50
6. Paramétrages avancés de Git54
6.1 Exclusion des fichiers55
6.2 Statut de votre dépôt Git56
6.3 Gestion des branches57
6.4 Marqueurs de conflits58
6.5 Raccourcis clavier59
7. Conclusion59
Chapitre 3
Organisation Agile
1. Introduction61
2. Organiser votre projet62
3. Organiser vos équipes63
3.1 Qui contribue ?65
3.2 Qui valide ?65
3.3 Qui monte le produit en version ?66
4. Collaborer68
4.1 Brancher68
4.2 Valider les merge requests (MR)73
4.3 Gérer les conflits78
5. Conclusion83
Chapitre 4
Versionner la base de données
1. Introduction85
2. Création de la base de données90
2.1 Création de la base SQL Azure90
3. Paramétrage d'AliaSQL92
4. Configuration du projet97
5. Script SQL initial98
Chapitre 5
Intégrer en continu
1. Introduction101
2. Mise en place d'un système CI : GoCD105
3. Installation et paramétrage106
3.1 Présentation de Docker106
3.2 Installation de GoCD110
4. Intégrer en continu avec GoCD114
4.1 Architecture115
4.2 Pipeline115
4.3 Mise en place des scripts CI initiaux116
4.4 Scripting du projet Database119
4.5 Scripting du projet siteWEB127
5. Configuration d'un pipeline d'intégration continue : Projet web130
6. Configuration d'un pipeline d'intégration continue : Projet Database135
6.1 Configuration des agents avec WinRM136
6.2 Le Zéro « hard coded » : variables d'environnement146
6.3 Lier les pipelines148
6.4 Configuration de GoCD149
7. Organiser l'équipe autour du build150
7.1 Avant le commit151
7.2 Rouge : on arrête tout !152
7.3 Conclusion154
Chapitre 6
Management de projet agile : Redmine
1. Introduction155
2. Installation de Redmine avec Docker156
3. Paramétrage des projets158
4. Paramétrage des groupes159
5. Paramétrage des utilisateurs160
6. Gestion des rôles162
7. Gestion des trackers162
8. Gestion des catégories163
9. Gestion des statuts de demandes164
10. Gestion des versions165
11. Gestion des demandes166
12. Suivi des demandes170
13. Conclusion171
Chapitre 7
Tester en continu : tests unitaires
1. Introduction173
2. TDD : Test driven development176
3. Exemple de mise en oeuvre177
4. Création du stage tests unitaires sur GoCD194
5. Conclusion200
Chapitre 8
Tester en continu : tests d'intégration
1. Introduction201
2. Injection de dépendances : par l'exemple203
3. Test d'intégration : Codage213
4. Test d'intégration : Scripting Cake216
5. Création du stage tests d'intégration sur GoCD218
6. Conclusion220
Chapitre 9
Tester en continu : tests d'acceptation
1. Introduction223
2. BDD : Behavior Data Driven225
3. Écrire les user stories : langage Gherkin227
4. Déroulé d'un test d'acceptation229
4.1 Configuration de Visual Studio229
4.2 Création d'un fichier .feature232
4.3 Implémentation des steps de définition234
4.4 Écriture des spécifications Gherkin238
4.5 Scripting Cake238
5. Création du stage tests d'acceptation sur GoCD246
6. Conclusion248
Chapitre 10
Tester en continu : tests d'interface
1. Introduction249
2. Configuration du projet Visual Studio : Selenium251
3. Test d'interface : codage254
4. Test d'interface : Scripting Cake255
5. Création du stage tests d'interface sur GoCD259
6. Conclusion261
Chapitre 11
Gestion des fonctionnalités
1. Introduction263
2. Feature Toggle264
3. Présentation de Pickles265
4. Scripting CI : Installation de Pickles265
5. Création d'un pipeline lié sur GoCD272
6. Création d'artifacts273
7. Conclusion279
Chapitre 12
Déploiement en continu
1. Introduction281
2. Présentation d'un système de déploiement continu284
2.1 Installation et paramétrage : Octopus Deploy285
2.2 Création des environnements289
2.3 Configuration d'un tentacle Octopus290
2.4 Paramétrage du projet siteWEB293
2.5 Paramétrage des variables des projets295
2.6 Paramétrage du projet DB299
2.7 Implémentation des variables projets dans Visual Studio301
2.8 Paramétrage des Tenants305
3. Connecter le CI au CD306
3.1 Création du scripting de déploiement cake : Projet DB306
3.2 Création des stages GoCD : Projet DB312
3.3 Création du scripting de déploiement cake : projet site WEB315
3.4 Création des stages GoCD : projet site WEB316
4. Planifier318
4.1 Gestion des lifecycles318
4.2 Planification des releases320
4.3 Dépliement manuel d'une release : en un clic !321
4.4 Release Notes322
4.5 Déploiement des Tenants324
5. Conclusion325
Chapitre 13
Tooling
1. Introduction327
2. Exercice pratique : mise à jour automatique GoCD328
2.1 Paramétrage du projet sous GitLab-CE330
2.2 Création automatique d'un agent GoCD331
2.3 Paramétrage du pipeline sous GoCD332
2.4 Paramétrage Cake.net (mono) et git : Dockerfile333
2.5 Paramétrage du déploiement sous Octopus340
3. Conclusion343
Chapitre 14
Allez plus loin !
1. Introduction345
2. Logs en continu346
3. Alerter en continu347
4. Jobs en continu347
5. Conclusion348
Index349