Vous en avez marre du "ça marche chez moi", "mais je comprend pas, j'ai tout commit" ou encore "c'est pas ma faute" ? Automatisez les étapes qui suivent le développement avec le déploiement continu. Voici un retour d'expérience sur comment simplifier et faire que tout se déroule bien jusqu'à la production avec du code .net core.
Présentation donnée au meetup Alt.net France sur le déploiement continu, le 23 novembre 2017
3. Quésaco
Continuous : forming an unbroken whole; without interruption
integration :
The coordination of processes
delivery :
The action of delivering letters, packages … babies
deployment :
The action of bringing resources into effective action
23/11/2017 [3]@EChaffraix
5. Objectif
• Valider le code de chaque dev
• Valider l’application (au mieux)
• Créer un workflow que chacun peut exécuter
• Limiter l’intervention humaine
23/11/2017 [5]@EChaffraix
6. V1 : Les outils
• Teamcity
• Azure App service
• 2 app services : website et services
• 2 Slots : master, staging (pré prod)
• Azure CLI
• 2 Processus
• Livrer en pré prod
• Passer en prod
23/11/2017 [6]@EChaffraix
7. V1 : Livrer en pré prod
1. dotnet restore
2. Ajout de la version
3. dotnet build
4. dotnet test --logger:trx
5. Publier les services : dotnet publish + gulp + FTP
6. Publier le site (la même)
7. Requête sur le site
23/11/2017 [7]@EChaffraix
8. V1 : Passage en PROD
azure login -q
23/11/2017 [8]
info: Executing command login
info: Authenticating...
info: To sign in, use a web browser to open the page https://aka.ms/devicelogin
and enter the code DMW9WUB25 to authenticate.
azure config mode asm
azure site swap prod-services -q
azure site swap prod-website -q
@EChaffraix
9. V1 : Les problèmes
• La durée du build
23/11/2017 [9]@EChaffraix
10. V1 : Les problèmes
• La durée du build
23/11/2017 [10]@EChaffraix
11. V1 : Les problèmes
• Un FAIL aléatoire :
server said: Access is denied
• Switcher les environments : quid des logs
• Rollback
• Les branches
23/11/2017 [11]@EChaffraix
12. V2 : L’idée
• Réduire le temps
• Généraliser les environnements
• Valider à chaque instant
23/11/2017 [12]@EChaffraix
14. 1. dotnet restore
2. Ajout de la version
3. dotnet build
4. dotnet test --logger:trx
5. Publier les services : dotnet publish + gulp + FTP
6. Publier le site (la même)
7. Requête sur le site
23/11/2017 [14]@EChaffraix
V1 : Livrer en pré prod
15. 1. dotnet restore
2. Ajout de la version
3. dotnet build
4. dotnet test --logger:trx
5. Publier les services : dotnet publish + gulp + FTP
6. Publier le site (la même)
7. Requête sur le site
23/11/2017 [15]@EChaffraix
V2 :
Packager
16. 1. dotnet restore
2. Ajout de la version
3. dotnet build
4. dotnet test --logger:trx
5. Publier les services : dotnet publish + gulp
6. Publier le site (la même)
7. Requête sur le site
23/11/2017 [16]
V2 :
Packager
+ TAR
@EChaffraix
17. 1. dotnet restore
2. Ajout de la version
3. dotnet build
4. dotnet test --logger:trx
5. Publier les services : dotnet publish + gulp
6. Publier le site (la même)
23/11/2017 [17]
V2 :
Packager
+ TAR
7. Mettre les archives dans un répertoire dédié
@EChaffraix
18. VNext
• Ajouter des tests comportementaux
• Automatiser la création nouveaux environnments
• Gérer les montées de version de la base de données
• Dupliquer un environnement
23/11/2017 [18]@EChaffraix
19. Ce qu’il faut retenir
• Automatiser pour éviter l’erreur humaine
• Créer un processus, les outils importent peu
• Lancer localement ce processus
• Avancer étape par étape
23/11/2017 [19]@EChaffraix