M
i
c
r
o
s
o
f
t
M
V
P
Microsoft MVP
& MCT
Architecte d'intégration des solutions infonuagique
Microsoft MVP en Technologies de développement
Docker Captain
Membre de dotnetfoundation
Blogger and Technical writer
Auteur de livres
Rebai Hamida – Medium
Hamida Rebai Trabelsi | LinkedIn
Rebaï Hamida – YouTube
@rebaihamida
Agenda
• .NET 8 nouveautés (.NET Conf 2023 Keynote - Welcome to .NET 8)
• Architecture Microservices
• Conteneurs et Docker
• Vue d'ensemble Conteneur Docker et image
• Dockerfile
• GitHub Actions
• Demo
.NET 8 nouveautés (.NET Conf 2023 Keynote
- Welcome to .NET 8)
.NET Aspire est une pile technique orientée et prête pour
l’infonuagique pour la construction d'applications
distribuées, observables et prêtes pour la production.
• ASP.NET Core 8
Améliorations de Performance Blazor et WebAssembly Développement Full Stack
Améliorations de minimal API Sécurité Renforcée Support Cloud-Natif et Microservices
Outils de Développement et
d'Intégration Continue
Améliorations dans
Entity Framework Core
Meilleur Support pour le Développement Mobile
et de Bureau
Architecture Microservices
• Approche modèle pour les applications critiques distribuées et de
grande taille ou complexes qui reposent sur plusieurs sous-systèmes
indépendants sous la forme de services autonomes.
• L'application est conçue comme un ensemble de services pouvant être
développés, testés, versionnés, déployés et mis à l'échelle.
App1
S1 S2 S3
App 2
S4 S5 S6
S4 S6
S3 S2
S1
S5 S3
S2 S5
S1 S4
https://microservices.io/
Microservices ≠ Conteneur
Microservices et conteneurs
Avec les Microservices, chaque partie de l'application est déployée en tant que composant entièrement
autonome.
Approche d'application monolithique Approche d'application basée sur les Microservices
App1
S1 S2 S3
App 2
S4 S5 S6
S3 S2
S1
S4 S6
S5 S3
S2 S5
S1 S4
App1
Microservices et conteneurs
21%
63%
16%
Utilisation des Microservices
Oui
Non
Pas d'information
Containers and Docker
Docker Host
App 1 App 2
Service 1 Service 2
OS on a VM or a Server
Vue d'ensemble Conteneur Docker et image
Conteneur Docker
● Environnement d'exécution virtualisé
utilisé dans le développement
d'applications.
● Peut utiliser une seule machine,
partager son noyau et virtualiser le
système d'exploitation pour exécuter
des processus plus isolés.
● Les conteneurs Docker sont légers.
Image Docker
● Snapshot dans d'autres types
d'environnements de VM.
● Enregistrement d'un conteneur Docker à un
moment précis. L'image ne peut pas être
modifiée, elle peut être dupliquée,
partagée ou supprimée.
Conteneur et image
Dockerfile Docker Image
Conteneur Docker
Compiler
(Build)
Exécuter (Run)
Dockerfile
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
1
COPY ["mysolution.csproj", « mysolution/"]
RUN dotnet restore « mysolution.csproj" 2
COPY . .
WORKDIR "/src/mysolution"
RUN dotnet build “mysolution.csproj" -c Release -o /app/build
3
Spécifier une
image
Copier le
fichier de projet
Copier et générer
Créer une image d'exécution
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
COPY --from=build /app/publish .
4
Dockerfile
Lancer l’application
5
ENTRYPOINT ["dotnet", « yousolution.dll"]
Compiler votre image & démarrer notre conteneur
docker build -t yoursolutionimage:1.0 .
Créer et exécuter votre conteneur
docker run –d -p 8080:80 -ti –name myapp --rm yousolutionimage:1.0
Pour optimiser l’exécution (publish)
Use : -no-restore and p:PublishTrimmed, p:PublishReadyToRun,
p:PublishSingleFile
Déploiement des conteneurs
(Monolithic applications)
Legacy
GitHub Actions
• Plateforme CI/CD Complète : GitHub Actions est une solution intégrale pour l'intégration
continue (CI) et la livraison continue (CD).
• Automatisation des Pipelines : Permet d'automatiser les processus de génération, de test et de
déploiement de logiciels.
• Workflows pour Demandes de Tirage : Crée et teste automatiquement chaque demande de
tirage (pull request) sur le dépôt, et peut déployer les demandes de tirage fusionnées en
production.
• Au-delà de DevOps : Permet l'exécution de workflows pour divers événements dans le dépôt, pas
seulement pour les opérations de développement.
• Gestion d'Événements du Dépôt : Capable de lancer des workflows pour des actions comme
l'ajout d'étiquettes automatiques lors de la création de problèmes dans le dépôt.
• Flexibilité d'Exécution : Offre des machines virtuelles sous Linux, Windows et macOS pour
exécuter les workflows.
• Exécuteurs Personnalisés : Possibilité d'héberger des exécuteurs auto-hébergés dans un centre
de données ou une infrastructure cloud personnels.
Composants de GitHub Actions
Événement Exécuteur 1 Exécuteur 2
Travail 1 Travail 2
Étape 1: exécuter une action
Étape 2: exécuter un script
Étape 3: exécuter un script
Étape 1: exécuter une action
Étape 1: exécuter une action
Étape 2: exécuter un script
Étape 3: exécuter un script
Explorer le flux des actions
Actions
Événements
Flux de travail
Travaux
Déclenchent
Contient
Utilisent
Exemple de Workflow
Name : est le nom du workflow. Il est facultatif, mais fortement recommandé. Il apparaît à
plusieurs endroits dans l’interface utilisateur de GitHub.
On : est l’événement ou la liste des événements qui déclenchent le workflow.
Jobs : est la liste des travaux à exécuter. Les workflows peuvent contenir un ou plusieurs travaux.
Runs-on : indique aux actions quel exécuteur utiliser.
Steps : est la liste des étapes du travail. Les étapes d’un travail s’exécutent sur le même exécuteur.
Uses : indique aux actions quelle action prédéfinie doit être récupérée. Par exemple,
vous pouvez avoir une action qui installe node.js.
Run : indique au travail d’exécuter une commande sur l’exécuteur. Par exemple, vous pouvez
exécuter une commande NPM.
Démonstration
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf

Configurer GitHub Actions avec Docker et DotNET 8.pdf

  • 2.
    M i c r o s o f t M V P Microsoft MVP & MCT Architected'intégration des solutions infonuagique Microsoft MVP en Technologies de développement Docker Captain Membre de dotnetfoundation Blogger and Technical writer Auteur de livres Rebai Hamida – Medium Hamida Rebai Trabelsi | LinkedIn Rebaï Hamida – YouTube @rebaihamida
  • 3.
    Agenda • .NET 8nouveautés (.NET Conf 2023 Keynote - Welcome to .NET 8) • Architecture Microservices • Conteneurs et Docker • Vue d'ensemble Conteneur Docker et image • Dockerfile • GitHub Actions • Demo
  • 4.
    .NET 8 nouveautés(.NET Conf 2023 Keynote - Welcome to .NET 8) .NET Aspire est une pile technique orientée et prête pour l’infonuagique pour la construction d'applications distribuées, observables et prêtes pour la production. • ASP.NET Core 8 Améliorations de Performance Blazor et WebAssembly Développement Full Stack Améliorations de minimal API Sécurité Renforcée Support Cloud-Natif et Microservices Outils de Développement et d'Intégration Continue Améliorations dans Entity Framework Core Meilleur Support pour le Développement Mobile et de Bureau
  • 5.
    Architecture Microservices • Approchemodèle pour les applications critiques distribuées et de grande taille ou complexes qui reposent sur plusieurs sous-systèmes indépendants sous la forme de services autonomes. • L'application est conçue comme un ensemble de services pouvant être développés, testés, versionnés, déployés et mis à l'échelle. App1 S1 S2 S3 App 2 S4 S5 S6 S4 S6 S3 S2 S1 S5 S3 S2 S5 S1 S4 https://microservices.io/
  • 6.
  • 7.
    Microservices et conteneurs Avecles Microservices, chaque partie de l'application est déployée en tant que composant entièrement autonome. Approche d'application monolithique Approche d'application basée sur les Microservices App1 S1 S2 S3 App 2 S4 S5 S6 S3 S2 S1 S4 S6 S5 S3 S2 S5 S1 S4 App1
  • 8.
    Microservices et conteneurs 21% 63% 16% Utilisationdes Microservices Oui Non Pas d'information
  • 9.
    Containers and Docker DockerHost App 1 App 2 Service 1 Service 2 OS on a VM or a Server
  • 10.
    Vue d'ensemble ConteneurDocker et image Conteneur Docker ● Environnement d'exécution virtualisé utilisé dans le développement d'applications. ● Peut utiliser une seule machine, partager son noyau et virtualiser le système d'exploitation pour exécuter des processus plus isolés. ● Les conteneurs Docker sont légers. Image Docker ● Snapshot dans d'autres types d'environnements de VM. ● Enregistrement d'un conteneur Docker à un moment précis. L'image ne peut pas être modifiée, elle peut être dupliquée, partagée ou supprimée.
  • 11.
    Conteneur et image DockerfileDocker Image Conteneur Docker Compiler (Build) Exécuter (Run)
  • 12.
    Dockerfile FROM mcr.microsoft.com/dotnet/sdk:7.0 ASbuild WORKDIR /src 1 COPY ["mysolution.csproj", « mysolution/"] RUN dotnet restore « mysolution.csproj" 2 COPY . . WORKDIR "/src/mysolution" RUN dotnet build “mysolution.csproj" -c Release -o /app/build 3 Spécifier une image Copier le fichier de projet Copier et générer Créer une image d'exécution FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base WORKDIR /app COPY --from=build /app/publish . 4
  • 13.
    Dockerfile Lancer l’application 5 ENTRYPOINT ["dotnet",« yousolution.dll"] Compiler votre image & démarrer notre conteneur docker build -t yoursolutionimage:1.0 . Créer et exécuter votre conteneur docker run –d -p 8080:80 -ti –name myapp --rm yousolutionimage:1.0 Pour optimiser l’exécution (publish) Use : -no-restore and p:PublishTrimmed, p:PublishReadyToRun, p:PublishSingleFile
  • 14.
  • 15.
    GitHub Actions • PlateformeCI/CD Complète : GitHub Actions est une solution intégrale pour l'intégration continue (CI) et la livraison continue (CD). • Automatisation des Pipelines : Permet d'automatiser les processus de génération, de test et de déploiement de logiciels. • Workflows pour Demandes de Tirage : Crée et teste automatiquement chaque demande de tirage (pull request) sur le dépôt, et peut déployer les demandes de tirage fusionnées en production. • Au-delà de DevOps : Permet l'exécution de workflows pour divers événements dans le dépôt, pas seulement pour les opérations de développement. • Gestion d'Événements du Dépôt : Capable de lancer des workflows pour des actions comme l'ajout d'étiquettes automatiques lors de la création de problèmes dans le dépôt. • Flexibilité d'Exécution : Offre des machines virtuelles sous Linux, Windows et macOS pour exécuter les workflows. • Exécuteurs Personnalisés : Possibilité d'héberger des exécuteurs auto-hébergés dans un centre de données ou une infrastructure cloud personnels.
  • 16.
    Composants de GitHubActions Événement Exécuteur 1 Exécuteur 2 Travail 1 Travail 2 Étape 1: exécuter une action Étape 2: exécuter un script Étape 3: exécuter un script Étape 1: exécuter une action Étape 1: exécuter une action Étape 2: exécuter un script Étape 3: exécuter un script
  • 17.
    Explorer le fluxdes actions Actions Événements Flux de travail Travaux Déclenchent Contient Utilisent
  • 18.
    Exemple de Workflow Name: est le nom du workflow. Il est facultatif, mais fortement recommandé. Il apparaît à plusieurs endroits dans l’interface utilisateur de GitHub. On : est l’événement ou la liste des événements qui déclenchent le workflow. Jobs : est la liste des travaux à exécuter. Les workflows peuvent contenir un ou plusieurs travaux. Runs-on : indique aux actions quel exécuteur utiliser. Steps : est la liste des étapes du travail. Les étapes d’un travail s’exécutent sur le même exécuteur. Uses : indique aux actions quelle action prédéfinie doit être récupérée. Par exemple, vous pouvez avoir une action qui installe node.js. Run : indique au travail d’exécuter une commande sur l’exécuteur. Par exemple, vous pouvez exécuter une commande NPM.
  • 19.