Partager via


Tutoriel : déployer des exécuteurs CI/CD auto-hébergés et des agents avec des travaux Azure Container Apps

GitHub Actions et Azure Pipelines vous permettent d’exécuter des workflows CI/CD avec des agents et des exécuteurs autohébergés. Vous pouvez exécuter des agents et des exécuteurs autohébergés en tirant parti de travaux Azure Container Apps basés sur les événements.

Les exécuteurs autohébergés sont utiles lorsque vous devez exécuter des workflows nécessitant un accès à des ressources ou à des outils locaux qui ne sont pas à la disposition d’un exécuteur hébergé sur un cloud. Par exemple, un exécuteur autohébergé dans un travail Container Apps permet à votre workflow d’accéder à des ressources dans le réseau virtuel du travail qui n’est pas accessible par un exécuteur autohébergé.

L’exécution d’exécuteurs autohébergés en tant que travaux basés sur un événement vous permet de tirer parti de la nature serverless d’Azure Container Apps. Les travaux s’exécutent automatiquement quand un workflow est déclenché et sort une fois le travail terminé.

Vous payez uniquement le temps d’exécution du travail.

Dans ce tutoriel, vous découvrez comment exécuter des exécuteurs GitHub Actions en tant que travail Container Apps basé sur un événement.

  • Créer un environnement Container Apps pour déployer votre exécuteur autohébergé
  • Créer un référentiel GitHub pour exécuter un workflow qui utilise un exécuteur autohébergé
  • Créer une image conteneur qui exécute un exécuteur GitHub Actions
  • Déployer l’exécuteur en tant que travail dans l’environnement Container Apps
  • Créer un workflow qui utilise l’exécuteur autohébergé et vérifie son exécution

Important

Les exécuteurs autohébergés sont uniquement recommandés pour les référentiels privés. Leur utilisation avec des référentiels publics peut permettre à du code dangereux de s’exécuter sur votre exécuteur autohébergé. Pour obtenir plus d'informations, consultez Sécurité des exécuteurs autohébergés.

Dans ce tutoriel, vous découvrez comment exécuter des agents Azure Pipelines en tant que travail Container Apps basé sur un événement.

  • Créer un environnement Container Apps pour déployer votre agent autohébergé
  • Créer une organisation et un projet Azure DevOps
  • Créer une image conteneur qui exécute un agent Azure Pipelines
  • Utiliser un travail manuel qui crée un agent d’espace réservé dans l’environnement Container Apps
  • Déployer l’agent en tant que travail dans l’environnement Container Apps
  • Créer un pipeline qui utilise l’agent autohébergé et vérifie son exécution

Important

Les agents autohébergés sont uniquement recommandés pour les projets privés. Leur utilisation avec des projets publics peut permettre à du code dangereux de s’exécuter sur votre agent autohébergé. Pour obtenir plus d'informations, consultez Sécurité des agents autohébergés.

Remarque

Les travaux et applications conteneur ne prennent pas en charge l’exécution d’un Docker dans des conteneurs. Toute étape de vos workflows qui utilise des commandes Docker échoue quand elle s’exécute sur un exécuteur ou un agent autohébergé dans un travail Container Apps.

Prérequis

Se référer aux restrictions d’emploi pour obtenir une liste des limitations.

Programme d’installation

Pour vous connecter à Azure à partir de l’interface CLI, exécutez la commande suivante et suivez les invites pour procéder à l’authentification.

az login

Pour être sûr d’utiliser la dernière version de l’interface CLI, exécutez la commande de mise à niveau.

az upgrade

Ensuite, installez ou mettez à jour l’extension Azure Container Apps pour l’interface CLI.

Si vous recevez des erreurs concernant des paramètres manquants lorsque vous exécutez des commandes az containerapp dans Azure CLI ou les cmdlets du module Az.App dans Azure PowerShell, assurez-vous que la dernière version de l’extension Azure Container Apps est installée.

az extension add --name containerapp --upgrade

Remarque

À compter de mai 2024, les extensions Azure CLI n’activent plus les fonctionnalités en préversion par défaut. Pour accéder aux fonctionnalités en préversion de Container Apps, installez l’extension Container Apps avec --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Maintenant que la version actuelle de l’extension ou du module est installée, inscrivez les espaces de noms Microsoft.App et Microsoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Créer des variables d’environnement

