Skip to main content

Restriction de l’image de base pour les codespaces

Vous pouvez spécifier quelles images de base peuvent être utilisées pour créer le conteneur de développement pour les nouveaux espaces de code créés au sein de votre organisation.

Qui peut utiliser cette fonctionnalité ?

To manage image constraints for an organization's codespaces, you must be an owner of the organization.

Les organisations sur les plans GitHub Team et GitHub Enterprise peuvent payer l’utilisation de membres et de collaborateurs de GitHub Codespaces. Ces organisations peuvent ensuite accéder aux paramètres et aux stratégies qui s’appliquent aux codespaces payés par l’organisation. Pour plus d’informations, consultez « Choisir qui possède et achète les codespaces dans votre organisation » et « Plans de GitHub ».

Vue d’ensemble

Quand vous créez un codespace, un conteneur de développement est automatiquement créé sur un ordinateur virtuel distante. Le conteneur de développement est créé à partir d’une image Docker. L’image est en fait un modèle pour les conteneurs Docker et détermine de nombreux aspects de l’environnement résultant fourni par le codespace. Pour plus d’informations, consultez « Vue d’ensemble de GitHub Codespaces ».

Vous pouvez choisir l’image que vous souhaitez utiliser pour vos codespaces en la spécifiant dans la configuration de conteneur de développement d’un dépôt. Pour cela, vous pouvez par exemple utiliser la propriété image dans le fichier devcontainer.json.

JSON
"image": "mcr.microsoft.com/devcontainers/javascript-node:18",

Pour plus d’informations, consultez la spécification sur les conteneurs de développement sur le site web Conteneurs de développement.

Vous pouvez également spécifier l’image de base dans un fichier Dockerfile. Pour plus d’informations, consultez « Présentation des conteneurs de développement ».

Si vous ne spécifiez pas d’image dans la configuration de conteneur de développement pour un référentiel, l’image de conteneur de développement par défaut est utilisée. L’image par défaut contient un certain nombre de versions du runtime pour des langages et des outils couramment utilisés. Pour plus d’informations, consultez « Présentation des conteneurs de développement ».

En tant que propriétaire d'une organisation, vous pouvez ajouter une politique pour restreindre les images de conteneurs de développement qui peuvent être utilisées pour les espaces de code créés au sein de votre organisation.

Si vous tentez de créer un codespace à l’aide d’un devcontainer.json qui spécifie une image qui n’est pas autorisée par la stratégie, le message suivant s’affiche dans GitHub :

Le codespace ne peut pas être créé, car l’image spécifiée dans la configuration de votre conteneur de développement n’est pas autorisée. Il vous faudra peut-être sélectionner une autre branche, modifier votre configuration de conteneur ou ajuster le paramètre de stratégie de votre organisation.

À l’aide de l’interface CLI, le message d’erreur est :

erreur lors de la création du codespace : HTTP 400 : l’image de base « IMAGE-REFERENCE » n’est pas autorisée d’après la stratégie d’organisation définie par votre administrateur d’organisation.

Si l’image d’un codespace est spécifiée dans un fichier Dockerfile et ne correspond pas à la stratégie, un codespace est créé en mode de récupération, à l’aide du conteneur de récupération par défaut plutôt que de l’image spécifiée. À cet effet, un message est inclus à la fin du journal de création. Pour plus d’informations sur le journal de création, consultez « Journaux GitHub Codespaces ».

Remarques :

  • L’image de base du conteneur de développement ne doit pas être confondue avec l’image hôte. L’image hôte est l’image utilisée pour générer l’ordinateur virtuel sur laquelle le conteneur de développement s’exécute. Pour plus d’informations, consultez « Choix de l’image hôte stable ou bêta ».
  • La stratégie d’image de base est appliquée lorsqu’un codespace est créé et que vous effectuez une régénération complète du conteneur. Pour plus d’informations, consultez « Présentation du cycle de vie des codespaces ».
  • La stratégie d’image de base ne s’applique ni à l’image par défaut ni à celle utilisée pour récupérer un codespace si une erreur introduite dans une configuration de conteneur de développement empêche la regénération du conteneur.

Définition de stratégies spécifiques d’un dépôt à l’échelle de l’organisation

Quand vous créez une stratégie, vous choisissez si elle s’applique à tous les dépôts de votre organisation ou uniquement aux dépôts spécifiés. Si vous définissez une stratégie à l’échelle de l’organisation, alors toutes les stratégies que vous définissez pour des dépôts individuels doivent s’inscrire dans cet ensemble de restrictions au niveau de l’organisation. L’ajout de stratégies rend le choix de l’image plus restrictif, et non moins restrictif.

Par exemple, vous pouvez créer une stratégie à l’échelle de l’organisation qui restreint l’image de base à l’une des dix images spécifiées. Vous pouvez ensuite définir une stratégie pour le dépôt A qui restreint l’image à un sous-ensemble de seulement deux des images spécifiées au niveau de l’organisation. La spécification d’images supplémentaires pour le dépôt A n’a aucun effet, car ces images ne sont pas spécifiées dans la stratégie au niveau de l’organisation. Si vous ajoutez une stratégie à l’échelle de l’organisation, vous devez la définir sur le plus grand choix possible d’images disponibles pour n’importe quel dépôt au sein de votre organisation. Vous pouvez ensuite ajouter des stratégies plus précises pour un dépôt afin de restreindre encore ce choix.

