
Github Actions 2.0 : Déploiement Continu sur Azure
Cet article est le second d’une série sur Github Actions et la mise en place d’une chaîne CI/CD.
- Github Actions 2.0 pour une CI .NET Core
- Github Actions 2.0 : Déploiement Continu sur Azure
- Github Actions : Azure CLI & Service Principal
Aujourd’hui, nous verrons comment créer un pipeline de déploiement d’applications sur Azure PaaS.
Vous pourrez même afficher un petit badge ;)
Préparation
Tout d’abord, il faut avoir Github Actions activé. Oui, je l’ai déjà dit lorsque l’on a mis en place l’intégration continue mais bon… Encore une fois, allez faire votre demande d’accès rapidement ou attendez le 13 novembre pour la disponibilité générale.
Il vous faudra également avoir packagé votre application et créé un artifact. Pour cela je vous invite à revenir à mon article précédent, et notamment la section Package & Artifacts.
Vous devriez voir votre artifact dans la partie en haut à droite de vos logs de workflow :
Azure Web App
Pour déployer notre application dans une Web App Azure, il nous faut … ? Allez je vous laisse encore quelques sencondes… une Web App?! Ouiiii! Bravo !
Provisionnement
Je ne vous montrerai pas ici comment provisionner une Web App mais je peux vous fournir un lien vers la documentation App Service.
Pour les allergiques du clic ou afficionados de l’automatisation poussée, je vous renvoie vers le blog post de mon collègue Wilfried qui a déjà expliqué comment déployer une infra via ARM depuis Github Actions.
Bref, dans tous les cas, on partira ici du principe que votre Web App est provisionnée, et que votre artifact s’appelle webapp.
Publishing Profile
Pour déployer votre Web App, vous aurez besoin du profil de déploiement. Comme son nom l’indique, il contient les informations nécessaires pour le déploiement, telles que l’url, les identifiants de connexion, etc.
Ouvrez le portail Azure et naviguez jusqu’à votre Web App.
Dans la barre de commandes en haut, cliquez sur “Get publish profile”.
Une fois le fichier téléchargé, ouvrez-le avec un éditeur de texte et copiez le contenu du fichier XML :
<publishData><publishProfile profileName="actionsSampleApp - Web Deploy" publishMethod\="MSDeploy" ...
Retournons maintenant dans notre repository Github.
Ouvrez le menu Settings, puis dans le menu de gauche, ouvrez le panneau Secrets.
Cliquez ensuite sur Add a new secret et collez le contenu de votre publish profile.
Vous devriez donc avoir un nouveau secret dans votre repo :
Passons ensuite au workflow et aux étapes de déploiement.
Workflow de déploiement
Nous reprendrons ici le fichier workflow que nous avions commencé dans l’article sur l’intégration continue.
/.github/workflows/{workflow_name}.yml
Dans ce fichier, nous allons ajouter des étapes de déploiement, en commençant par déclarer un job que nous appelerons “deploy” et qui nécessite l’éxécution du job “build” au préalable.
name: ASP.NET Core CI
on: [push]
jobs:
build:
...
deploy:
needs: build
runs-on: windows-latest
La première étape consiste à récupérer le package de notre application, c’est-à-dire l’artifact. Pour cela, nous utiliserons l’action download-artifact en lui précisant le nom de l’artifact webapp.
steps:
- name: Download Artifacts
uses: actions/download-artifact@master
with:
name: webapp
Nous voici enfin à l’étape tant attendue de déploiement.
Nous utiliserons ici l’action appservice-actions/webapp. Il faudra préciser à l’action le nom de la Web App, le nom du package, ainsi que le nom du Secret au format :
secrets.{secret_name}.
steps:
- ...
- name: Deploy to Azure App Service
uses: azure/appservice-actions/webapp@master
with:
app-name: actionsSampleApp
package: webapp
publish-profile: ${{ secrets.webappPublishProfile }}
Il ne vous restera alors qu’à démarrer manuellement votre pipeline ou à attendre votre prochain commit sur master, via une PR évidemment ;)
Conclusion
Dans cet article, nous avons découvert comment utiliser Github Actions 2.0 pour mettre en place un pipeline de déploiement continu en quelques minutes.
Dans un prochain article, nous découvrirons des fonctionnalités avancées de Github Actions pour Azure.
A bientôt !