À présent que votre configuration Azure CLI est terminée, vous pouvez définir les variables d’environnement utilisées dans cet article.

RESOURCE_GROUP="jobs-sample"
LOCATION="northcentralus"
ENVIRONMENT="env-jobs-sample"
JOB_NAME="github-actions-runner-job"
RESOURCE_GROUP="jobs-sample"
LOCATION="northcentralus"
ENVIRONMENT="env-jobs-sample"
JOB_NAME="azure-pipelines-agent-job"
PLACEHOLDER_JOB_NAME="placeholder-agent-job"

Créer un environnement Container Apps

L’environnement Azure Container Apps fait office de barrière sécurisée entourant les applications conteneur et les travaux afin qu’ils puissent partager le même réseau et communiquer entre eux.

Remarque

Pour créer un environnement Container Apps intégré à un réseau virtuel existant, voir Fournir un réseau virtuel à un environnement Container Apps interne.

  1. Créez un groupe de ressources à l’aide de la commande suivante.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Créez l’environnement Container Apps à l’aide de la commande suivante.

    az containerapp env create \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION"
    

Créer un référentiel GitHub pour l’exécution d’un workflow

Pour exécuter un workflow, vous devez créer un référentiel GitHub contenant la définition du workflow.

  1. Accédez à GitHub et connectez-vous.

  2. Créez un référentiel en entrant les valeurs suivantes.

    Paramètre Valeur
    Owner Sélectionnez votre nom d’utilisateur GitHub.
    Nom du dépôt Entrez un nom pour votre référentiel.
    Visibilité Sélectionnez Privé.
    Initialiser ce référentiel avec Sélectionnez Ajouter un fichier LISEZMOI.

    Laissez les autres valeurs à leur sélection par défaut.

  3. Cliquez sur Create repository (Créer le dépôt).

  4. Dans votre nouveau référentiel, sélectionnez Actions.

  5. Recherchez le modèle Workflow simple, puis sélectionnez Configurer.

  6. Sélectionnez Valider les modifications pour ajouter le workflow à votre référentiel.

Le workflow s’exécute sur l’exécuteur ubuntu-latest hébergé sur GitHub et imprime un message sur la console. Vous remplacez plus tard l’exécuteur hébergé sur GitHub par un exécuteur autohébergés.

Obtenir un jeton d’accès personnel GitHub

Pour exécuter un exécuteur autohébergé, vous devez créer un jeton d’accès personnel (PAT) dans GitHub. Lors de chaque démarrage d’un exécuteur, le PAT est utilisé pour générer un jeton pour enregistrer l’exécuteur avec GitHub. Le PAT est également utilisé par la règle de mise à l’échelle d’exécuteur GitHub Actions pour surveiller la file d’attente du workflow du référentiel et démarrer les exécuteurs selon les besoins.

Remarque

Les jetons d’accès personnel (PAT) ont une date d’expiration. Effectuez régulièrement une rotation de vos jetons pour vous assurer qu’ils restent valides (n’arrivent pas à expiration) afin d’éviter toute interruption du service.

  1. Dans GitHub, sélectionnez votre image de profil dans le coin supérieur droit, puis sélectionnez Paramètres.

  2. Sélectionnez Paramètres de développeur.

  3. Sous Jetons d’accès personnel, sélectionnez Jetons affinés.

  4. Sélectionnez Générer un nouveau jeton.

  5. Dans l’écran Nouveau jeton d’accès personnel de granularité fine, indiquez les valeurs suivantes.

    Paramètre Valeur
    Nom du jeton Entrez un nom pour votre jeton.
    Expiration Sélectionnez 30 jours.
    Accès aux dépôts Sélectionnez Sélectionner uniquement les référentiels, puis le référentiel créé.

    Entrez les valeurs suivantes pour Autorisations de référentiel.

    Paramètre Valeur
    Actions Sélectionnez En lecture seule.
    Administration Sélectionnez Lire et écrire.
    Métadonnées Sélectionnez En lecture seule.
  6. Sélectionnez Generate token.

  7. Copiez la valeur du jeton.

  8. Définissez des variables utilisées pour configurer l’exécuteur et la règle de mise à l’échelle plus tard.

    GITHUB_PAT="<GITHUB_PAT>"
    REPO_OWNER="<REPO_OWNER>"
    REPO_NAME="<REPO_NAME>"
    

    Remplacez les espaces réservés par les valeurs suivantes :

    Paramètre substituable Valeur
    <GITHUB_PAT> Le PAT GitHub que vous avez généré.
    <REPO_OWNER> Le propriétaire du référentiel que vous avez créé plus tôt. Cette valeur est généralement votre nom d’utilisateur GitHub.
    <REPO_NAME> Le nom du référentiel que vous avez créé précédemment. Cette valeur est le même nom entré dans le champ Nom du référentiel.

