Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Créez un projet de construction dans AWS CodeBuild
Vous pouvez utiliser la AWS CodeBuild console ou AWS CLI les AWS kits SDK pour créer un projet de génération.
Rubriques
Conditions préalables
Avant de créer un projet de construction, répondez aux questions de la sectionPlanification d'une génération.
Création d'un projet de génération (console)
Ouvrez la AWS CodeBuild console à l'adresse https://console.aws.amazon.com/codesuite/codebuild/home
Si une page CodeBuild d'informations s'affiche, choisissez Créer un projet de construction. Sinon, dans le volet de navigation, développez Générer, choisissez Créer des projets, puis choisissez Créer un projet de génération.
Choisissez Créer un projet de génération.
Remplissez les sections suivantes. Une fois terminé, choisissez Créer un projet de construction en bas de la page.
Rubriques :
Configuration du projet
- Nom du projet
-
Entrez un nom pour ce projet de construction. Les noms des projets de construction doivent être uniques pour chaque AWS compte.
- Description
-
Entrez une description facultative du projet de création pour aider les autres utilisateurs à comprendre à quoi sert ce projet.
- Créer un badge
-
(Facultatif) Sélectionnez Activer le badge de génération pour rendre l'état de construction de votre projet visible et intégrable. Pour de plus amples informations, veuillez consulter Exemple de badges de génération.
Note
Le badge de compilation ne s'applique pas si votre fournisseur source est Amazon S3.
- Activer la limite de création simultanée
-
(Facultatif) Si vous souhaitez limiter le nombre de versions simultanées pour ce projet, effectuez les étapes suivantes :
-
Sélectionnez Restreindre le nombre de versions simultanées que ce projet peut démarrer.
-
Dans Limite de génération simultanée, entrez le nombre maximum de versions simultanées autorisées pour ce projet. Cette limite ne peut pas être supérieure à la limite de création simultanée définie pour le compte. Si vous essayez de saisir un nombre supérieur à la limite du compte, un message d'erreur s'affiche.
Les nouvelles générations ne sont démarrées que si le nombre actuel de générations est inférieur ou égal à cette limite. Si le nombre actuel de générations atteint cette limite, les nouvelles générations sont limitées et ne sont pas exécutées.
-
- Informations supplémentaires
-
(Facultatif) Pour les balises, entrez le nom et la valeur de toutes les balises que vous souhaitez que les AWS services d'assistance utilisent. Utilisez Ajouter une ligne pour ajouter une balise. Vous pouvez ajouter jusqu’à 50 balises.
Source
- Fournisseur d'origine
-
Choisissez le type de fournisseur de code source. Utilisez les listes suivantes pour effectuer des sélections adaptées à votre fournisseur source :
Note
CodeBuild ne prend pas en charge Bitbucket Server.
Environnement
- Modèle de provisionnement
-
Effectuez l’une des actions suivantes :
-
Pour utiliser des flottes à la demande gérées par AWS CodeBuild, choisissez On-demand. Avec des flottes à la demande, CodeBuild fournit des capacités de calcul pour vos constructions. Les machines sont détruites à la fin de la construction. On-demand les flottes sont entièrement gérées et incluent des fonctionnalités de dimensionnement automatique pour gérer les pics de demande.
-
Pour utiliser les flottes à capacité réservée gérées par AWS CodeBuild, choisissez Capacité réservée, puis sélectionnez un nom de flotte. Avec les parcs à capacité réservée, vous configurez un ensemble d'instances dédiées pour votre environnement de build. Ces machines restent inactives, prêtes à traiter les builds ou les tests immédiatement et réduisent les durées de construction. Avec les flottes à capacité réservée, vos machines fonctionnent en permanence et continueront à entraîner des coûts tant qu'elles seront approvisionnées.
Pour plus d'informations, consultez Exécutez des builds sur des flottes à capacité réservée.
-
- Image de l'environnement
-
Effectuez l’une des actions suivantes :
-
Pour utiliser une image Docker gérée par AWS CodeBuild, choisissez Image gérée, puis sélectionnez Système d'exploitation, Runtime (s) , Image et Version de l'image. Effectuez votre sélection pour Type d'environnement si cette option est disponible.
-
Pour utiliser une autre image Docker, choisissez Image personnalisée. Pour Type d'environnement, choisissez ARM , Linux, Linux GPU ou Windows. Si vous choisissez Other registry (Autre registre), pour External registry URL (URL du registre externe), entrez le nom et la balise de l'image Docker dans Docker Hub au format
. Si vous choisissez Amazon ECR, utilisez le référentiel Amazon ECR et l'image Amazon ECR pour sélectionner l'image Docker dans votre compte. AWSdocker repository/docker image name -
Pour utiliser une image Docker privée, choisissez Image personnalisée. Pour Type d'environnement, choisissez ARM , Linux, Linux GPU ou Windows. Pour Image registry (Registre de l'image), choisissez Other registry (Autre registre) et entrez l'ARN des informations d'identification de votre image Docker privée. Les informations d'identification doivent être créées par Secrets Manager. Pour plus d'informations, consultez Présentation de AWS Secrets Manager dans le Guide de l'utilisateur AWS Secrets Manager .
Note
CodeBuild remplace le
ENTRYPOINTpour les images Docker personnalisées. -
- Calcul
-
Effectuez l’une des actions suivantes :
-
Pour utiliser le calcul EC2, choisissez EC2. Le calcul EC2 offre une flexibilité optimisée lors de l'exécution des actions.
-
Pour utiliser le calcul Lambda, choisissez Lambda. Le calcul Lambda offre des vitesses de démarrage optimisées pour vos builds. Lambda permet des builds plus rapides grâce à une latence de démarrage plus faible. Lambda évolue également automatiquement, de sorte que les builds ne sont pas en attente d'exécution. Pour de plus amples informations, veuillez consulter Exécutez des builds sur AWS Lambda Calcul.
-
- Rôle de service
Effectuez l’une des actions suivantes :
-
Si vous n'avez pas de rôle CodeBuild de service, choisissez Nouveau rôle de service. Dans Role name, entrez un nom pour le nouveau rôle.
-
Si vous avez un rôle CodeBuild de service, choisissez Rôle de service existant. Dans Role ARN, choisissez le rôle de service.
Note
Lorsque vous utilisez la console pour créer un projet de génération, vous pouvez créer un rôle de CodeBuild service en même temps. Par défaut, le rôle fonctionne avec ce projet de génération uniquement. Si vous utilisez la console pour associer ce rôle de service à un autre projet de génération, le rôle est mis à jour pour fonctionner avec l'autre projet de génération. Un rôle de service peut fonctionner avec 10 projets de génération maximum.
-
- Configuration supplémentaire
-
- Auto-retry limit
-
Spécifiez le nombre de nouvelles tentatives automatiques supplémentaires après l'échec d'une compilation. Par exemple, si la limite de nouvelles tentatives automatiques est définie sur 2, l'API CodeBuild appellera l'
RetryBuildAPI pour réessayer automatiquement votre build jusqu'à 2 fois supplémentaires. - Expiration
-
Spécifiez une valeur comprise entre 5 minutes et 36 heures, après quoi la CodeBuild génération s'arrête si elle n'est pas terminée. Si les valeurs de heures et minutes sont laissées vides, la valeur par défaut de 60 minutes est utilisée.
- Privilège
-
(Facultatif) Sélectionnez Activer cet indicateur si vous souhaitez créer des images Docker ou si vous souhaitez que vos builds bénéficient de privilèges élevés uniquement si vous prévoyez d'utiliser ce projet de génération pour créer des images Docker. Sinon, toutes les générations associées qui tentent d'interagir avec le démon Docker échouent. Vous devez également démarrer le démon Docker afin que vos générations puissent interagir avec celui-ci. Pour ce faire, vous pouvez initialiser le démon Docker dans la
installphase de votre buildspec en exécutant les commandes de construction suivantes. N'exécutez pas ces commandes si vous avez choisi une image d'environnement de génération fournie CodeBuild par le support Docker.Note
Par défaut, le démon Docker est activé pour les builds non VPC. Si vous souhaitez utiliser des conteneurs Docker pour les builds de VPC, consultez Runtime Privilege et Linux Capabilities
sur le site Web de Docker Docs et activez le mode privilégié. De plus, Windows ne prend pas en charge le mode privilégié. - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done" - VPC
Si vous souhaitez CodeBuild travailler avec votre VPC :
-
Pour VPC, choisissez l'ID de VPC utilisé. CodeBuild
-
Pour les sous-réseaux VPC, choisissez les sous-réseaux qui incluent des ressources qui utilisent. CodeBuild
-
Pour les groupes de sécurité VPC, choisissez les groupes de sécurité CodeBuild utilisés pour autoriser l'accès aux ressources des VPC.
Pour de plus amples informations, veuillez consulter Utilisation AWS CodeBuild avec Amazon Virtual Private Cloud.
-
- Calcul
-
Choisissez l'une des options disponibles.
- Identifiant du registre
-
Spécifiez un identifiant de registre lorsque le projet est configuré avec une image de registre non privée.
Note
Ces informations d'identification ne seront utilisées que si les images sont remplacées par celles provenant de registres privés.
- Variables d'environnement
-
Entrez le nom et la valeur, puis choisissez le type de chaque variable d'environnement à utiliser par les builds.
Note
CodeBuild définit automatiquement la variable d'environnement pour votre AWS région. Vous devez définir les variables d'environnement suivantes si vous ne les avez pas ajoutées dans votre fichier buildspec.yml :
-
AWS_ACCOUNT_ID
-
IMAGE_REPO_NAME
-
IMAGE_TAG
La console et AWS CLI les utilisateurs peuvent voir les variables d'environnement. Si la visibilité de vos variables d'environnement ne vous pose pas de problème, définissez les zones Nom et Valeur, puis définissez Type sur Texte brut.
Nous vous recommandons de stocker une variable d'environnement avec une valeur sensible, telle qu'un ID de clé d' AWS accès, une clé d'accès AWS secrète ou un mot de passe en tant que paramètre dans Amazon EC2 Systems Manager Parameter Store ou AWS Secrets Manager.
Si vous utilisez Amazon EC2 Systems Manager Parameter Store, choisissez Parameter dans Type. Dans le champ Nom, entrez un identifiant CodeBuild à référencer. Dans Value, entrez le nom du paramètre tel qu'il est stocké dans le magasin de paramètres Amazon EC2 Systems Manager. Si l'on prend comme exemple un paramètre nommé
/CodeBuild/dockerLoginPassword, pour Type, choisissez Parameter (Paramètre). Pour Nom, saisissezLOGIN_PASSWORD. Pour le champ Valeur, saisissez/CodeBuild/dockerLoginPassword.Important
Si vous utilisez Amazon EC2 Systems Manager Parameter Store, nous vous recommandons de stocker les paramètres avec des noms de paramètres commençant par
/CodeBuild/(par exemple,/CodeBuild/dockerLoginPassword). Vous pouvez utiliser la CodeBuild console pour créer un paramètre dans Amazon EC2 Systems Manager. Choisissez Create parameter (Créer un paramètre), puis suivez les instructions de la boîte de dialogue. (Dans cette boîte de dialogue, pour la clé KMS, vous pouvez spécifier l'ARN d'une AWS KMS clé de votre compte. Amazon EC2 Systems Manager utilise cette clé pour chiffrer la valeur du paramètre pendant le stockage et la déchiffrer lors de la récupération.) Si vous utilisez la CodeBuild console pour créer un paramètre, la console commence le nom du paramètre par «/CodeBuild/tel qu'il est stocké ». Pour plus d'informations, consultez la section Procédure pas à pas du magasin de paramètres de Systems Manager et de la console de stockage de paramètres de Systems Manager dans le guide de l'utilisateur d'Amazon EC2 Systems Manager.Si votre projet de génération fait référence à des paramètres stockés dans le magasin de paramètres Amazon EC2 Systems Manager, le rôle de service du projet de génération doit autoriser l'
ssm:GetParametersaction. Si vous avez choisi Nouveau rôle de service plus tôt, CodeBuild inclut cette action dans le rôle de service par défaut de votre projet de génération. En revanche, si vous avez choisi précédemment Existing service role (Rôle de service existant), vous devez inclure séparément cette action dans votre rôle de service.Si votre projet de génération fait référence à des paramètres stockés dans le magasin de paramètres Amazon EC2 Systems Manager avec des noms de paramètres qui ne commencent pas par
/CodeBuild/, et que vous avez choisi Nouveau rôle de service, vous devez mettre à jour ce rôle de service pour permettre l'accès aux noms de paramètres qui ne commencent/CodeBuild/pas par. En effet, ce rôle de service permet uniquement d'accéder aux noms de paramètres qui commencent par/CodeBuild/.Si vous choisissez Nouveau rôle de service, le rôle de service inclut l'autorisation de déchiffrer tous les paramètres contenus dans l'
/CodeBuild/espace de noms du magasin de paramètres Amazon EC2 Systems Manager.Les variables d'environnement que vous définissez remplacent les variables d'environnement existantes. Par exemple, si l'image Docker contient déjà une variable d'environnement nommée
MY_VARavec la valeurmy_valueet que vous définissez une variable d'environnement nomméeMY_VARavec la valeurother_value, la valeurmy_valueest remplacée parother_value. De même, si l'image Docker contient déjà une variable d'environnement nomméePATHavec la valeur/usr/local/sbin:/usr/local/binet que vous définissez une variable d'environnement nomméePATHavec la valeur$PATH:/usr/share/ant/bin, la valeur/usr/local/sbin:/usr/local/binest remplacée par la valeur littérale$PATH:/usr/share/ant/bin.Ne définissez pas de variables d'environnement avec un nom commençant par
CODEBUILD_. Ce préfixe est réservé à une utilisation interne .Si une variable d'environnement avec le même nom est définie dans plusieurs emplacements, la valeur est déterminée comme suit :
-
La valeur de l'appel d'opération de démarrage de génération a une priorité plus élevée.
-
La valeur de la définition de projet de génération vient ensuite dans l'ordre des priorités.
-
La valeur figurant dans la déclaration buildspec a la priorité la plus faible.
Si vous utilisez Secrets Manager, dans Type, choisissez Secrets Manager. Dans le champ Nom, entrez un identifiant CodeBuild à référencer. Pour Value (Valeur), saisissez un
reference-keyà l'aide du modèle. Pour plus d'informations, consultez Secrets Manager reference-key in the buildspec file.secret-id:json-key:version-stage:version-idImportant
Si vous utilisez le Gestionnaire de secrets, nous vous recommandons de stocker les secrets dont le nom commence par
/CodeBuild/(par exemple,/CodeBuild/dockerLoginPassword). Pour plus d'informations, consultez Présentation de AWS Secrets Manager dans le Guide de l'utilisateur AWS Secrets Manager .Si votre projet de génération fait référence à des secrets stockés dans Secrets Manager, le rôle de service du projet de génération doit autoriser l'
secretsmanager:GetSecretValueaction. Si vous avez choisi Nouveau rôle de service plus tôt, CodeBuild inclut cette action dans le rôle de service par défaut de votre projet de génération. En revanche, si vous avez choisi précédemment Existing service role (Rôle de service existant), vous devez inclure séparément cette action dans votre rôle de service.Si votre projet de génération fait référence à des secrets stockés dans Secrets Manager avec des noms secrets ne commençant pas par
/CodeBuild/, et que vous avez choisi Nouveau rôle de service, vous devez mettre à jour le rôle de service pour autoriser l'accès aux noms secrets qui ne commencent pas par/CodeBuild/. En effet, le rôle de service n'autorise l'accès qu'aux noms secrets commençant par/CodeBuild/.Si vous choisissez Nouveau rôle de service, le rôle de service inclut l'autorisation de déchiffrer tous les secrets contenus dans l'
/CodeBuild/espace de noms du Gestionnaire de secrets. -
Spécifications de construction
- Spécifications de construction
-
Effectuez l’une des actions suivantes :
-
Si votre code source inclut un fichier buildspec, choisissez Utiliser un fichier buildspec. Par défaut, CodeBuild recherche un fichier nommé
buildspec.ymldans le répertoire racine de code source. Si votre fichier buildspec utilise un nom ou un emplacement différent, entrez son chemin depuis la racine source dans Buildspec name (par exemple, ou.buildspec-two.ymlconfiguration/buildspec.ymlSi le fichier buildspec se trouve dans un compartiment S3, il doit se trouver dans la même AWS région que votre projet de construction. Spécifiez le fichier buildspec à l'aide de son ARN (par exemple,arn:aws:s3:::).<my-codebuild-sample2>/buildspec.yml -
Si votre code source ne comprend pas de fichier de spécification de génération ou si vous souhaitez exécuter des commandes de génération différentes de celles spécifiées pour la phase
builddans le fichierbuildspec.ymlau sein du répertoire racine du code source, choisissez Insérer des commandes de génération. Pour Build commands (Commandes de génération), saisissez les commandes que vous souhaitez exécuter lors de la phasebuild. Pour plusieurs commandes, séparez celles-ci avec&&(par exemple,mvn test && mvn package). Pour exécuter des commandes dans d'autres phases, ou si vous disposez d'une longue liste de commandes pour labuildphase, ajoutez unbuildspec.ymlfichier au répertoire racine du code source, ajoutez les commandes au fichier, puis choisissez Utiliser le buildspec.yml dans le répertoire racine du code source.
Pour de plus amples informations, veuillez consulter Référence des spécifications de génération.
-
Configuration par lots
Vous pouvez exécuter un groupe de versions en une seule opération. Pour de plus amples informations, veuillez consulter Exécutez des builds par lots.
- Définition de la configuration par lots
-
Sélectionnez cette option pour autoriser les compilations par lots dans ce projet.
- Rôle du service par lots
-
Fournit le rôle de service pour les créations par lots.
Sélectionnez l’une des méthodes suivantes :
-
Si vous n'avez pas de rôle de service par lots, choisissez Nouveau rôle de service. Dans Rôle de service, entrez le nom du nouveau rôle.
-
Si vous avez un rôle de service par lots, choisissez Rôle de service existant. Dans Rôle de service, choisissez le rôle de service.
Les générations en lot introduisent un nouveau rôle de sécurité dans la configuration par lots. Ce nouveau rôle est obligatoire car vous CodeBuild devez être en mesure d'appeler les
RetryBuildactionsStartBuildStopBuild, et en votre nom pour exécuter des builds dans le cadre d'un lot. Les clients doivent utiliser un nouveau rôle, et non le même rôle qu’ils utilisent dans leur build, pour deux raisons :-
Donner au rôle de build
StartBuild,StopBuildetRetryBuildles autorisations permettrait à une seule build de lancer davantage de builds via le buildspec. -
CodeBuild les builds par lots fournissent des restrictions qui limitent le nombre de builds et les types de calcul qui peuvent être utilisés pour les builds du batch. Si le rôle de build dispose de ces autorisations, il est possible que les builds elles-mêmes puissent contourner ces restrictions.
-
- Types de calcul autorisés pour le traitement par lots
-
Sélectionnez les types de calcul autorisés pour le lot. Sélectionnez toutes les réponses qui s'appliquent.
- Flottes autorisées pour les lots
-
Sélectionnez les flottes autorisées pour le lot. Sélectionnez toutes les réponses qui s'appliquent.
- Nombre maximum de versions autorisées par lot
-
Entrez le nombre maximum de versions autorisées dans le lot. Si un lot dépasse cette limite, il échouera.
- Délai d'expiration du lot
-
Entrez la durée maximale pendant laquelle la génération par lots doit être terminée.
- Combinez des artefacts
-
Sélectionnez Combiner tous les artefacts du lot en un seul emplacement pour regrouper tous les artefacts du lot en un seul emplacement.
- Mode de rapport par lots
-
Sélectionnez le mode de rapport d'état de construction souhaité pour les constructions par lots.
Note
Ce champ n'est disponible que lorsque la source du projet est Bitbucket ou GitHub Enterprise GitHub, et que l'option Signaler les états de construction au fournisseur source au début et à la fin de vos builds est sélectionnée sous Source.
- Constructions agrégées
-
Sélectionnez cette option pour que les statuts de toutes les versions du lot soient combinés dans un seul rapport d'état.
- Constructions individuelles
-
Sélectionnez cette option pour que les états de construction de toutes les versions du lot soient signalés séparément.
Artefacts
- Type
-
Effectuez l’une des actions suivantes :
-
Si vous ne souhaitez pas créer des artefacts de sortie de génération, choisissez Aucun artefact. Vous pouvez le faire si vous n'exécutez que des tests de construction ou si vous souhaitez envoyer une image Docker vers un référentiel Amazon ECR.
-
Pour stocker la sortie de compilation dans un compartiment S3, choisissez Amazon S3, puis procédez comme suit :
-
Si vous souhaitez utiliser votre nom de projet pour le dossier ou le fichier ZIP de sortie de génération, ne renseignez pas le champ Nom. Sinon, entrez le nom. (Si vous souhaitez produire un fichier ZIP et que vous voulez que celui-ci ait une extension de fichier, veillez à l'inclure après le nom de fichier ZIP.)
-
Sélectionnez Activer la gestion sémantique des versions si vous voulez qu'un nom spécifié dans le fichier buildspec remplace le nom spécifié dans la console. Le nom figurant dans un fichier buildspec est calculé au moment de la génération et utilise le langage de commandes Shell. Par exemple, vous pouvez ajouter une date et une heure au nom de votre artefact afin qu'il soit toujours unique. Les noms d'artefact uniques empêchent les artefacts d'être écrasés. Pour de plus amples informations, veuillez consulter Syntaxe d'un fichier buildspec.
-
Pour Nom du compartiment, choisissez le nom du compartiment de sortie.
-
Si vous avez sélectionné Insérer des commandes de génération précédemment dans cette procédure, pour Fichiers de sortie, saisissez les emplacements des fichiers de la génération que vous souhaitez placer dans le dossier ou le fichier ZIP de sortie de génération. Pour plusieurs emplacements, séparez ceux-ci avec une virgule (par exemple,
appspec.yml, target/my-app.jar). Pour de plus amples informations, consultez la description defilesdans Syntaxe d'un fichier buildspec. -
Si vous ne souhaitez pas que vos artefacts de génération soient chiffrés, choisissez Remove artifacts encryption (Supprimer le chiffrement des artefacts).
-
Pour chaque ensemble d'artefacts secondaire que vous souhaitez :
-
Pour Artifact identifier (Identifiant d'artefact), saisissez une valeur de moins de 128 caractères et contenant uniquement des caractères alphanumériques et des traits de soulignement.
-
Choisissez Add artifact (Ajouter un artefact).
-
Suivez les étapes précédentes pour configurer vos artefacts secondaires.
-
Choisissez Save artifact (Enregistrer l'artefact).
-
- Configuration supplémentaire
-
- Clé de chiffrement
-
(Facultatif) Effectuez l’une des actions suivantes :
-
Pour utiliser le code Clé gérée par AWS Amazon S3 de votre compte afin de chiffrer les artefacts de sortie de compilation, laissez le champ Clé de chiffrement vide. Il s’agit de l’option par défaut.
-
Pour utiliser une clé gérée par le client afin de chiffrer les artefacts de sortie de compilation, dans Clé de chiffrement, entrez l'ARN de la clé KMS. Utilisez le format
arn:aws:kms:.region-ID:account-ID:key/key-ID
-
- Type de cache
Pour Cache type (Type de cache), choisissez l'une des valeurs suivantes :
-
Si vous ne souhaitez pas utiliser un cache, choisissez Aucun cache.
-
Si vous souhaitez utiliser un cache Amazon S3, choisissez Amazon S3, puis procédez comme suit :
-
Pour Compartiment, choisissez le nom du compartiment S3 dans lequel le cache est stocké.
-
(Facultatif) Pour Préfixe du chemin du cache, entrez un préfixe de chemin Amazon S3. La valeur Cache path prefix (Préfixe du chemin de cache) est semblable à un nom de répertoire. Cela vous permet de stocker le cache sous le même répertoire au sein d'un compartiment.
Important
N'ajoutez pas de barre oblique de fin (/) à la fin du préfixe du chemin.
-
-
Si vous souhaitez utiliser un cache local, choisissez Local, puis sélectionnez une ou plusieurs modes de cache local.
Note
Le mode de cache de couche Docker est disponible pour Linux uniquement. Si vous choisissez ce mode, votre projet doit être exécuté en mode privilégié.
L'utilisation d'un cache permet de gagner beaucoup de temps de génération, car les parties réutilisables de l'environnement de génération sont stockées dans le cache et utilisées d'une génération à l'autre. Pour de plus amples informations sur la spécification d'un cache dans le fichier de spécification de génération, consultez Syntaxe d'un fichier buildspec. Pour plus d'informations sur la mise en cache, consultez Le cache est créé pour améliorer les performances.
-
Journaux
Choisissez les journaux que vous souhaitez créer. Vous pouvez créer des CloudWatch journaux Amazon, des journaux Amazon S3 ou les deux.
- CloudWatch
-
Si vous souhaitez consulter CloudWatch les journaux Amazon Logs :
- CloudWatch journaux
-
Sélectionnez Journaux CloudWatch .
- Nom du groupe
-
Entrez le nom de votre groupe de CloudWatch journaux Amazon Logs.
- Nom du stream
-
Entrez le nom de votre flux de CloudWatch journaux Amazon Logs.
- S3
-
Si vous voulez des journaux Amazon S3 :
- Journaux S3
-
Sélectionnez Journaux S3.
- Compartiment
-
Choisissez le nom du compartiment S3 pour vos journaux.
- Préfixe du chemin
-
Entrez le préfixe de vos journaux.
- Désactiver le chiffrement des journaux S3
-
Sélectionnez cette option si vous ne souhaitez pas que vos journaux S3 soient chiffrés.
Créez un projet de construction (AWS CLI)
Pour plus d'informations sur l'utilisation de AWS CLI with CodeBuild, consultez leRéférence des commandes en ligne.
Pour créer un projet de CodeBuild construction à l'aide de AWS CLI, vous devez créer une structure de JSON-formatted projet, remplir la structure et appeler la create-project commande pour créer le projet.
Créez le fichier JSON
Créez un fichier JSON squelette à l'aide de la create-project commande, en utilisant l'--generate-cli-skeletonoption :
aws codebuild create-project --generate-cli-skeleton ><json-file>
Cela crée un fichier JSON dont le chemin et le nom de fichier sont spécifiés par<json-file>.
Remplissez le fichier JSON
Modifiez les données JSON comme suit et enregistrez vos résultats.
{ "name": "<project-name>", "description": "<description>", "source": { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "buildStatusConfig": { "context": "<context>", "targetUrl": "<target-url>" }, "gitSubmodulesConfig": { "fetchSubmodules": "<fetch-submodules>" }, "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" }, "secondarySources": [ { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" } ], "secondarySourceVersions": [ { "sourceIdentifier": "<secondary-source-identifier>", "sourceVersion": "<secondary-source-version>" } ], "sourceVersion": "<source-version>", "artifacts": { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<artifacts-location>", "path": "<artifacts-path>", "namespaceType": "<artifacts-namespacetype>", "name": "<artifacts-name>", "overrideArtifactName": "<override-artifact-name>", "packaging": "<artifacts-packaging>" }, "secondaryArtifacts": [ { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<secondary-artifact-location>", "path": "<secondary-artifact-path>", "namespaceType": "<secondary-artifact-namespaceType>", "name": "<secondary-artifact-name>", "packaging": "<secondary-artifact-packaging>", "artifactIdentifier": "<secondary-artifact-identifier>" } ], "cache": { "type": "<cache-type>", "location": "<cache-location>", "mode": [ "<cache-mode>" ] }, "environment": { "type": "LINUX_CONTAINER" | "LINUX_GPU_CONTAINER" | "ARM_CONTAINER" | "WINDOWS_SERVER_2019_CONTAINER" | "WINDOWS_SERVER_2022_CONTAINER", "image": "<image>", "computeType": "BUILD_GENERAL1_SMALL" | "BUILD_GENERAL1_MEDIUM" | "BUILD_GENERAL1_LARGE" | "BUILD_GENERAL1_2XLARGE", "certificate": "<certificate>", "environmentVariables": [ { "name": "<environmentVariable-name>", "value": "<environmentVariable-value>", "type": "<environmentVariable-type>" } ], "registryCredential": [ { "credential": "<credential-arn-or-name>", "credentialProvider": "<credential-provider>" } ], "imagePullCredentialsType": "CODEBUILD" | "SERVICE_ROLE", "privilegedMode": "<privileged-mode>" }, "serviceRole": "<service-role>", "autoRetryLimit":<auto-retry-limit>, "timeoutInMinutes":<timeout>, "queuedTimeoutInMinutes":<queued-timeout>, "encryptionKey": "<encryption-key>", "tags": [ { "key": "<tag-key>", "value": "<tag-value>" } ], "vpcConfig": { "securityGroupIds": [ "<security-group-id>" ], "subnets": [ "<subnet-id>" ], "vpcId": "<vpc-id>" }, "badgeEnabled": "<badge-enabled>", "logsConfig": { "cloudWatchLogs": { "status": "<cloudwatch-logs-status>", "groupName": "<group-name>", "streamName": "<stream-name>" }, "s3Logs": { "status": "<s3-logs-status>", "location": "<s3-logs-location>", "encryptionDisabled": "<s3-logs-encryption-disabled>" } }, "fileSystemLocations": [ { "type": "EFS", "location": "<EFS-DNS-name-1>:/<directory-path>", "mountPoint": "<mount-point>", "identifier": "<efs-identifier>", "mountOptions": "<efs-mount-options>" } ], "buildBatchConfig": { "serviceRole": "<batch-service-role>", "combineArtifacts":<combine-artifacts>, "restrictions": { "maximumBuildsAllowed":<max-builds>, "computeTypesAllowed": [ "<compute-type>" ], "fleetsAllowed": [ "<fleet-name>" ] }, "timeoutInMins":<batch-timeout>, "batchReportMode": "REPORT_AGGREGATED_BATCH" | "REPORT_INDIVIDUAL_BUILDS" }, "concurrentBuildLimit":<concurrent-build-limit>}
Remplacez les éléments suivants :
name
Obligatoire. Nom de ce projet de génération. Ce nom doit être unique pour tous les projets de construction de votre AWS compte.
description
Facultatif. Description de ce projet de génération.
source
Obligatoire. Un ProjectSource objet qui contient des informations sur les paramètres du code source de ce projet de build. Après avoir ajouté un objet source, vous pouvez ajouter jusqu'à 12 autres sources à l'aide de Sources secondaires. Il s’agit notamment des paramètres suivants :
- source/type
-
Obligatoire. Type de référentiel qui contient le code source à générer. Les valeurs valides sont les suivantes :
-
CODECOMMIT -
CODEPIPELINE -
GITHUB -
GITHUB_ENTERPRISE -
GITLAB -
GITLAB_SELF_MANAGED -
BITBUCKET -
S3 -
NO_SOURCE
Si vous utilisez
NO_SOURCE, buildspec ne peut pas être un fichier, car le projet n'a pas de source. Vous devez plutôt utiliser l'buildspecattribut pour spécifier une YAML-formatted chaîne pour votre buildspec. Pour de plus amples informations, veuillez consulter Création d'un projet de construction sans source. -
- source/lieu
-
Obligatoire, sauf si vous
<source-type>le définissez surCODEPIPELINE. Emplacement du code source pour le type de référentiel spécifié.-
Pour CodeCommit, l'URL du clone HTTPS vers le référentiel qui contient le code source et le fichier buildspec (par exemple,
https://git-codecommit.).<region-id>.amazonaws.com/v1/repos/<repo-name> -
Pour Amazon S3, le nom du compartiment d'entrée de génération, suivi du chemin et du nom du fichier ZIP contenant le code source et la spécification de construction. Par exemple :
-
Pour un fichier ZIP situé à la racine du bucket d'entrée :
<bucket-name>/<object-name>.zip -
Pour un fichier ZIP situé dans un sous-dossier du bucket d'entrée :
.<bucket-name>/<subfoler-path>/<object-name>.zip
-
-
Pour GitHub, l'URL du clone HTTPS vers le référentiel contenant le code source et le fichier buildspec. L'URL doit contenir github.com. Vous devez connecter votre AWS compte à votre GitHub compte. Pour ce faire, utilisez la CodeBuild console pour créer un projet de génération.
-
Choisissez Authorize application. (Une fois connecté à votre GitHub compte, vous n'avez pas besoin de terminer la création du projet de création. Vous pouvez fermer la CodeBuild console.)
-
-
Pour GitHub Enterprise Server, URL de clone HTTP ou HTTPS du référentiel contenant le code source et le fichier buildspec. Vous devez également connecter votre AWS compte à votre compte GitHub Enterprise Server. Pour ce faire, utilisez la CodeBuild console pour créer un projet de génération.
-
Créez un jeton d'accès personnel dans GitHub Enterprise Server.
-
Copiez ce jeton dans votre presse-papiers pour pouvoir l'utiliser lors de la création de votre CodeBuild projet. Pour plus d'informations, consultez la section Création d'un jeton d'accès personnel pour la ligne de commande
sur le site Web d' GitHub aide. -
Lorsque vous utilisez la console pour créer votre CodeBuild projet, dans Source, pour Source provider, choisissez GitHub Enterprise.
-
Pour Personal Access Token, collez le jeton copié dans le Presse-papiers. Choisissez Save Token. Votre CodeBuild compte est désormais connecté à votre compte GitHub Enterprise Server.
-
-
Pour GitLab et GitLab autogéré, l'URL de clone HTTPS du référentiel contenant le code source et le fichier buildspec. Notez que si vous utilisez GitLab, l'URL doit contenir gitlab.com. Si vous utilisez l' GitLab autogestion, il n'est pas nécessaire que l'URL contienne gitlab.com. Vous devez connecter votre AWS compte à votre compte GitLab ou à un compte GitLab autogéré. Pour cela, utilisez la console CodeBuild pour créer un projet de génération.
-
Dans le volet de navigation des Outils de développement, choisissez Paramètres, Connexions, puis Créer une connexion. Sur cette page, créez une connexion GitLab ou une connexion GitLab autogérée, puis choisissez Se connecter à GitLab.
-
-
Pour Bitbucket, l'URL de clone HTTPS vers le référentiel qui contient le code source et le fichier buildspec. L'URL doit contenir bitbucket.org. Vous devez également connecter votre AWS compte à votre compte Bitbucket. Pour ce faire, utilisez la CodeBuild console pour créer un projet de génération.
-
Lorsque vous utilisez la console pour vous connecter (ou vous reconnecter) à Bitbucket, dans la page Bitbucket Confirm access to your account, choisissez Grant access. (Une fois connecté à votre compte Bitbucket, vous n'avez pas besoin de terminer la création du projet de build. Vous pouvez fermer la CodeBuild console.)
-
-
Pour AWS CodePipeline, ne spécifiez pas de
locationvaleur poursource. CodePipeline ignore cette valeur car lorsque vous créez un pipeline dans CodePipeline, vous spécifiez l'emplacement du code source dans l'étape Source du pipeline.
-
- source/ git CloneDepth
-
Facultatif. Profondeur de l'historique à télécharger. La valeur minimum est de 0. Si cette valeur est égale à 0, supérieure à 25 ou non spécifiée, l'historique complet est téléchargé avec chaque projet de génération. Si votre type de source est Amazon S3, cette valeur n'est pas prise en charge.
- source/spécification de construction
-
Facultatif. Définition de spécification de génération ou fichier à utiliser. Si cette valeur n'est pas fournie ou qu'elle est définie sur une chaîne vide, le code source doit contenir un fichier
buildspec.ymldans son répertoire racine. Si cette valeur est définie, il peut s'agir d'une définition de spécification de construction en ligne, du chemin d'accès à un autre fichier de spécification de construction relatif au répertoire racine de votre source principale ou du chemin d'accès à un compartiment S3. Le compartiment doit se trouver dans la même AWS région que le projet de construction. Spécifiez le fichier buildspec à l'aide de son nom ARN (par exemple,arn:aws:s3:::). Pour de plus amples informations, veuillez consulter Nom de fichier buildspec et emplacement de stockage.<my-codebuild-sample2>/buildspec.yml - source/ authentification
-
Contient des informations sur les paramètres d'autorisation CodeBuild pour accéder au code source à créer.
- source/auth/tapez
-
Obligatoire. Le type d'autorisation à utiliser. Les valeurs valides sont :
-
OAUTH -
CODECONNECTIONS -
SECRETS_MANAGER
-
- source/auth/ressource
-
Facultatif. La valeur de la ressource qui s'applique au type d'autorisation spécifié. Il peut s'agir de l'ARN du Secrets Manager ou de l' CodeConnections ARN.
- source/ rapport BuildStatus
-
Indique si vous souhaitez envoyer le statut de début et de fin d'une génération à votre fournisseur de source. Si vous définissez ce paramètre avec un fournisseur source autre que GitHub GitHub Enterprise Server ou Bitbucket, un message
invalidInputExceptionest émis.Pour pouvoir signaler l'état de construction au fournisseur source, l'utilisateur associé au fournisseur source doit disposer d'un accès en écriture au dépôt. Si l'utilisateur n'a pas accès en écriture, l'état de compilation ne peut pas être mis à jour. Pour de plus amples informations, veuillez consulter Accès au fournisseur source.
- sourcer/créer StatusConfig
-
Contient des informations qui définissent la manière dont le CodeBuild projet de génération communique l'état de construction au fournisseur source. Cette option n'est utilisée que lorsque le type de source est
GITHUBGITHUB_ENTERPRISE, ouBITBUCKET.- source/buildStatusConfig/contexte
-
Pour les sources Bitbucket, ce paramètre est utilisé pour le
nameparamètre dans l'état de validation de Bitbucket. Pour les GitHub sources, ce paramètre est utilisé pour lecontextparamètre dans l'état de GitHub validation.Par exemple, vous pouvez faire en sorte que le code de build et le déclencheur du webhook
contextcontiennent le numéro de version à l'aide des variables d' CodeBuildenvironnement :AWS CodeBuild sample-project Build #$CODEBUILD_BUILD_NUMBER - $CODEBUILD_WEBHOOK_TRIGGERLe contexte apparaît ainsi pour le build #24 déclenché par un événement de demande d'extraction du webhook :
AWS CodeBuild sample-project Build #24 - pr/8
- source/buildStatusConfig/URL cible
-
Pour les sources Bitbucket, ce paramètre est utilisé pour le
urlparamètre dans l'état de validation de Bitbucket. Pour les GitHub sources, ce paramètre est utilisé pour letarget_urlparamètre dans l'état de GitHub validation.Par exemple, vous pouvez définir la valeur
targetUrlàhttps://aws.amazon.com/codebuild/et le statut de validation sera lié à cette URL.<path to build>Vous pouvez également inclure des variables d' CodeBuild environnement dans le
targetUrlpour ajouter des informations supplémentaires à l'URL. Par exemple, pour ajouter la région de création à l'URL, définissez la valeurtargetUrlsur :"targetUrl": "https://aws.amazon.com/codebuild/<path to build>?region=$AWS_REGION"Si la région de construction l'est
us-east-2, cela s'étendra à :https://aws.amazon.com/codebuild/<path to build>?region=us-east-2
- source/ git SubmodulesConfig
-
Facultatif. Informations sur la configuration des sous-modules Git. Utilisé avec CodeCommit GitHub, GitHub Enterprise Server et Bitbucket uniquement.
- source/gitSubmodulesConfig/Récupérer les sous-modules
-
Définissez
fetchSubmodulessurtruesi vous souhaitez inclure les sous-modules Git dans votre référentiel. Les sous-modules Git inclus doivent être configurés en tant que HTTPS.
- source/ InsecureSsl
-
Facultatif. Utilisé uniquement avec GitHub Enterprise Server. Définissez cette valeur
truepour ignorer les avertissements TLS lors de la connexion à votre référentiel de projets GitHub Enterprise Server. La valeur par défaut estfalse.InsecureSsldoit être utilisé à des fins de test uniquement. Cette option ne doit pas être utilisée dans un environnement de production. - source/ Identifiant de la source
-
Identifiant défini par l'utilisateur pour la source du projet. Facultatif pour la source principale. Nécessaire pour les sources secondaires.
Sources secondaires
Facultatif. Tableau d'ProjectSourceobjets contenant des informations sur les sources secondaires d'un projet de construction. Vous pouvez ajouter jusqu'à 12 sources secondaires. Les secondarySources objets utilisent les mêmes propriétés que celles utilisées par l'sourceobjet. Dans un objet source secondaire, le sourceIdentifier est obligatoire.
secondaire SourceVersions
Facultatif. Tableau d’objets ProjectSourceVersion. Si secondarySourceVersions est spécifié au niveau de la build, ils ont priorité sur cela.
Version source
Facultatif. La version de l'entrée de compilation à créer pour ce projet. Si elle n'est pas spécifiée, la dernière version est utilisée. Si cette valeur est spécifiée, elle doit être l'une des suivantes :
-
Pour CodeCommit, l'ID de validation, la branche ou la balise Git à utiliser.
-
Pour GitHub, l'ID de validation, l'ID de demande d'extraction, le nom de la branche ou le nom de la balise qui correspond à la version du code source que vous souhaitez créer. Si un ID de demande d'extraction est spécifié, il doit utiliser le format
pr/pull-request-ID(par exemple,pr/25). Si un nom de branche est spécifié, l'ID de validation HEAD de la branche est utilisé. S’il n'est pas spécifié, l'ID de validation HEAD de la branche par défaut est utilisé. -
Pour GitLab, l'ID de validation, l'ID de demande d'extraction, le nom de la branche, le nom de la balise ou la référence et un ID de validation. Pour de plus amples informations, veuillez consulter Exemple de version source avec AWS CodeBuild.
-
Pour Bitbucket, l'ID de validation, le nom de branche ou le nom de balise qui correspond à la version du code source à générer. Si un nom de branche est spécifié, l'ID de validation HEAD de la branche est utilisé. S’il n'est pas spécifié, l'ID de validation HEAD de la branche par défaut est utilisé.
-
Pour Amazon S3, ID de version de l'objet qui représente le fichier ZIP d'entrée de génération à utiliser.
Si sourceVersion est spécifié à la build, cette version est prioritaire sur cette sourceVersion (au niveau du projet). Pour de plus amples informations, veuillez consulter Exemple de version source avec AWS CodeBuild.
artefacts
Obligatoire. Un ProjectArtifacts objet qui contient des informations sur les paramètres des artefacts de sortie de ce projet de construction. Après avoir ajouté un objet artifacts, vous pouvez ajouter jusqu'à 12 autres artefacts à l'aide de Artefacts secondaires. Il s’agit notamment des paramètres suivants :
- artéfacts/type
-
Obligatoire. Le type d'objet de sortie de la build. Les valeurs valides sont :
-
CODEPIPELINE -
NO_ARTIFACTS -
S3
-
- artéfacts/localisation
-
À utiliser uniquement avec le type
S3d'artefact. Non utilisé pour les autres types d'artefacts.Nom du compartiment de sortie que vous avez créé ou identifié dans les prérequis.
- artéfacts/chemin
-
À utiliser uniquement avec le type
S3d'artefact. Non utilisé pour les autres types d'artefacts.Le chemin du compartiment de sortie dans lequel placer le fichier ou le dossier ZIP. Si vous ne spécifiez pas de valeur pour
path, CodeBuild utilisenamespaceType(si spécifié) etnamepour déterminer le chemin et le nom du fichier ZIP ou du dossier de sortie de compilation. Par exemple, si vous spécifiezMyPathpourpathetMyArtifact.zippourname, le chemin et le nom seraientMyPath/MyArtifact.zip. - artéfacts/Type d'espace de noms
-
À utiliser uniquement avec le type
S3d'artefact. Non utilisé pour les autres types d'artefacts.L'espace de noms du fichier ZIP ou du dossier de sortie de génération. Les valeurs valides sont
BUILD_IDetNONE. UtilisezBUILD_IDpour insérer l'ID de génération dans le chemin du fichier ZIP ou dossier de sortie de génération. Dans le cas contraire, utilisezNONE. Si vous ne spécifiez pas de valeur pournamespaceType, CodeBuild utilisepath(si spécifié) etnamepour déterminer le chemin et le nom du fichier ZIP ou du dossier de sortie de compilation. Par exemple, si vous spécifiezMyPathBUILD_IDpourpathnamespaceType, pour etMyArtifact.zippourname, le chemin et le nom seraientMyPath/.build-ID/MyArtifact.zip - artefacts/nom
-
À utiliser uniquement avec le type
S3d'artefact. Non utilisé pour les autres types d'artefacts.Le nom du fichier ZIP de sortie de compilation ou du dossier qu'il contient
location. Par exemple, si vous spécifiezMyPathpourpathetMyArtifact.zippourname, le chemin et le nom seraientMyPath/MyArtifact.zip. - artéfacts/ remplacer ArtifactName
-
Utilisé uniquement avec le type d'artefact S3. Non utilisé pour les autres types d'artefacts.
Facultatif. S'il est défini sur
true, le nom spécifié dans leartifactsbloc du fichier buildspec l'emporte.namePour de plus amples informations, veuillez consulter Créer une référence de spécification pour CodeBuild. - artéfacts/emballages
-
À utiliser uniquement avec le type
S3d'artefact. Non utilisé pour les autres types d'artefacts.Facultatif. Spécifie comment empaqueter les artefacts. Les valeurs autorisées sont les suivantes :
- NONE
-
Créez un dossier contenant les artefacts de construction. C’est la valeur par défaut.
- ZIP
-
Créez un fichier ZIP contenant les artefacts de construction.
Artefacts secondaires
Facultatif. Tableau d'ProjectArtifactsobjets contenant des informations sur les paramètres des artefacts secondaires pour un projet de construction. Vous pouvez ajouter jusqu'à 12 artefacts secondaires. secondaryArtifacts utilise un grand nombre de paramètres communs à l'objet artefacts.
cache
Obligatoire. Un ProjectCache objet qui contient des informations sur les paramètres de cache de ce projet de build. Pour de plus amples informations, veuillez consulter Constructions de cache.
environment
Obligatoire. ProjectEnvironmentObjet contenant des informations sur les paramètres de l'environnement de génération de ce projet. Ces paramètres sont les suivants :
- environnement/type
-
Obligatoire. Le type d'environnement de génération. Pour plus d'informations, consultez la section Type dans la référence de CodeBuild l'API.
- environnement/image
-
Obligatoire. Identifiant d'image Docker utilisé par cet environnement de génération. Généralement, cet identifiant est exprimé comme suit
image-name:tag. Par exemple, dans le référentiel Docker CodeBuild utilisé pour gérer ses images Docker, cela peut être le casaws/codebuild/standard:5.0. Dans Docker Hub,maven:3.3.9-jdk-8. Dans Amazon ECR,. Pour de plus amples informations, veuillez consulter Images Docker fournies par CodeBuild.account-id.dkr.ecr.region-id.amazonaws.com/your-Amazon-ECR-repo-name:tag - environnement/ ComputeType
-
Obligatoire. Spécifie les ressources de calcul utilisées par cet environnement de génération. Pour plus d'informations, consultez ComputeType dans la référence de l'CodeBuild API.
- environnement/certificat
-
Facultatif. L'ARN du compartiment Amazon S3, le préfixe du chemin et la clé d'objet contenant le PEM-encoded certificat. La clé d'objet peut être simplement le fichier .pem ou un fichier .zip contenant le certificat. PEM-encoded Par exemple, si le nom de votre compartiment Amazon S3 est
, votre préfixe de chemin est<my-bucket>, et le nom de votre clé d'objet est<cert>, les formats acceptables pour<certificate.pem>certificatesontou<my-bucket/cert/certificate.pem>arn:aws:s3:::.<my-bucket/cert/certificate.pem> - environnement/variables d'environnement
-
Facultatif. Tableau d'EnvironmentVariableobjets contenant les variables d'environnement que vous souhaitez spécifier pour cet environnement de génération. Chaque variable d'environnement est exprimée sous la forme d'un objet contenant un
namevaluename,value, ettype.typeLa console et AWS CLI les utilisateurs peuvent voir toutes les variables d'environnement. Si la visibilité de votre variable d'environnement ne vous préoccupe pas, définissez
nameetvalue, puis définisseztypesurPLAINTEXT.Nous vous recommandons de stocker les variables d'environnement contenant des valeurs sensibles, telles qu'un identifiant de clé d' AWS accès, une clé d'accès AWS secrète ou un mot de passe, en tant que paramètre dans Amazon EC2 Systems Manager Parameter Store ou AWS Secrets Manager. Pour
name, pour ce paramètre stocké, définissez un identifiant CodeBuild à référencer.Si vous utilisez le magasin de paramètres Amazon EC2 Systems Manager, pour
value, définissez le nom du paramètre tel qu'il est stocké dans le magasin de paramètres. DéfinisseztypesurPARAMETER_STORE. À l'aide d'un paramètre/CodeBuild/dockerLoginPasswordnommé à titre d'exemple, définisseznamesurLOGIN_PASSWORD. Définissezvaluesur/CodeBuild/dockerLoginPassword. DéfinisseztypesurPARAMETER_STORE.Important
Si vous utilisez Amazon EC2 Systems Manager Parameter Store, nous vous recommandons de stocker les paramètres avec des noms de paramètres commençant par
/CodeBuild/(par exemple,/CodeBuild/dockerLoginPassword). Vous pouvez utiliser la CodeBuild console pour créer un paramètre dans Amazon EC2 Systems Manager. Choisissez Create parameter (Créer un paramètre), puis suivez les instructions de la boîte de dialogue. (Dans cette boîte de dialogue, pour la clé KMS, vous pouvez spécifier l'ARN d'une AWS KMS clé de votre compte. Amazon EC2 Systems Manager utilise cette clé pour chiffrer la valeur du paramètre pendant le stockage et la déchiffrer lors de la récupération.) Si vous utilisez la CodeBuild console pour créer un paramètre, la console commence le nom du paramètre par «/CodeBuild/tel qu'il est stocké ». Pour plus d'informations, consultez la section Procédure pas à pas du magasin de paramètres de Systems Manager et de la console de stockage de paramètres de Systems Manager dans le guide de l'utilisateur d'Amazon EC2 Systems Manager.Si votre projet de génération fait référence à des paramètres stockés dans le magasin de paramètres Amazon EC2 Systems Manager, le rôle de service du projet de génération doit autoriser l'
ssm:GetParametersaction. Si vous avez choisi Nouveau rôle de service plus tôt, CodeBuild inclut cette action dans le rôle de service par défaut de votre projet de génération. En revanche, si vous avez choisi précédemment Existing service role (Rôle de service existant), vous devez inclure séparément cette action dans votre rôle de service.Si votre projet de génération fait référence à des paramètres stockés dans le magasin de paramètres Amazon EC2 Systems Manager avec des noms de paramètres qui ne commencent pas par
/CodeBuild/, et que vous avez choisi Nouveau rôle de service, vous devez mettre à jour ce rôle de service pour permettre l'accès aux noms de paramètres qui ne commencent/CodeBuild/pas par. En effet, ce rôle de service permet uniquement d'accéder aux noms de paramètres qui commencent par/CodeBuild/.Si vous choisissez Nouveau rôle de service, le rôle de service inclut l'autorisation de déchiffrer tous les paramètres contenus dans l'
/CodeBuild/espace de noms du magasin de paramètres Amazon EC2 Systems Manager.Les variables d'environnement que vous définissez remplacent les variables d'environnement existantes. Par exemple, si l'image Docker contient déjà une variable d'environnement nommée
MY_VARavec la valeurmy_valueet que vous définissez une variable d'environnement nomméeMY_VARavec la valeurother_value, la valeurmy_valueest remplacée parother_value. De même, si l'image Docker contient déjà une variable d'environnement nomméePATHavec la valeur/usr/local/sbin:/usr/local/binet que vous définissez une variable d'environnement nomméePATHavec la valeur$PATH:/usr/share/ant/bin, la valeur/usr/local/sbin:/usr/local/binest remplacée par la valeur littérale$PATH:/usr/share/ant/bin.Ne définissez pas de variables d'environnement avec un nom commençant par
CODEBUILD_. Ce préfixe est réservé à une utilisation interne .Si une variable d'environnement avec le même nom est définie dans plusieurs emplacements, la valeur est déterminée comme suit :
-
La valeur de l'appel d'opération de démarrage de génération a une priorité plus élevée.
-
La valeur de la définition de projet de génération vient ensuite dans l'ordre des priorités.
-
La valeur figurant dans la déclaration buildspec a la priorité la plus faible.
Si vous utilisez Secrets Manager, for
value, définissez le nom du paramètre tel qu'il est stocké dans Secrets Manager. DéfinisseztypesurSECRETS_MANAGER. À l'aide d'un secret/CodeBuild/dockerLoginPasswordnommé à titre d'exemple, définisseznamesurLOGIN_PASSWORD. Définissezvaluesur/CodeBuild/dockerLoginPassword. DéfinisseztypesurSECRETS_MANAGER.Important
Si vous utilisez le Gestionnaire de secrets, nous vous recommandons de stocker les secrets dont le nom commence par
/CodeBuild/(par exemple,/CodeBuild/dockerLoginPassword). Pour plus d'informations, consultez Présentation de AWS Secrets Manager dans le Guide de l'utilisateur AWS Secrets Manager .Si votre projet de génération fait référence à des secrets stockés dans Secrets Manager, le rôle de service du projet de génération doit autoriser l'
secretsmanager:GetSecretValueaction. Si vous avez choisi Nouveau rôle de service plus tôt, CodeBuild inclut cette action dans le rôle de service par défaut de votre projet de génération. En revanche, si vous avez choisi précédemment Existing service role (Rôle de service existant), vous devez inclure séparément cette action dans votre rôle de service.Si votre projet de génération fait référence à des secrets stockés dans Secrets Manager avec des noms secrets ne commençant pas par
/CodeBuild/, et que vous avez choisi Nouveau rôle de service, vous devez mettre à jour le rôle de service pour autoriser l'accès aux noms secrets qui ne commencent pas par/CodeBuild/. En effet, le rôle de service n'autorise l'accès qu'aux noms secrets commençant par/CodeBuild/.Si vous choisissez Nouveau rôle de service, le rôle de service inclut l'autorisation de déchiffrer tous les secrets contenus dans l'
/CodeBuild/espace de noms du Gestionnaire de secrets. -
- environnement/Registre et accréditations
-
Facultatif. RegistryCredentialObjet qui spécifie les informations d'identification permettant d'accéder à un registre Docker privé.
- environment/registryCredential/titre
-
Spécifie l'ARN ou le nom des informations d'identification créées à l'aide de AWS Managed Services. Vous pouvez utiliser le nom des informations d'identification uniquement si elles existent dans votre région actuelle.
- environment/registryCredential/Fournisseur d'informations d'identification
-
La seule valeur valide est
SECRETS_MANAGER.
Lorsque cela est défini :
-
imagePullCredentialsdoit être défini surSERVICE_ROLE. -
L'image ne peut pas être une image sélectionnée ou une image Amazon ECR.
- environnement/image PullCredentialsType
-
Facultatif. Type d'informations d'identification CodeBuild utilisé pour extraire des images dans votre build. Deux valeurs sont valides :
- CONSTRUCTION DE CODE
-
CODEBUILDspécifie qu'il CodeBuild utilise ses propres informations d'identification. Vous devez modifier la politique de votre référentiel Amazon ECR pour faire confiance au responsable du CodeBuild service. - RÔLE_DE SERVICE
-
Spécifie qui CodeBuild utilise le rôle de service de votre projet de génération.
Lorsque vous utilisez une image de registre privé ou entre comptes, vous devez utiliser les informations d'identification de
SERVICE_ROLE. Lorsque vous utilisez une image CodeBuild sélectionnée, vous devez utiliser desCODEBUILDinformations d'identification. - environnement/Mode privilégié
-
Définissez cette option sur
trueuniquement si vous prévoyez d'utiliser ce projet de génération pour créer des images Docker. Sinon, toutes les générations associées qui tentent d'interagir avec le démon Docker échouent. Vous devez également démarrer le démon Docker afin que vos générations puissent interagir avec celui-ci. Pour cela, vous pouvez initialiser le démon Docker au cours de la phaseinstallde votre fichier buildspec en exécutant les commandes de génération ci-après. N'exécutez pas ces commandes si vous avez spécifié une image d'environnement de génération fournie par CodeBuild avec la prise en charge Docker.Note
Par défaut, le démon Docker est activé pour les builds non VPC. Si vous souhaitez utiliser des conteneurs Docker pour les builds de VPC, consultez Runtime Privilege et Linux Capabilities
sur le site Web de Docker Docs et activez le mode privilégié. De plus, Windows ne prend pas en charge le mode privilégié. - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
serviceRole
Obligatoire. L'ARN du rôle de service CodeBuild utilisé pour interagir avec les services pour le compte de l'utilisateur (par exemple,arn:aws:iam::).account-id:role/role-name
auto RetryLimit
Facultatif. Le nombre de nouvelles tentatives automatiques supplémentaires après l'échec d'une compilation. Par exemple, si la limite de nouvelles tentatives automatiques est définie sur 2, l'API CodeBuild appellera l'RetryBuildAPI pour réessayer automatiquement votre build jusqu'à 2 fois supplémentaires.
délai d'attente InMinutes
Facultatif. Le nombre de minutes, compris entre 5 et 2160 (36 heures), après quoi la compilation CodeBuild s'arrête si elle n'est pas terminée. À défaut de précision, la valeur par défaut 60 est utilisée. Pour déterminer si et quand une compilation CodeBuild a été arrêtée en raison d'un délai d'attente, exécutez la batch-get-builds commande. Pour déterminer si la génération s'est arrêtée, recherchez dans la sortie une valeur buildStatus pour FAILED. Pour déterminer quand la génération a expiré, recherchez dans la sortie la valeur endTime associée à une valeur phaseStatus pour TIMED_OUT.
en file d'attente TimeoutInMinutes
Facultatif. Le nombre de minutes, compris entre 5 et 480 (8 heures), après quoi la compilation CodeBuild s'arrête si elle est toujours en file d'attente. À défaut de précision, la valeur par défaut 60 est utilisée.
Clé de chiffrement
Facultatif. L'alias ou l'ARN de l' AWS KMS key élément utilisé par CodeBuild pour chiffrer la sortie de compilation. Si vous spécifiez un alias, utilisez le format arn:aws:kms: ou, s'il existe un alias, utilisez le format region-ID:account-ID:key/key-IDalias/. Si elle n'est pas spécifiée, la clé KMS AWS-managed pour Amazon S3 est utilisée.key-alias
tags
Facultatif. Un tableau d'objets Tag qui fournissent les balises que vous souhaitez associer à ce projet de construction. Vous pouvez spécifier jusqu'à 50 balises. Ces balises peuvent être utilisées par n'importe quel AWS service prenant en charge les balises de projet de CodeBuild création. Chaque étiquette est exprimée sous la forme d'un objet avec a key et value a.
vpcConfig
Facultatif. Un VpcConfig objet qui contient des informations sur la configuration du VPC pour votre projet. Pour de plus amples informations, veuillez consulter Utilisation AWS CodeBuild avec Amazon Virtual Private Cloud.
Ces propriétés incluent :
- vpcId
-
Obligatoire. L'ID VPC qui CodeBuild utilise. Pour obtenir la liste de tous les identifiants de VPC dans votre région, exécutez la commande suivante :
aws ec2 describe-vpcs --region<region-ID> - sous-réseaux
-
Obligatoire. Tableau d'ID de sous-réseau qui inclut les ressources utilisées par CodeBuild. Pour obtenir ces identifiants, exécutez la commande suivante :
aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region<region-ID> - sécurité GroupIds
-
Obligatoire. Tableau d'identifiants de groupes de sécurité utilisés par CodeBuild pour autoriser l'accès aux ressources du VPC. Pour obtenir ces identifiants, exécutez la commande suivante :
aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --<region-ID>
Badge activé
Facultatif. Spécifie s'il faut inclure des badges de construction dans votre CodeBuild projet. Réglez sur true pour activer les badges de création, ou false autrement. Pour de plus amples informations, veuillez consulter Créez un échantillon de badges avec CodeBuild.
Configuration des journaux
Un LogsConfig objet qui contient des informations sur l'emplacement des journaux de cette version.
- LogsConfig/ cloud WatchLogs
-
Un CloudWatchLogsConfig objet qui contient des informations sur le transfert de CloudWatch journaux vers Logs.
- LogsConfig/ S3Logs
-
Un S3LogsConfig objet qui contient des informations sur le transfert de journaux vers Amazon S3.
fichier SystemLocations
Facultatif. Tableau d'ProjectFileSystemsLocationobjets contenant des informations relatives à votre configuration Amazon EFS.
construire BatchConfig
Facultatif. L'buildBatchConfigobjet est une ProjectBuildBatchConfig structure qui contient les informations de configuration de génération par lots pour le projet.
- buildBatchConfig/ServiceRole
-
L'ARN du rôle de service pour le projet de génération par lots.
- construireBatchConfig/combiner des artefacts
-
Valeur booléenne qui spécifie s'il faut combiner les artefacts de construction pour la génération par lots dans un seul emplacement d'artefacts.
- buildBatchConfig/restrictions/maximum BuildsAllowed
-
Le nombre maximum de builds autorisés.
- buildBatchConfig/restrictions/calcul TypesAllowed
-
Tableau de chaînes qui spécifient les types de calcul autorisés pour la construction par lots. Consultez les types de calcul de l'environnement de création pour ces valeurs.
- buildBatchConfig/restrictions/Flottes autorisées
-
Tableau de chaînes qui spécifie les flottes autorisées pour la génération par lots. Consultez la section Exécuter des builds sur des flottes à capacité réservée pour plus d'informations.
- constructionBatchConfig/temporisation InMinutes
-
Durée maximale, en minutes, pendant laquelle la génération par lots doit être terminée.
- constructionBatchConfig/lot ReportMode
-
Spécifie comment les rapports d'état de compilation sont envoyés au fournisseur source pour la compilation par lots. Les valeurs valides sont les suivantes :
REPORT_AGGREGATED_BATCH-
(Par défaut) Regrouper tous les états de compilation dans un seul rapport d'état.
REPORT_INDIVIDUAL_BUILDS-
Envoyer un rapport d'état distinct pour chaque compilation individuelle.
simultané BuildLimit
Nombre maximal de générations simultanées autorisées pour ce projet.
Les nouvelles générations ne sont démarrées que si le nombre actuel de générations est inférieur ou égal à cette limite. Si le nombre actuel de générations atteint cette limite, les nouvelles générations sont limitées et ne sont pas exécutées.
Création du projet
Pour créer le projet, exécutez à nouveau la create-project commande en transmettant votre fichier JSON :
aws codebuild create-project --cli-input-json file://<json-file>
En cas de succès, la représentation JSON d'un objet Project apparaît dans la sortie de la console. Consultez la Syntaxe de CreateProject réponse pour un exemple de ces données.
A l'exception du nom de projet de génération, vous pouvez modifier les paramètres du projet de génération ultérieurement. Pour de plus amples informations, veuillez consulter Modifier les paramètres d'un projet de build (AWS CLI).
Pour démarrer l'exécution d'une génération, consultez Exécutez une compilation (AWS CLI).
Si votre code source est stocké dans un GitHub référentiel et que vous CodeBuild souhaitez reconstruire le code source chaque fois qu'une modification de code est envoyée au référentiel, consultezLancement automatique de l'exécution de générations (AWS CLI).
Créez un projet de construction (AWS SDK)
Pour plus d'informations sur AWS CodeBuild l'utilisation des AWS kits SDK, consultez leAWS Référence des kits de développement logiciel et des outils.
Créez un projet de construction (CloudFormation)
Pour plus d'informations sur l'utilisation de AWS CodeBuild with CloudFormation, consultez le CloudFormation modèle pour CodeBuild dans le Guide de AWS CloudFormation l'utilisateur.