You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+98-14Lines changed: 98 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -75,10 +75,6 @@ dotnet run --project MyWebApi/MyWebApi.csproj
75
75
> il se peut que ce ne soit pas aussi facile ;)
76
76
---
77
77
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
-
82
78
## 🔐 Partie 3 – Configuration des secrets GitHub & création du pipeline
83
79
84
80
### 🔑 Étape 1 – Ajouter les secrets GitHub
@@ -124,19 +120,14 @@ GitHub propose des **modèles de workflow**. Pour créer votre pipeline :
124
120
`https://webapi-votreprenom.azurewebsites.net`
125
121
126
122
---
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 :
129
124
130
125
1. Construit l’image Docker,
131
126
2. La pousse sur Docker Hub,
132
127
3. Déclenche ainsi la mise à jour automatique de la Web App (via le déploiement continu activé sur Azure).
133
128
134
129
---
135
130
136
-
Voici la **nouvelle version de la Partie 6**, mise à jour avec un `workflow` :
137
-
138
-
---
139
-
140
131
## 🐳 Partie 5 – Déploiement via une image Docker
141
132
142
133
### 🎯 Objectif
@@ -241,10 +232,6 @@ jobs:
241
232
2. Allez dans **Configuration > Variables d'application**
242
233
- Ajoutez : `WEBSITES_PORT = 8080`
243
234
244
-
---
245
-
246
-
Souhaites-tu que j'intègre directement cette version complète dans le `.md` ?
247
-
248
235
## ⭐ Bonus (Facultatif)
249
236
250
237
- 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` ?
253
240
- Ajouter un slot de préproduction sur Azure
254
241
- Utiliser un environnement GitHub pour déploiement conditionnel
255
242
- 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 ?
0 commit comments