Générer l’image conteneur d’exécuteur GitHub Actions

Pour créer un exécuteur autohébergé, vous devez créer une image conteneur qu’exécute l’exécuteur. Dans cette section, vous générez l’image conteneur, puis l’envoyez (push) à un registre de conteneurs.

Remarque

L’image que vous créez dans ce tutoriel contient un exécuteur autohébergé de base qui convient à l’exécution en tant que travail Container Apps. Vous pouvez la personnaliser pour inclure d’autres outils ou dépendances nécessaires à vos workflows.

  1. Définissez un nom pour votre image conteneur et votre registre.

    CONTAINER_IMAGE_NAME="github-actions-runner:1.0"
    CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
    

    Remplacez <CONTAINER_REGISTRY_NAME> par un nom unique pour créer un registre de conteneurs. Les noms de registre de conteneurs doivent être uniques dans Azure et comporter entre 5 et 50 caractères, uniquement des lettres minuscules et des chiffres.

  2. Créez un registre de conteneurs.

    az acr create \
        --name "$CONTAINER_REGISTRY_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION" \
        --sku Basic \
        --admin-enabled true
    
  3. Le Dockerfile pour créer l’image d’exécuteur est disponible sur GitHub. Exécutez la commande suivante pour cloner le dépôt et créer l’image conteneur dans le cloud à l’aide de la commande az acr build.

    az acr build \
        --registry "$CONTAINER_REGISTRY_NAME" \
        --image "$CONTAINER_IMAGE_NAME" \
        --file "Dockerfile.github" \
        "https://github.com/Azure-Samples/container-apps-ci-cd-runner-tutorial.git"
    

    L’image est maintenant disponible dans le registre de conteneurs.

Déployer un exécuteur autohébergé comme travail

