Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Vous pouvez utiliser GitHub Actions pour créer un workflow de développement logiciel automatisé. Vous pouvez utiliser l’action Azure Web Deploy pour automatiser votre flux de travail et déployer des conteneurs personnalisés sur Azure App Service.
Un workflow est défini par un fichier YAML (.yml) situé dans le chemin /.github/workflows/ de votre dépôt. Cette définition contient les étapes et les paramètres définissant le workflow.
Pour un flux de travail de conteneur App Service, le fichier comporte trois sections :
| Section | Tâches |
|---|---|
| Authentification | 1. Récupérez un principal de service ou un profil de publication. 2. Créez un secret GitHub. |
| Créer | 1. Créez l’environnement. 2. Générez l’image conteneur. |
| Déployer | 1. Déployez l’image conteneur. |
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Un compte GitHub. Si vous n’en avez pas, inscrivez-vous gratuitement. Vous devez disposer du code dans un référentiel GitHub pour le déployer sur Azure App Service.
- Un registre de conteneurs fonctionnel et l’application Azure App Service pour les conteneurs. Cet exemple utilise Azure Container Registry. Veillez à terminer le déploiement complet sur Azure App Service pour les conteneurs. Contrairement aux applications web standard, les applications web pour conteneurs n’ont pas de page de destination par défaut. Publiez le conteneur pour avoir un exemple fonctionnel.
- Effectuez ces tâches : Découvrez comment créer une application Node.js conteneurisée à l’aide de Docker, envoyer (push) l’image conteneur vers un registre, puis déployer l’image sur Azure App Service.
Générer les informations d’identification du déploiement
Nous vous recommandons de vous authentifier auprès d’Azure App Services pour GitHub Actions à l’aide d’OpenID Connect. Vous pouvez également vous authentifier avec un principal de service ou un profil de publication.
Pour vous authentifier auprès d’Azure, enregistrez les informations d’identification de votre profil de publication ou votre principal de service comme secret GitHub. Vous accédez au secret dans votre flux de travail.
Un profil de publication est une information d’identification au niveau de l’application. Configurez votre profil de publication en tant que secret GitHub.
Accédez à App Service dans le portail Azure.
Dans le volet Vue d’ensemble , sélectionnez Obtenir un profil de publication.
Remarque
À compter d’octobre 2020, les utilisateurs doivent définir le paramètre d’application pour les applications
WEBSITE_WEBDEPLOY_USE_SCMtrueweb Linux avant de télécharger le fichier. Pour savoir comment configurer les paramètres courants de l’application web, accédez à Configurer une application App Service dans le portail Azure.Enregistrez le fichier téléchargé. Vous utilisez le contenu du fichier pour créer un secret GitHub.
Configurer le secret GitHub pour l’authentification
Dans GitHub, accédez à votre référentiel. Sélectionnez Paramètres>Sécurité>Secrets et variables>Actions>Nouveau secret de référentiel.
Pour utiliser les informations d’identification au niveau de l’application, collez le contenu du fichier de profil de publication téléchargé dans le champ de valeur du secret. Nommez le secret AZURE_WEBAPP_PUBLISH_PROFILE.
Lorsque vous configurez votre flux de travail GitHub, utilisez le AZURE_WEBAPP_PUBLISH_PROFILE secret dans l’action déployer Azure Web App. Exemple :
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Configurer des secrets GitHub pour votre registre
Définissez les secrets à utiliser grâce à l’action Docker Login. L’exemple de cet article utilise Azure Container Registry pour le registre de conteneurs.
Accédez à votre conteneur dans le portail Azure ou dans Docker et copiez le nom d’utilisateur et le mot de passe. Vous pouvez trouver le nom d’utilisateur et le mot de passe d’Azure Container Registry sur le portail Azure sous Paramètres>Clés d’accès pour votre registre.
Définissez un nouveau secret pour le nom d’utilisateur du registre nommé
REGISTRY_USERNAME.Définissez un nouveau secret pour le mot de passe du registre nommé
REGISTRY_PASSWORD.
Générer l’image de conteneur
L’exemple suivant montre une partie du flux de travail qui génère une image Docker Node.js. Utilisez Docker Login pour vous connecter à un registre de conteneurs privé. Cet exemple utilise Azure Container Registry, mais la même action fonctionne pour les autres registres.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Vous pouvez également utiliser la connexion Docker pour vous connecter à plusieurs registres de conteneurs en même temps. Cet exemple comprend deux nouveaux secrets GitHub pour l’authentification avec docker.io. L’exemple suppose qu’il existe un Dockerfile au niveau racine du registre.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
L’exemple suivant montre une partie du flux de travail qui crée une image Windows Docker. Utilisez Docker Login pour vous connecter à un registre de conteneurs privé. Cet exemple utilise Azure Container Registry, mais la même action fonctionne pour les autres registres.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Vous pouvez également utiliser la connexion Docker pour vous connecter à plusieurs registres de conteneurs en même temps. Cet exemple comprend deux nouveaux secrets GitHub pour l’authentification avec docker.io. L’exemple suppose qu’il existe un Dockerfile au niveau racine du registre.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Déployer sur un conteneur App Service
Pour déployer votre image sur un conteneur personnalisé dans App Service, utilisez l’action azure/webapps-deploy@v2. Cette action a sept paramètres :
| Paramètre | Explication |
|---|---|
app-name |
(Obligatoire) Nom de l’application App Service. |
publish-profile |
(Facultatif) Utilisé avec des applications web (Windows et Linux) et des conteneurs d’applications web (Linux). Scénario multiconteneur non pris en charge. Publiez les contenus du fichier de profil \*.publishsettings avec des secrets de Web Deploy. |
slot-name |
(Facultatif) Entrez un emplacement existant autre que l’emplacement de production. |
package |
(Facultatif) Utilisé uniquement avec les applications web : chemin d’accès au package ou au dossier.
\*.zip, \*.war, ou \*.jar, un dossier à déployer. |
images |
(Obligatoire) Utilisé uniquement avec les conteneurs d’applications web : spécifiez le nom complet de l’image conteneur. Par exemple, myregistry.azurecr.io/nginx:latest ou python:3.12.12-alpine/. Pour une application multiconteneur, plusieurs noms d’images conteneur peuvent être fournis (séparés par plusieurs lignes). |
configuration-file |
(Facultatif) Utilisé uniquement avec les conteneurs d’applications web : chemin d’accès du fichier Docker Compose. Doit être un chemin d’accès complet ou relatif au répertoire de travail par défaut. Requis pour les applications à plusieurs conteneurs. |
startup-command |
(Facultatif) Entrez la commande de démarrage. Par exemple : dotnet run ou dotnet filename.dll. |
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
name: Windows_Container_Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
Contenu connexe
Vous trouverez notre ensemble d’actions regroupées dans différents référentiels sur GitHub. Chaque référentiel contient de la documentation et des exemples pour vous aider à utiliser GitHub pour CI/CD et à déployer vos applications sur Azure.