Remarque : les stratégies relatives aux codespaces s’appliquent uniquement aux codespaces pour lesquels votre organisation est facturée. Si un utilisateur crée à ses propres frais un codespace pour un référentiel au sein de votre organisation, ce codespace ne sera pas soumis à ces politiques. Pour plus d’informations, consultez « Choisir qui possède et achète les codespaces dans votre organisation ».

Ajout d’une stratégie pour définir les images autorisées

  1. Dans le coin supérieur droit de GitHub, sélectionnez votre photo de profil, puis cliquez sur Vos organisations.

  2. En regard de l’organisation, cliquez sur Paramètres.

  3. Dans la section « Code, planification et automatisation » de la barre latérale, sélectionnez Codespaces , puis cliquez sur Stratégies.

  4. Dans la page « Stratégies de codespaces », cliquez sur Créer une stratégie.

  5. Entrez un nom pour votre nouvelle stratégie.

  6. Cliquez sur Ajouter une contrainte, puis choisissez Images de base.

  7. Cliquez sur pour modifier la contrainte.

  8. Dans le champ « Valeurs autorisées », saisissez la référence d’image de l’image Docker que vous souhaitez autoriser.

    Capture d’écran de référence d’image « mcr.microsoft.com/devcontainers/java » saisie dans le champ « Valeurs autorisées ».

    Vous pouvez utiliser le caractère générique * comme dernier caractère de la référence d’image pour faire correspondre toutes les images qui commencent par la même référence à gauche du caractère générique. Par exemple : mcr.microsoft.com/devcontainers/*.

  9. Cliquez sur pour ajouter la valeur.

  10. Si nécessaire, répétez les deux étapes précédentes pour ajouter plus de références d’image.

    Lorsque vous ajoutez plusieurs références d’image, si une référence d’image spécifiée dans la configuration du conteneur de développement d’un référentiel ne correspond à aucune des références d’une stratégie qui s’applique au référentiel, vous ne pourrez pas créer de codespace pour ce référentiel.

  11. Cliquez en dehors de la boîte de dialogue pour la fermer.

  12. Par défaut, la stratégie est définie pour s’appliquer à tous les dépôts. Si vous souhaitez qu’elle s’applique uniquement à certains des dépôts de votre organisation, cliquez sur Tous les dépôts, puis sur Dépôts sélectionnés dans le menu déroulant.

    Capture d’écran de la liste déroulante de sélection des référentiels, montrant les options « Tous les référentiels » et « Référentiels sélectionnés ».

    Remarque : si vous ajoutez une contrainte à une stratégie existante contenant déjà la contrainte « Nombre maximal de codespaces par utilisateur », vous ne pourrez pas appliquer la stratégie aux référentiels sélectionnés. En effet, la contrainte « Nombre maximal de codespaces par utilisateur » s’applique toujours à tous les référentiels de l’organisation.

    Avec le choix Dépôts sélectionnés :

    1. Cliquez sur .

      Capture d’écran de l’icône des paramètres (symbole d’engrenage) à gauche d’un bouton intitulé « Référentiels sélectionnés ».

    2. Sélectionnez les dépôts auxquels vous souhaitez appliquer cette stratégie.

    3. En bas de la liste des dépôts, cliquez sur Sélectionner des dépôts.

      Capture d’écran d’une liste de référentiels, chacun avec une case à cocher. Trois référentiels sont sélectionnés.

  13. Pour ajouter une autre contrainte à la stratégie, cliquez sur Ajouter une contrainte et choisissez une autre contrainte. Pour plus d'informations sur les autres contraintes, consultez :

  14. Une fois que vous avez terminé d’ajouter des contraintes à votre stratégie, cliquez sur Enregistrer.

La stratégie est appliquée quand quelqu’un tente de créer un codespace facturable à votre organisation. La contrainte d’image de base n’affecte pas les codespaces existants, qu’ils soient actifs ou arrêtés.

Modification d’une stratégie

Vous pouvez modifier une stratégie existante. Par exemple, vous avez peut-être besoin d'ajouter ou de supprimer des contraintes dans une stratégie.

  1. Affichez la page « Stratégies de codespaces ». Pour plus d’informations, consultez « Ajout d’une stratégie pour définir les images autorisées ».
  2. Cliquez sur le nom de la stratégie à modifier.
  3. À côté de la contrainte « Images de base », cliquez sur .
  4. Ajouter ou supprimer des références d’image.
  5. Cliquez sur Enregistrer.

Suppression d'une stratégie

  1. Affichez la page « Stratégies de codespaces ». Pour plus d’informations, consultez « Ajout d’une stratégie pour définir les images autorisées ».

  2. Cliquez sur à droite de la stratégie que vous souhaitez supprimer.

    Capture d’écran d’une stratégie avec le bouton Supprimer (icône corbeille) mis en surbrillance avec un contour orange foncé.