Vous pouvez maintenant créer un travail pour utiliser l’image conteneur. Dans cette section, vous créez un travail qui exécute l’exécuteur autohébergé et s’authentifie avec GitHub en utilisant le PAT généré plus tôt. Le travail utilise la règle de mise à l’échelle github-runner pour créer des exécutions de travail en fonction du nombre d’exécutions de workflow en attente.

  1. Créez un travail dans l’environnement Container Apps.

    az containerapp job create -n "$JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
        --trigger-type Event \
        --replica-timeout 1800 \
        --replica-retry-limit 0 \
        --replica-completion-count 1 \
        --parallelism 1 \
        --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
        --min-executions 0 \
        --max-executions 10 \
        --polling-interval 30 \
        --scale-rule-name "github-runner" \
        --scale-rule-type "github-runner" \
        --scale-rule-metadata "githubAPIURL=https://api.github.com" "owner=$REPO_OWNER" "runnerScope=repo" "repos=$REPO_NAME" "targetWorkflowQueueLength=1" \
        --scale-rule-auth "personalAccessToken=personal-access-token" \
        --cpu "2.0" \
        --memory "4Gi" \
        --secrets "personal-access-token=$GITHUB_PAT" \
        --env-vars "GITHUB_PAT=secretref:personal-access-token" "GH_URL=https://github.com/$REPO_OWNER/$REPO_NAME" "REGISTRATION_TOKEN_API_URL=https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/actions/runners/registration-token" \
        --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"
    

    Le tableau suivant décrit les paramètres clés utilisés dans la commande.

    Paramètre Description
    --replica-timeout Durée maximale pendant laquelle un réplica peut s’exécuter.
    --replica-retry-limit Nombre de nouvelles tentatives d’exécution d’un réplica en échec.
    --replica-completion-count Nombre de réplicas à exécuter correctement avant qu’une exécution de travail soit considérée comme réussie.
    --parallelism Nombre de réplicas à démarrer par exécution de travail.
    --min-executions Nombre minimal d’exécutions de travaux à exécuter par intervalle d’interrogation.
    --max-executions Nombre maximal d’exécutions de travaux à exécuter par intervalle d’interrogation.
    --polling-interval Intervalle d’interrogation auquel évaluer la règle de mise à l’échelle.
    --scale-rule-name Nom de la règle de mise à l’échelle.
    --scale-rule-type Type de règle de mise à l’échelle à utiliser. Pour découvrir plus d’informations sur l’outil de mise à l’échelle d’exécuteur GitHub, consultez la documentation KEDA.
    --scale-rule-metadata Métadonnées pour la règle de mise à l’échelle. Si vous utilisez GitHub Enterprise, mettez à jour githubAPIURL à l’aide son URL d’API.
    --scale-rule-auth Authentification pour la règle de mise à l’échelle.
    --secrets Secrets à utiliser pour le travail.
    --env-vars Variables d’environnement à utiliser pour le travail.
    --registry-server Serveur de registre de conteneurs à utiliser pour le travail. Pour une instance Azure Container Registry, la commande configure automatiquement l’authentification.

    La configuration de la règle de mise à l’échelle définit la source d’événement à surveiller. Elle est évaluée à chaque intervalle d’interrogation et détermine le nombre d’exécutions de travail à déclencher. Pour en savoir plus, consultez Définir des règles de mise à l’échelle.

Le travail piloté par les événements est maintenant créé dans l’environnement Container Apps.

Exécuter un workflow et vérifier le travail

Le travail est configuré pour évaluer la règle de mise à l’échelle toutes les 30 secondes. Pendant chaque évaluation, il vérifie le nombre d’exécutions de workflow en attente qui nécessitent un exécuteur autohébergé et démarre une nouvelle exécution de travail pour un workflow en attente, jusqu’à un nombre maximal de 10 exécutions.

Pour vérifier la configuration correcte du travail, vous modifiez le workflow pour utiliser un exécuteur autohébergé et déclencher une exécution de workflow. Vous pouvez ensuite afficher les journaux d’exécution de travail pour voir le workflow fonctionner.

  1. Dans le référentiel GitHub, accédez au workflow généré plus tôt. Il s’agit d’un fichier YAML dans le répertoire .github/workflows.

  2. Sélectionnez Modifier sur place.

  3. Mettez à jour la propriété runs-on en spécifiant self-hosted :

    runs-on: self-hosted
    
  4. Sélectionnez Valider les modifications....

  5. Sélectionnez Valider les modifications.

  6. Accédez à l’onglet Actions.

    Un nouveau workflow est désormais mis en file d’attente. Dans les 30 secondes, l’exécution du travail démarre et le workflow se termine rapidement par la suite.

    Attendez la fin de l’action avant de passer à l’étape suivante.

  7. Répertoriez les exécutions du travail pour confirmer la création et la fin correcte d’une exécution de travail.

    az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    

Créer un projet et un référentiel Azure DevOps

Pour exécuter un pipeline, vous devez avoir un référentiel et un projet Azure DevOps.

  1. Accédez à Azure DevOps et connectez-vous à votre compte.

  2. Sélectionnez une organisation existante ou en créer une.

  3. Dans la page de vue d’ensemble de l’organisation, sélectionnez Nouveau projet et entrez les valeurs suivantes.

    Paramètre Valeur
    Nom du projet Entrez un nom pour votre projet.
    Visibilité Sélectionnez Privé.
  4. Sélectionnez Créer.

  5. Dans la navigation latérale, sélectionnez Référentiel.

  6. Sous Initialiser une branche primaire avec un fichier README ou .gitignore, sélectionnez Ajouter un fichier README.

  7. Laissez les autres valeurs par défaut et sélectionnez Initialiser.

