Skip to content

Commit c7ad9da

Browse files
authored
Update README.md
1 parent 8ce54b7 commit c7ad9da

1 file changed

Lines changed: 98 additions & 14 deletions

File tree

README.md

Lines changed: 98 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,6 @@ dotnet run --project MyWebApi/MyWebApi.csproj
7575
> il se peut que ce ne soit pas aussi facile ;)
7676
---
7777

78-
Parfait ! Voici une version mise à jour de la **Partie 3**, plus pédagogique, en proposant aux étudiants d’utiliser un **template GitHub Actions** pour démarrer plus facilement.
79-
80-
---
81-
8278
## 🔐 Partie 3 – Configuration des secrets GitHub & création du pipeline
8379

8480
### 🔑 Étape 1 – Ajouter les secrets GitHub
@@ -124,19 +120,14 @@ GitHub propose des **modèles de workflow**. Pour créer votre pipeline :
124120
`https://webapi-votreprenom.azurewebsites.net`
125121

126122
---
127-
128-
Parfait ! On va donc compléter la **Partie 6** avec un **workflow GitHub Actions** qui :
123+
Compléter la **Partie 6** avec un **workflow GitHub Actions** qui :
129124

130125
1. Construit l’image Docker,
131126
2. La pousse sur Docker Hub,
132127
3. Déclenche ainsi la mise à jour automatique de la Web App (via le déploiement continu activé sur Azure).
133128

134129
---
135130

136-
Voici la **nouvelle version de la Partie 6**, mise à jour avec un `workflow` :
137-
138-
---
139-
140131
## 🐳 Partie 5 – Déploiement via une image Docker
141132

142133
### 🎯 Objectif
@@ -241,10 +232,6 @@ jobs:
241232
2. Allez dans **Configuration > Variables d'application**
242233
- Ajoutez : `WEBSITES_PORT = 8080`
243234

244-
---
245-
246-
Souhaites-tu que j'intègre directement cette version complète dans le `.md` ?
247-
248235
## ⭐ Bonus (Facultatif)
249236

250237
- Ajouter un badge GitHub Actions dans le `README.md`
@@ -253,3 +240,100 @@ Souhaites-tu que j'intègre directement cette version complète dans le `.md` ?
253240
- Ajouter un slot de préproduction sur Azure
254241
- Utiliser un environnement GitHub pour déploiement conditionnel
255242
- Separer en 2 pipeline CI.yml et CD.yml
243+
244+
Bien sûr, voici la version mise à jour du TP avec la précision que le runtime (.NET 8) doit être envoyé **en paramètre** à l’étape 3, pour que les étudiants l’utilisent dans leur workflow principal :
245+
246+
---
247+
248+
# TP : Déploiement automatisé d’une Web App Azure avec GitHub Actions
249+
250+
Durée estimée : 3 heures
251+
252+
---
253+
254+
## Objectif
255+
256+
Automatiser la création d’une Web App Azure (si elle n’existe pas) et le déploiement d’une application .NET 8 via GitHub Actions.
257+
258+
---
259+
260+
## Prérequis
261+
262+
* Installer la CLI Azure (`az`) : [Installation CLI Azure](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli)
263+
* Avoir un compte Azure avec un abonnement actif
264+
* Configurer un service principal Azure et récupérer le JSON des credentials pour le secret `AZURE_CREDENTIALS` dans GitHub
265+
* Se connecter à Azure en local avec `az login` (ou `az login --use-device-code` si besoin)
266+
267+
---
268+
269+
## Étapes du TP
270+
271+
### Étape 1 : Connexion à Azure
272+
273+
* En local, connectez-vous à Azure via la CLI :
274+
275+
```bash
276+
az login
277+
```
278+
279+
ou
280+
281+
```bash
282+
az login --use-device-code
283+
```
284+
* Créez un service principal si ce n’est pas déjà fait, et exportez les credentials JSON dans un secret GitHub nommé `AZURE_CREDENTIALS`
285+
286+
---
287+
288+
### Étape 2 : Création du workflow `verify-create-webapp.yml`
289+
290+
* Créez un fichier `.github/workflows/verify-create-webapp.yml`
291+
* Ce workflow doit :
292+
293+
* Vérifier si la Web App Azure existe dans un groupe de ressources donné
294+
* Si elle n’existe pas, la créer avec le runtime passé en paramètre (ex : `.NET 8`)
295+
* Récupérer le profil de publication à la volée (sans écrire sur disque)
296+
* Retourner ce profil de publication en output du workflow
297+
* Ce workflow sera appelé via un `workflow_call` dans un autre pipeline
298+
299+
---
300+
301+
### Étape 3 : Création du workflow principal
302+
303+
* Créez un fichier `.github/workflows/deploy-webapp.yml`
304+
* Ce workflow doit :
305+
306+
* Recevoir en paramètre le runtime cible (ex : `.NET 8`)
307+
* Appeler le workflow `verify-create-webapp.yml` en lui passant ce runtime
308+
* Récupérer en sortie le profil de publication retourné par le workflow appelé
309+
* Utiliser ce profil pour publier une application .NET compilée
310+
* Vérifier que l’URL de base retourne bien `"Hello World"` et afficher un avertissement sinon
311+
312+
---
313+
314+
### Étape 4 : Bonus (à explorer)
315+
316+
* Ajouter une étape de cleanup qui s’exécute toujours, même en cas d’échec des étapes précédentes
317+
* Améliorer la gestion des erreurs et des logs dans les workflows
318+
* Étendre la vérification pour supporter plusieurs slots de déploiement
319+
320+
---
321+
322+
## Remarques importantes
323+
324+
* Le profil de publication contient les informations nécessaires pour déployer l’application.
325+
* En le retournant en output de votre workflow appelé, vous évitez de devoir le stocker sur disque ou dans des secrets, ce qui simplifie le pipeline.
326+
* Faites attention à la taille des outputs dans GitHub Actions (limite \~64Ko).
327+
* La CLI Azure sera votre principal outil pour manipuler les ressources Azure dans ce TP.
328+
* Envoyer le runtime en paramètre permet de rendre le workflow flexible et réutilisable.
329+
330+
---
331+
332+
## Questions pour guider la réflexion
333+
334+
* Comment passer un paramètre (runtime) à un workflow appelé via `workflow_call` ?
335+
* Comment récupérer un output de ce workflow appelé ?
336+
* Comment utiliser la CLI Azure pour créer une Web App avec un runtime spécifique ?
337+
* Comment exploiter le profil de publication pour publier sans écrire de fichier sur disque ?
338+
339+

0 commit comments

Comments
 (0)