GitHub Actions sur Azure
Reproduisez le flux de travail CI/CD avec GitHub Actions et l’action azure/webapps-deploy, et déterminez quand choisir GitHub Actions plutôt qu’Azure Pipelines.
GitHub Actions sur Azure est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu’est-ce que GitHub Actions ?
GitHub Actions est la plateforme intégrée de CI/CD et d’automatisation de GitHub. Les flux de travail sont définis dans des fichiers YAML stockés dans le répertoire .github/workflows/ de votre dépôt et déclenchés par des événements GitHub : envois, demandes d’extraction, mises à jour de version, etc. GitHub Actions est étroitement intégré à l’écosystème GitHub (problèmes, demandes d’extraction, packages, analyse de sécurité) et fournit une vaste marketplace d’Actions communautaires pour des tâches telles que la compilation, les tests et le déploiement sur Azure.
Structure d’un flux de travail GitHub Actions
Un fichier de flux de travail GitHub Actions comporte trois sections de premier niveau. on définit les événements déclencheurs. env définit les variables d’environnement globales. jobs définit une ou plusieurs tâches, chacune s’exécutant sur un runner (hébergé par GitHub ou auto-hébergé). Chaque tâche comporte des étapes : soit run (script shell), soit uses (une Action prédéfinie). Les tâches s’exécutent en parallèle par défaut ; utilisez needs pour créer des dépendances séquentielles.
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
NODE_VERSION: '18.x'
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- run: npm ci
- run: npm testAuthentification auprès d’Azure depuis GitHub Actions
La méthode recommandée pour authentifier GitHub Actions auprès d’Azure est OpenID Connect (OIDC) : elle émet des jetons de courte durée sans stocker de secrets de longue durée dans GitHub. Configurez un justificatif d’identité fédérée sur une inscription d’application Azure ou une identité managée, en lui accordant une relation de confiance avec votre dépôt et votre branche GitHub. Utilisez l’Action azure/login@v2 pour échanger le jeton OIDC GitHub contre un jeton d’accès Azure ; aucun secret client dans GitHub Secrets n’est nécessaire.
# Configure OIDC federated credential in Azure
az ad app federated-credential create \
--id <AppRegistrationObjectId> \
--parameters '{
"name": "github-oidc",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:myorg/myrepo:ref:refs/heads/main",
"audiences": ["api://AzureADTokenExchange"]
}'
# In the workflow: login via OIDC
# permissions:
# id-token: write
# contents: read
# - uses: azure/login@v2
# with:
# client-id: ${{ vars.AZURE_CLIENT_ID }}
# tenant-id: ${{ vars.AZURE_TENANT_ID }}
# subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}Déploiement sur Azure App Service
L’Action azure/webapps-deploy@v3 déploie du code ou une image de conteneur sur Azure App Service. Elle gère le déploiement sur un emplacement, le déploiement basé sur un package et le déploiement d’une image Docker. Associez-la à azure/login@v2 pour l’authentification. Vous pouvez cibler un emplacement de préproduction, exécuter des tests de fumée, puis l’échanger avec l’Action azure/CLI@v2 qui exécute la commande d’échange d’emplacements, reproduisant entièrement le modèle de déploiement bleu-vert d’Azure Pipelines dans GitHub Actions.
# .github/workflows/deploy.yml
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Build and zip app
run: npm ci && npm run build && zip -r app.zip dist/
- uses: azure/webapps-deploy@v3
with:
app-name: myUniqueWebApp
slot-name: staging
package: app.zipDéploiement sur Azure Kubernetes Service
Déployez sur AKS depuis GitHub Actions à l’aide de l’Action azure/k8s-deploy@v5. Cette Action utilise kubectl apply pour déployer les manifestes, effectue une substitution d’image (en remplaçant la balise de l’image par celle de la Build actuelle) et surveille l’état du déploiement. L’Action azure/aks-set-context@v4 configure les identifiants kubectl en récupérant la configuration kubeconfig du cluster à l’aide de la session Azure authentifiée.
jobs:
deploy-aks:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- uses: azure/aks-set-context@v4
with:
resource-group: MyRG
cluster-name: myAKSCluster
- uses: azure/k8s-deploy@v5
with:
namespace: production
manifests: k8s/
images: 'mycontainerregistry.azurecr.io/myapp:${{ github.sha }}'Secrets et variables GitHub
Stockez les valeurs sensibles dans GitHub Secrets : ces valeurs chiffrées sont accessibles sous la forme ${{ secrets.SECRET_NAME }} dans les flux de travail. Placez la configuration non sensible dans GitHub Variables : elle est accessible sous la forme ${{ vars.VARIABLE_NAME }}. Les deux peuvent être limités à un dépôt, un environnement ou une organisation. Utilisez les environnements dans GitHub Actions pour ajouter des règles de protection (réviseurs requis, branches de déploiement), comme avec les Environments d’Azure DevOps.
# Reference secrets and variables in a workflow
steps:
- name: Configure app settings
uses: azure/CLI@v2
with:
inlineScript: |
az webapp config appsettings set \
--name myUniqueWebApp \
--resource-group MyRG \
--settings \
DATABASE_URL='${{ secrets.DATABASE_URL }}' \
API_VERSION='${{ vars.API_VERSION }}'Règles de protection des environnements
Les Environments de GitHub Actions (configurés dans Paramètres du dépôt → Environments) ajoutent des contrôles de déploiement similaires à ceux des environnements Azure DevOps. Vous pouvez exiger des réviseurs requis qui doivent approuver l’exécution d’une tâche ciblant l’environnement, limiter les déploiements à des branches précises (seule main peut déployer sur Production) et ajouter des minuteries d’attente pour retarder les déploiements. Les tâches ciblant un environnement protégé sont suspendues jusqu’à ce que toutes les règles de protection soient respectées.
# Workflow job targeting a protected GitHub environment
jobs:
deploy-production:
runs-on: ubuntu-latest
environment:
name: Production # Must have 2 approvers in GitHub settings
url: https://myapp.contoso.com
needs: deploy-staging
steps:
- uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- uses: azure/webapps-deploy@v3
with:
app-name: myUniqueWebApp
package: app.zipFlux de travail réutilisables et Actions composites
Évitez de dupliquer la logique de CI/CD entre les dépôts grâce à deux fonctionnalités de GitHub Actions. Les flux de travail réutilisables vous permettent de définir un flux de travail dans un dépôt et de l’appeler depuis les flux de travail d’autres dépôts à l’aide de uses: myorg/shared-workflows/.github/workflows/deploy.yml@main. Les Actions composites regroupent plusieurs étapes en une seule Action stockée dans un dépôt et réutilisable avec uses: myorg/my-actions/deploy@v1. Toutes deux favorisent les principes DRY dans les pipelines de CI/CD de votre organisation.
# Call a reusable workflow from another workflow
jobs:
deploy:
uses: myorg/shared-workflows/.github/workflows/deploy-appservice.yml@main
with:
app-name: myUniqueWebApp
slot-name: staging
package-path: dist/
secrets:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}GitHub Actions ou Azure Pipelines : comment choisir
Choisissez GitHub Actions lorsque votre code est hébergé sur GitHub, que votre équipe préfère l’interface GitHub, que vous souhaitez une intégration étroite avec les vérifications des demandes d’extraction et l’analyse du code GitHub, ou que vous développez des projets open source (avec un nombre généreux de minutes gratuites). Choisissez Azure Pipelines lorsque vous avez besoin d’une intégration avec Azure Boards, de tests avancés avec Azure Test Plans, de la gestion des flux Azure Artifacts, lorsque votre code se trouve dans Azure Repos ou lorsque vous avez besoin d’une gestion complexe des mises en production en plusieurs étapes avec des contrôles répartis sur de nombreux environnements. Les deux permettent de déployer sur Azure tout aussi efficacement.
Marketplace GitHub Actions
La Marketplace GitHub Actions héberge des milliers d’Actions communautaires et officielles pour les tâches courantes. Microsoft publie des Actions Azure officielles : azure/login, azure/webapps-deploy, azure/aks-set-context, azure/k8s-deploy, azure/CLI, azure/arm-deploy et bien d’autres. Épinglez toujours les Actions à une balise de version précise (par exemple @v3) ou à un SHA de validation afin d’empêcher qu’une attaque de la chaîne d’approvisionnement ne permette de remplacer une Action compromise par du code malveillant.
# Pin actions to specific version (recommended)
- uses: actions/checkout@v4 # Pinned to v4 tag
- uses: azure/login@v2 # Pinned to v2
- uses: azure/webapps-deploy@v3 # Pinned to v3
# Extra security: pin to commit SHA
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
# Avoid unpinned 'latest' or branch references
# - uses: some-action@main # UNSAFE - could change at any timeRunners auto-hébergés pour les réseaux privés
Les runners hébergés par GitHub disposent uniquement d’un accès à Internet public : ils ne peuvent pas atteindre les ressources Azure privées (bases de données SQL, API internes) sans exposer ces ressources publiquement. Utilisez des runners auto-hébergés sur des VM Azure dans votre réseau virtuel pour les déploiements vers des ressources privées. Enregistrez un runner en téléchargeant l’agent runner de GitHub Actions, en le configurant avec l’URL de votre dépôt et le jeton d’inscription, puis en l’exécutant comme un service. Faites évoluer les runners auto-hébergés avec Azure Container Apps pour obtenir des pools de runners élastiques.
# Register a self-hosted runner on an Azure VM
# 1. Download runner (run on the VM)
curl -O -L https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-x64-2.317.0.tar.gz
mkdir actions-runner && tar xzf ./actions-runner-linux-x64-2.317.0.tar.gz -C actions-runner
cd actions-runner
# 2. Configure (use token from GitHub Settings > Actions > Runners)
./config.sh --url https://github.com/myorg/myrepo --token <REGISTRATION_TOKEN>
# 3. Run as a service
sudo ./svc.sh install && sudo ./svc.sh start
# Use in workflow
# runs-on: self-hostedVérification rapide
Testez votre compréhension des concepts de Microsoft Azure Fundamentals (AZ-900) présentés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que les flux de travail GitHub Actions sont des fichiers YAML situés dans .github/workflows/, déclenchés par des événements GitHub et exécutés sur des runners, que les identifiants fédérés OIDC permettent une authentification Azure sans secret depuis GitHub Actions et que les GitHub Environments avec des règles de protection ajoutent des contrôles d’approbation aux déploiements en production. Le cours Azure DevOps est maintenant terminé ; nous allons ensuite étudier Azure Monitor et Log Analytics.
Questions Fréquemment Posées
La leçon « GitHub Actions sur Azure » est-elle gratuite ?
Oui — le texte complet de « GitHub Actions sur Azure » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « GitHub Actions sur Azure » ?
Reproduisez le flux de travail CI/CD avec GitHub Actions et l’action azure/webapps-deploy, et déterminez quand choisir GitHub Actions plutôt qu’Azure Pipelines. Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?
Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « GitHub Actions sur Azure » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?
Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Présentation des services Azure DevOps
- Création d’un pipeline d’intégration continue avec Azure Pipelines
- Déploiement continu vers Azure
- GitHub Actions sur Azure