Créer un pool d’agents

Créez un pool d’agents pour exécuter l’exécuteur autohébergé.

  1. Dans votre projet Azure DevOps, développez la barre de navigation gauche et sélectionnez Paramètres du projet.

    Capture d’écran du bouton des paramètres du projet Azure DevOps.

  2. Sous la section Pipelines dans le menu de navigation Paramètres du projet, sélectionnez Pools d’agents.

    Capture d’écran du bouton de pools d’agents Azure DevOps.

  3. Sélectionnez Ajouter un pool et saisissez les valeurs suivantes.

    Paramètre Valeur
    Pool à lier Cliquez sur Nouveau.
    Type de pool Sélectionnez autohébergé.
    Nom Entrez container-apps.
    Accorder une autorisation d’accès à tous les pipelines Activez cette case à cocher.
  4. Sélectionnez Créer.

Obtenir un jeton d’accès personnel Azure DevOps

Pour exécuter un exécuteur autohébergé, vous devez créer un jeton d’accès personnel (PAT) dans Azure DevOps. Le PAT est utilisé pour authentifier l’exécuteur avec Azure DevOps. Il est également utilisé par la règle de mise à l’échelle pour déterminer le nombre d’exécutions de pipeline en attente et déclencher de nouvelles exécutions de travail.

[!NOTE]

Les jetons d’accès personnel (PAT) ont une date d’expiration. Effectuez régulièrement une rotation de vos jetons pour vous assurer qu’ils restent valides (n’arrivent pas à expiration) afin d’éviter toute interruption du service.

  1. Dans Azure DevOps, sélectionnez Paramètres utilisateur à côté de votre image dans le coin supérieur à droite.

  2. Sélectionnez Jetons d’accès personnels.

  3. Dans la page Jetons d’accès personnel, sélectionnez Nouveau jeton, puis entrez les valeurs suivantes.

    Paramètre Valeur
    Nom Entrez un nom pour votre jeton.
    Organisation Sélectionnez l’organisation choisie ou créée plus tôt.
    Étendues Sélectionnez Définition personnalisée.
    Afficher toutes les étendues Sélectionnez Afficher toutes les étendues.
    Pools d’agents (lire et gérer) Sélectionnez Pools d’agents (lire et gérer).

    Laissez toutes les autres étendues non sélectionnées.

  4. Sélectionnez Créer.

  5. Copiez la valeur de jeton dans un emplacement sécurisé.

    Vous ne pouvez pas récupérer le jeton une fois que vous quittez la page.

  6. Définissez des variables utilisées pour configurer des travaux Container Apps plus tard.

    AZP_TOKEN="<AZP_TOKEN>"
    ORGANIZATION_URL="<ORGANIZATION_URL>"
    AZP_POOL="container-apps"
    REGISTRATION_TOKEN_API_URL="<YOUR_REGISTRATION_TOKEN_API_URL>"
    

    Remplacez les espaces réservés par les valeurs suivantes :

    Paramètre substituable Valeur Commentaires
    <AZP_TOKEN> Le PAT Azure DevOps que vous avez généré.
    <ORGANIZATION_URL> L’URL de votre organisation Azure DevOps. Veillez à ce qu’il n’y ait pas de / de fin présent à la fin de l’URL. Par exemple, https://dev.azure.com/myorg ou https://myorg.visualstudio.com.
    <YOUR_REGISTRATION_TOKEN_API_URL> URL de l’API du jeton d’inscription dans le fichier entrypoint.sh. Par exemple, « https://myapi.example.com/get-token ».

Créer l’image conteneur d’agent Azure Pipelines

Pour créer un agent autohébergé, vous devez créer une image conteneur qu’exécute l’agent. Dans cette section, vous générez l’image conteneur, puis l’envoyez (push) à un registre de conteneurs.

Remarque

L’image que vous créez dans ce tutoriel contient un agent autohébergé de base qui convient à l’exécution en tant que travail Container Apps. Vous pouvez la personnaliser pour inclure d’autres outils ou dépendances nécessaires à vos pipelines.

  1. De retour dans votre terminal, définissez un nom pour votre image conteneur et votre registre.

    CONTAINER_IMAGE_NAME="azure-pipelines-agent:1.0"
    CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
    

    Remplacez <CONTAINER_REGISTRY_NAME> par un nom unique pour créer un registre de conteneurs.

    Les noms de registre de conteneurs doivent être uniques dans Azure et comporter entre 5 et 50 caractères, uniquement des lettres minuscules et des chiffres.

  2. Créez un registre de conteneurs.

    az acr create \
        --name "$CONTAINER_REGISTRY_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION" \
        --sku Basic \
        --admin-enabled true
    
  3. Le Dockerfile pour créer l’image d’exécuteur est disponible sur GitHub. Exécutez la commande suivante pour cloner le dépôt et créer l’image conteneur dans le cloud à l’aide de la commande az acr build.

    az acr build \
        --registry "$CONTAINER_REGISTRY_NAME" \
        --image "$CONTAINER_IMAGE_NAME" \
        --file "Dockerfile.azure-pipelines" \
        "https://github.com/Azure-Samples/container-apps-ci-cd-runner-tutorial.git"
    

    L’image est maintenant disponible dans le registre de conteneurs.

Créer un agent autohébergé d’espace réservé

Avant de pouvoir exécuter un agent autohébergé dans votre nouveau pool d’agents, vous devez créer un agent d’espace réservé. L’agent d’espace réservé veille à ce que le pool d’agents soit disponible. Les pipelines utilisés par le pool d’agents échouent lorsqu’il n’existe aucun agent d’espace réservé.

Vous pouvez exécuter un travail manuel pour enregistrer un agent d’espace réservé hors connexion. Le travail s’exécute une fois et ne peut pas être supprimé. L’agent d’espace réservé ne consomme aucune ressource dans Azure Container Apps ou Azure DevOps.

  1. Créez un travail manuel dans l’environnement Container Apps qui crée l’agent d’espace réservé.

    az containerapp job create -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
        --trigger-type Manual \
        --replica-timeout 300 \
        --replica-retry-limit 0 \
        --replica-completion-count 1 \
        --parallelism 1 \
        --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
        --cpu "2.0" \
        --memory "4Gi" \
        --secrets "personal-access-token=$AZP_TOKEN" "organization-url=$ORGANIZATION_URL" \
        --env-vars "AZP_TOKEN=secretref:personal-access-token" "AZP_URL=secretref:organization-url" "AZP_POOL=$AZP_POOL" "AZP_PLACEHOLDER=1" "AZP_AGENT_NAME=placeholder-agent" \
        --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"
    

    Le tableau suivant décrit les paramètres clés utilisés dans la commande.

    Paramètre Description
    --replica-timeout Durée maximale pendant laquelle un réplica peut s’exécuter.
    --replica-retry-limit Nombre de nouvelles tentatives d’exécution d’un réplica en échec.
    --replica-completion-count Nombre de réplicas à exécuter correctement avant qu’une exécution de travail soit considérée comme réussie.
    --parallelism Nombre de réplicas à démarrer par exécution de travail.
    --secrets Secrets à utiliser pour le travail.
    --env-vars Variables d’environnement à utiliser pour le travail.
    --registry-server Serveur de registre de conteneurs à utiliser pour le travail. Pour une instance Azure Container Registry, la commande configure automatiquement l’authentification.

    La définition de la variable d’environnement AZP_PLACEHOLDER permet de configurer le conteneur d’agent à enregistrer en tant qu’agent d’espace réservé hors connexion sans exécuter un travail.

  2. Exécutez le travail manuel pour créer l’agent d’espace réservé.

    az containerapp job start -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
    
  3. Répertoriez les exécutions du travail pour confirmer la création et la fin correcte d’une exécution de travail.

    az containerapp job execution list \
        --name "$PLACEHOLDER_JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    
  4. Vérifiez que l’agent d’espace réservé a été créé dans Azure DevOps.

    1. Dans Azure DevOps, accédez à votre projet.
    2. Sélectionnez Paramètres du projet>Pools d’agents>container-apps>Agents.
    3. Confirmez qu’un agent d’espace réservé nommé placeholder-agent est répertorié et que son état est hors connexion.
  5. Le travail n’est plus nécessaire. Vous pouvez le supprimer.

    az containerapp job delete -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
    

Créer un agent autohébergé en tant que travail basé sur un événement

Maintenant que vous avez un agent d’espace réservé, vous pouvez créer un agent autohébergé. Dans cette section, vous créez un travail basé sur un événement qui exécute un agent autohébergé lors du déclenchement d’un pipeline.

az containerapp job create -n "$JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
    --trigger-type Event \
    --replica-timeout 1800 \
    --replica-retry-limit 0 \
    --replica-completion-count 1 \
    --parallelism 1 \
    --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
    --min-executions 0 \
    --max-executions 10 \
    --polling-interval 30 \
    --scale-rule-name "azure-pipelines" \
    --scale-rule-type "azure-pipelines" \
    --scale-rule-metadata "poolName=$AZP_POOL" "targetPipelinesQueueLength=1" \
    --scale-rule-auth "personalAccessToken=personal-access-token" "organizationURL=organization-url" \
    --cpu "2.0" \
    --memory "4Gi" \
    --secrets "personal-access-token=$AZP_TOKEN" "organization-url=$ORGANIZATION_URL" \
    --env-vars "AZP_TOKEN=secretref:personal-access-token" "AZP_URL=secretref:organization-url" "AZP_POOL=$AZP_POOL" \
    --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"

Le tableau suivant décrit les paramètres de règle de mise à l’échelle utilisés dans la commande.

Paramètre Description
--min-executions Nombre minimal d’exécutions de travaux à exécuter par intervalle d’interrogation.
--max-executions Nombre maximal d’exécutions de travaux à exécuter par intervalle d’interrogation.
--polling-interval Intervalle d’interrogation auquel évaluer la règle de mise à l’échelle.
--scale-rule-name Nom de la règle de mise à l’échelle.
--scale-rule-type Type de règle de mise à l’échelle à utiliser. Pour découvrir plus d’informations sur l’outil de mise à l’échelle Azure Pipelines, consultez la documentation KEDA.
--scale-rule-metadata Métadonnées pour la règle de mise à l’échelle.
--scale-rule-auth Authentification pour la règle de mise à l’échelle.

La configuration de la règle de mise à l’échelle définit la source d’événement à surveiller. Elle est évaluée à chaque intervalle d’interrogation et détermine le nombre d’exécutions de travail à déclencher. Pour en savoir plus, consultez Définir des règles de mise à l’échelle.

Le travail piloté par les événements est maintenant créé dans l’environnement Container Apps.

Exécuter un pipeline et vérifier le travail

Maintenant que vous avez configuré un travail d’agent autohébergé, vous pouvez exécuter un pipeline et vérifier son fonctionnement correct.

  1. Dans le volet de navigation gauche de votre projet Azure DevOps, accédez Pipelines.

  2. Sélectionnez Créer un pipeline.

  3. Sélectionnez Azure Repos Git comme emplacement de votre code.

  4. Sélectionnez le référentiel que vous avez créé précédemment.

  5. Sélectionnez Pipeline de démarrage.

  6. Dans le pipeline YAML, remplacez le pool de vmImage: ubuntu-latest par name: container-apps.

    pool:
      name: container-apps
    
  7. Sélectionnez Enregistrer et exécuter.

    Le pipeline s’exécute et utilise le travail d’agent autohébergé créé dans l’environnement Container Apps.

  8. Répertoriez les exécutions du travail pour confirmer la création et la fin correcte d’une exécution de travail.

    az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    

Conseil

Vous rencontrez des problèmes ? Faites-le nous savoir sur GitHub en ouvrant un problème dans le dépôt Azure Container Apps.

Nettoyer les ressources

Une fois que vous avez terminé, exécutez la commande suivante pour supprimer le groupe de ressources qui contient vos ressources Container Apps.

Attention

La commande suivante supprime le groupe de ressources spécifié et toutes les ressources qu’il contient. Si des ressources en dehors du cadre de ce tutoriel existent dans le groupe de ressources spécifié, elles seront également supprimées.

az group delete \
    --resource-group $RESOURCE_GROUP

Pour supprimer votre référentiel GitHub, consultez Supprimer un référentiel.

Étapes suivantes