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.
Commencer avec CodeBuild
Dans les didacticiels suivants, vous AWS CodeBuild allez créer une collection d'exemples de fichiers d'entrée de code source dans une version déployable du code source.
Les deux didacticiels ont les mêmes entrées et résultats, mais l'un utilise la AWS CodeBuild console et l'autre utilise le AWS CLI.
Important
Nous vous déconseillons d'utiliser votre compte AWS root pour suivre ce didacticiel.
Commencer à AWS CodeBuild utiliser la console
Dans ce didacticiel, vous allez AWS CodeBuild créer une collection d'exemples de fichiers d'entrée de code source (créer des artefacts d'entrée ou créer une entrée) dans une version déployable du code source (créer un artefact de sortie ou créer une sortie). Plus précisément, vous demandez d' CodeBuild utiliser Apache Maven, un outil de génération courant, pour créer un ensemble de fichiers de classe Java dans un fichier Java Archive (JAR). Vous n'avez pas besoin d'être familiarisé avec Apache Maven ni Java pour suivre ce didacticiel.
Vous pouvez travailler CodeBuild avec la CodeBuild console AWS CodePipeline, le AWS CLI, ou le AWS SDKs. Ce didacticiel explique comment utiliser la CodeBuild console. Pour plus d'informations sur l'utilisation CodePipeline, consultezÀ utiliser CodeBuild avec CodePipeline.
Important
Les étapes de ce didacticiel vous obligent à créer des ressources (par exemple, un compartiment S3) susceptibles d'entraîner des frais sur votre AWS compte. Cela inclut les éventuels frais pour CodeBuild et pour les AWS ressources et les actions liées à Amazon S3 et à CloudWatch Logs. AWS KMS Pour plus d'informations, consultez AWS CodeBuild
les sections Tarification
Rubriques
- Étape 1 : Création du code source
- Étape 2 : Création du fichier buildspec
- Étape 3 : Création de deux compartiments S3
- Étape 4 : Charger le code source et le fichier buildspec
- Étape 5 : Créer le projet de génération
- Étape 6 : Exécuter la génération
- Étape 7 : Afficher les informations de génération résumées
- Étape 8 : Afficher les informations de génération détaillées
- Étape 9 : Obtenir l'artefact de sortie de génération
- Étape 10 : Supprimer les compartiments S3
- Récapitulatif
Étape 1 : Création du code source
(Partie de : Commencer à AWS CodeBuild utiliser la console)
Au cours de cette étape, vous créez le code source que vous CodeBuild souhaitez intégrer au bucket de sortie. Ce code source se compose de deux fichiers de classe Java et d'un fichier Apache Maven Project Object Model (POM).
-
Dans un répertoire vide sur votre ordinateur ou instance local, créez cette structure de répertoire.
(root directory name)
`-- src |-- main | `-- java `-- test `-- java -
A l'aide d'un éditeur de texte de votre choix, créez ce fichier, nommez-le
MessageUtil.java
, puis enregistrez-le dans le répertoiresrc/main/java
.public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }
Ce fichier de classe crée en sortie la chaîne de caractères qui lui est transmise. Le constructeur
MessageUtil
définit la chaîne de caractères. La méthodeprintMessage
crée la sortie. La méthodesalutationMessage
produit la sortieHi!
suivie par la chaîne de caractères. -
Créez ce fichier, nommez-le
TestMessageUtil.java
, puis enregistrez-le dans le répertoire/src/test/java
.import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }
Ce fichier de classe définit la variable
message
dans la classeMessageUtil
surRobert
. Il teste ensuite si la variablemessage
a été correctement définie en vérifiant si les chaînesRobert
etHi!Robert
apparaissent dans la sortie. -
Créez ce fichier, nommez-le
pom.xml
, puis enregistrez-le dans le répertoire racine (de niveau supérieur).<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>
Apache Maven utilise les instructions de ce fichier pour convertir les fichiers
MessageUtil.java
etTestMessageUtil.java
en un fichier nommémessageUtil-1.0.jar
, puis exécuter les tests spécifiés.
A ce stade, votre structure de répertoire ressemble à ceci.
(root directory name)
|-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Étape 2 : Création du fichier buildspec
(Étape précédente : Étape 1 : Création du code source)
Au cours de cette étape, vous créez un fichier de spécification de génération (spécification de génération). Un buildspec est un ensemble de commandes de construction et de paramètres associés, au YAML format, qui est CodeBuild utilisé pour exécuter un build. Sans spécification de construction, CodeBuild impossible de convertir avec succès votre entrée de génération en sortie de construction ou de localiser l'artefact de sortie de construction dans l'environnement de construction à télécharger dans votre compartiment de sortie.
Créez ce fichier, nommez-le buildspec.yml
, puis enregistrez-le dans le répertoire racine (de niveau supérieur).
version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
Important
Comme une déclaration de spécification de construction doit être valideYAML, l'espacement dans une déclaration de spécification de construction est important. Si le nombre d'espaces dans votre déclaration de spécification de génération ne correspond pas, la génération peut échouer immédiatement. Vous pouvez utiliser un YAML validateur pour vérifier si votre déclaration de spécification de construction est valide. YAML
Note
Au lieu d'inclure le fichier de spécification de génération dans votre code source, vous pouvez déclarer des commandes de génération séparément lorsque vous créez un projet de génération. Cela s'avère utile si vous souhaitez générer votre code source avec des commandes de génération différentes sans mettre à jour votre référentiel de code source chaque fois. Pour de plus amples informations, veuillez consulter Syntaxe d'un fichier buildspec.
Dans cette déclaration de spécification de génération :
-
version
représente la version de la norme de spécification de génération utilisée. Cette déclaration de spécification de génération utilise la dernière version,0.2
. -
phases
représente les phases de construction au cours desquelles vous pouvez demander d' CodeBuild exécuter des commandes. Ces phases de génération sont répertoriées ici sous les nomsinstall
,pre_build
,build
etpost_build
. Vous ne pouvez pas modifier l'orthographe des noms des phases de génération, et vous ne pouvez pas en créer d'autres.Dans cet exemple, pendant la
build
phase, CodeBuild exécute lamvn install
commande. Cette commande demande à Apache Maven de compiler, tester et packager les fichiers de classe Java compilés dans un artefact de sortie de génération. A des fins d'exhaustivité, quelquesecho
commandes sont placées dans chaque phase de génération de cet exemple. Lorsque vous consulterez les informations de construction détaillées plus loin dans ce didacticiel, le résultat de cesecho
commandes peut vous aider à mieux comprendre comment CodeBuild les commandes sont exécutées et dans quel ordre. (Même si toutes les phases de génération sont incluses dans cet exemple, vous n'êtes pas obligé d'inclure une phase de génération si vous n'avez pas l'intention de lancer des commandes au cours de cette phase.) Pour chaque phase de construction, CodeBuild exécute chaque commande spécifiée, une par une, dans l'ordre indiqué, du début à la fin. -
artifacts
représente l'ensemble des artefacts de sortie de construction qui sont CodeBuild chargés dans le compartiment de sortie.files
représente les fichiers à inclure dans la sortie de compilation. CodeBuild télécharge lemessageUtil-1.0.jar
fichier unique trouvé dans le répertoiretarget
relatif de l'environnement de construction. Le nom de fichiermessageUtil-1.0.jar
et le nom du répertoiretarget
sont basés sur la façon dont Apache Maven crée et stocke les artefacts de sortie de génération pour cet exemple uniquement. Dans vos générations, ces noms de fichier et ces répertoires sont différents.
Pour plus d’informations, consultez le Référence des spécifications de génération.
A ce stade, votre structure de répertoire ressemble à ceci.
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Étape 3 : Création de deux compartiments S3
(Étape précédente : Étape 2 : Création du fichier buildspec)
Vous pouvez utiliser un seul compartiment pour ce didacticiel, mais l'utilisation de deux compartiments permet de voir plus facilement la provenance de l'entrée de génération et la destination de la sortie de génération.
-
L'un de ces compartiments (le compartiment d'entrée) stocke l'entrée de génération. Dans ce didacticiel, le nom de ce compartiment d'entrée est
codebuild-
, oùregion-ID
-account-ID
-input-bucketregion-ID
est la AWS région du compartiment etaccount-ID
est l'identifiant AWS de votre compte. -
L'autre compartiment (le compartiment de sortie) stocke la sortie de génération. Dans ce didacticiel, le nom de ce compartiment de sortie est
codebuild-
.region-ID
-account-ID
-output-bucket
Si vous avez choisi des noms différents pour ces compartiments, veillez à les utiliser tout au long de ce didacticiel.
Ces deux compartiments doivent se trouver dans la même AWS région que vos builds. Par exemple, si vous demandez d' CodeBuild exécuter un build dans la région USA Est (Ohio), ces compartiments doivent également se trouver dans la région USA Est (Ohio).
Pour de plus amples informations, veuillez consulter Création d'un compartiment dans le Guide de l'utilisateur d'Amazon Simple Storage Service.
Note
Bien qu'il prenne CodeBuild également en charge les entrées de build stockées dans CodeCommit les référentiels Bitbucket et Bitbucket, ce didacticiel ne vous explique pas comment les utiliser. GitHub Pour de plus amples informations, veuillez consulter Planification d'une génération.
Étape 4 : Charger le code source et le fichier buildspec
(Étape précédente : Étape 3 : Création de deux compartiments S3)
Au cours de cette étape, vous ajoutez le code source et le fichier de spécification de génération dans le compartiment d'entrée.
À l'aide de l'utilitaire zip de votre système d'exploitation, créez un fichier nommé MessageUtil.zip
qui inclut MessageUtil.java
, TestMessageUtil.java
, pom.xml
et buildspec.yml
.
La structure de répertoire du fichier MessageUtil.zip
doit ressembler à ceci.
MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Important
N'incluez pas le répertoire
, mais seulement les répertoires et fichiers du répertoire (root directory name)
.(root directory name)
Chargez le fichier MessageUtil.zip
dans le compartiment d'entrée nommé codebuild-
. region-ID
-account-ID
-input-bucket
Important
Pour les référentiels Bitbucket et CodeCommit GitHub, par convention, vous devez stocker un fichier de spécification de construction nommé buildspec.yml
à la racine (niveau supérieur) de chaque référentiel ou inclure la déclaration de spécification de construction dans le cadre de la définition du projet de construction. Ne créez pas de ZIP fichier contenant le code source et le fichier de spécifications de compilation du référentiel.
Pour les entrées de construction stockées dans des compartiments S3 uniquement, vous devez créer un ZIP fichier contenant le code source et, par convention, un fichier de spécifications de construction nommé buildspec.yml
à la racine (niveau supérieur) ou inclure la déclaration de spécification de construction dans le cadre de la définition du projet de construction.
Si vous souhaitez utiliser un autre nom pour votre fichier de spécification de génération ou que vous souhaitez créer une référence à une spécification de génération dans un emplacement autre que la racine, vous pouvez spécifier un remplacement de spécification de génération dans la définition de projet de génération. Pour de plus amples informations, veuillez consulter Nom de fichier buildspec et emplacement de stockage.
Étape 5 : Créer le projet de génération
(Étape précédente : Étape 4 : Charger le code source et le fichier buildspec)
Au cours de cette étape, vous créez un projet de génération AWS CodeBuild qui permet d'exécuter la génération. Un projet de build inclut des informations sur la façon d'exécuter une compilation, notamment sur l'emplacement du code source, sur l'environnement de compilation à utiliser, sur les commandes de compilation à exécuter et sur l'emplacement où stocker le résultat de la compilation. Un environnement de génération représente une combinaison de système d'exploitation, d'exécution d'un langage de programmation et d'outils CodeBuild utilisés pour exécuter une compilation. L'environnement de construction est exprimé sous forme d'image Docker. Pour de plus amples informations, veuillez consulter Docker Overview
Pour cet environnement de génération, vous demandez d' CodeBuild utiliser une image Docker contenant une version du kit de développement Java (JDK) et d'Apache Maven.
Pour créer le projet de génération
Connectez-vous à la AWS CodeBuild console AWS Management Console et ouvrez-la sur https://console.aws.amazon.com/codesuite/codebuild/home
. -
Utilisez le sélecteur de AWS région pour choisir une AWS région prise en charge. CodeBuild Pour plus d’informations, consultez Points de terminaison et quotas AWS CodeBuild dans le document Référence générale d'Amazon Web Services.
Si une page CodeBuild d'informations s'affiche, choisissez Create build project. Sinon, dans le volet de navigation, développez Build, choisissez Build projects, puis Create build project.
-
Sur la page Create build project (Créer un projet de génération), dans Project configuration (Configuration du projet), pour Nom du projet, saisissez un nom pour ce projet de génération (dans cet exemple,
codebuild-demo-project
). Les noms des projets de construction doivent être uniques pour chaque AWS compte. Si vous utilisez un autre nom, veillez à l'utiliser tout au long de ce didacticiel.Note
Sur la page Create build project (Créer un projet de génération), un message d'erreur similaire à ce qui suit peut s'afficher : You are not authorized to perform this operation (Vous n'êtes pas autorisé à effectuer cette opération). Cela est probablement dû au fait que vous vous êtes connecté au en AWS Management Console tant qu'utilisateur qui n'est pas autorisé à créer un projet de construction. Pour résoudre ce problème, déconnectez-vous de AWS Management Console, puis reconnectez-vous avec des informations d'identification appartenant à l'une des IAM entités suivantes :
-
Utilisateur administrateur de votre AWS compte. Pour plus d'informations, consultez la section Création de votre premier utilisateur et de votre premier groupe Compte AWS root dans le guide de l'utilisateur.
-
Un utilisateur de votre AWS compte doté
AWSCodeBuildAdminAccess
AmazonS3ReadOnlyAccess
des politiquesIAMFullAccess
gérées et associées à cet utilisateur ou à un IAM groupe auquel il appartient. Si aucun utilisateur ou groupe de votre AWS compte ne possède ces autorisations et que vous ne pouvez pas les ajouter à votre utilisateur ou à votre groupe, contactez l'administrateur de votre AWS compte pour obtenir de l'aide. Pour de plus amples informations, veuillez consulter AWS politiques gérées (prédéfinies) pour AWS CodeBuild.
Ces deux options incluent des autorisations d'administrateur qui vous permettent de créer un projet de génération afin que vous puissiez suivre ce didacticiel. Nous vous recommandons de toujours utiliser les autorisations minimales requises pour accomplir votre tâche. Pour de plus amples informations, veuillez consulter AWS CodeBuild référence aux autorisations.
-
-
Dans Source, dans Source provider, choisissez Amazon S3.
-
Pour Bucket, choisissez codebuild-
region-ID
-account-ID
-seau d'entrée. -
Pour S3 object key (Clé d'objet S3), saisissez
MessageUtil.zip
. -
Dans Environnement, pour Image d'environnement, laissez Image gérée sélectionné.
-
Pour Système d'exploitation, choisissez Amazon Linux.
-
Pour Runtime(s) (Exécution(s)), sélectionnez Standard.
-
Pour Image, choisissez aws/codebuild/amazonlinux2-x86_64-standard:corretto11.
-
Dans Rôle de service, laissez Nouveau rôle de service sélectionné et laissez Nom du rôle inchangé.
-
Pour Buildspec, laissez Utiliser un fichier buildspec sélectionné.
-
Dans Artifacts, pour Type, choisissez Amazon S3.
-
Pour le nom du compartiment, choisissez codebuild-
region-ID
-account-ID
-godet de sortie. -
Laissez Nom et Chemin d'accès vides.
-
Choisissez Créer un projet de génération.
Étape 6 : Exécuter la génération
(Étape précédente : Étape 5 : Créer le projet de génération)
Dans cette étape, vous demandez d' AWS CodeBuild exécuter le build avec les paramètres du projet de build.
Pour exécuter la génération
Ouvrez la AWS CodeBuild console sur https://console.aws.amazon.com/codesuite/codebuild/home
. -
Dans le volet de navigation, choisissez Projets de génération.
-
Dans la liste des projets de construction, choisissez codebuild-demo-project, puis choisissez Démarrer la construction. La construction démarre immédiatement.
Étape 7 : Afficher les informations de génération résumées
(Étape précédente : Étape 6 : Exécuter la génération)
Au cours de cette étape, vous affichez un résumé de l'état de votre génération.
Pour afficher les informations de génération résumées
-
Si le codebuild-demo-project :
<build-ID>
la page n'est pas affichée, dans la barre de navigation, choisissez Historique de construction. Ensuite, dans la liste des projets de construction, pour Project, choisissez le lien Build run pour codebuild-demo-project. Il ne devrait y avoir qu'un seul lien correspondant. (Si vous avez déjà suivi ce didacticiel, choisissez le lien avec la valeur la plus récente dans la colonne Terminé.) -
Sur la page État de la construction, dans Détails de la phase, les phases de construction suivantes doivent être affichées, avec la mention Successed dans la colonne État :
-
SUBMITTED
-
QUEUED
-
PROVISIONING
-
DOWNLOAD_SOURCE
-
INSTALL
-
PRE_BUILD
-
BUILD
-
POST_BUILD
-
UPLOAD_ARTIFACTS
-
FINALIZING
-
COMPLETED
Dans État de la génération, Réussi doit être affiché.
Si vous voyez En cours à la place, choisissez le bouton d'actualisation.
-
-
En regard de chaque phase de génération, la valeur Durée indique combien de temps la phase de génération a duré. La valeur Heure de fin indique quand cette phase de génération s'est terminée.
Étape 8 : Afficher les informations de génération détaillées
(Étape précédente : Étape 7 : Afficher les informations de génération résumées)
Au cours de cette étape, vous pouvez consulter des informations détaillées sur votre build dans CloudWatch Logs.
Note
Pour protéger les informations sensibles, les informations suivantes sont masquées dans CodeBuild les journaux :
-
AWS clé d'accèsIDs. Pour plus d'informations, consultez la section Gestion des clés d'accès pour IAM les utilisateurs dans le guide de AWS Identity and Access Management l'utilisateur.
-
Chaînes spécifiées à l'aide du stockage de paramètres. Pour plus d'informations, consultez la procédure pas à pas de la console Systems Manager Parameter Store et Systems Manager Parameter Store dans le guide de l'utilisateur d'Amazon EC2 Systems Manager.
-
Chaînes spécifiées à l'aide de AWS Secrets Manager. Pour de plus amples informations, veuillez consulter Gestion des clés.
Pour afficher les informations de génération détaillées
-
Avec la page de détails de génération toujours affichée de l'étape précédente, les 10,000 dernières lignes du journal de génération apparaissent dans Journaux de génération. Pour voir l'intégralité du journal de construction dans CloudWatch Logs, cliquez sur le lien Afficher le journal complet.
-
Dans le flux du journal CloudWatch des journaux, vous pouvez parcourir les événements du journal. Par défaut, seul le dernier ensemble d'événements de journal s'affiche. Pour afficher des événements de journal précédents, faites défiler vers la liste.
-
Dans ce didacticiel, la plupart des événements du journal contiennent des informations détaillées sur CodeBuild le téléchargement et l'installation de fichiers de dépendance de build dans son environnement de build, ce qui ne vous intéresse probablement pas. Vous pouvez utiliser la zone Filtrer les événements pour limiter les informations affichées. Par exemple, si vous entrez
"[INFO]"
dans Filtrer les événements, seuls les événements contenant[INFO]
s'affichent. Pour plus d'informations, consultez la section Syntaxe des filtres et des modèles dans le guide de CloudWatch l'utilisateur Amazon.
Étape 9 : Obtenir l'artefact de sortie de génération
(Étape précédente : Étape 8 : Afficher les informations de génération détaillées)
Au cours de cette étape, vous obtenez le messageUtil-1.0.jar
fichier CodeBuild créé et chargé dans le bucket de sortie.
Vous pouvez utiliser la CodeBuild console ou la console Amazon S3 pour effectuer cette étape.
Pour obtenir l'artefact de sortie de construction (AWS CodeBuild console)
-
La CodeBuild console étant toujours ouverte et la page des détails du build toujours affichée à l'étape précédente, choisissez l'onglet Détails du build et faites défiler la page vers le bas jusqu'à la section Artefacts.
Note
Si la page des détails du build n'est pas affichée, dans la barre de navigation, choisissez Build history, puis cliquez sur le lien Build run.
-
Le lien vers le dossier Amazon S3 se trouve sous l'emplacement de téléchargement des artefacts. Ce lien ouvre le dossier dans Amazon S3 où se trouve le fichier d'artefact de sortie de
messageUtil-1.0.jar
compilation.
Pour obtenir l'artefact de sortie du build (console Amazon S3)
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Ouvrir
codebuild-
.region-ID
-account-ID
-output-bucket -
Ouvrez le dossier
codebuild-demo-project
. -
Ouvrez le dossier
target
, dans lequel se trouve le fichier d'artefact de sortie de générationmessageUtil-1.0.jar
.
Étape 10 : Supprimer les compartiments S3
(Étape précédente : Étape 9 : Obtenir l'artefact de sortie de génération)
Pour éviter des frais permanents sur votre AWS compte, vous pouvez supprimer les compartiments d'entrée et de sortie utilisés dans ce didacticiel. Pour obtenir des instructions, consultez Supprimer ou vider un compartiment dans le guide de l'utilisateur d'Amazon Simple Storage Service.
Si vous utilisez l'IAMutilisateur ou un IAM utilisateur administrateur pour supprimer ces compartiments, l'utilisateur doit disposer d'autorisations d'accès supplémentaires. Ajoutez l'instruction suivante entre les marqueurs (### BEGIN ADDING STATEMENT HERE ###
and ### END
ADDING STATEMENTS HERE ###
) à une politique d'accès existante pour l'utilisateur.
Les points de suspension (...) figurant dans cette instruction sont utilisés par souci de concision. Ne supprimez aucune instruction de la stratégie d'accès existante. Ne saisissez pas ces ellipses dans la stratégie.
{ "Version": "2012-10-17", "Id": "...", "Statement": [
### BEGIN ADDING STATEMENT HERE ###
{ "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" }### END ADDING STATEMENT HERE ###
] }
Récapitulatif
Dans ce didacticiel, vous avez AWS CodeBuild l'habitude de créer un ensemble de fichiers de classe Java dans un JAR fichier. Vous avez ensuite affiché les résultats de la génération.
Vous pouvez maintenant essayer de l'utiliser CodeBuild dans vos propres scénarios. Suivez les instructions de la section Planification d'une génération. Si vous ne vous sentez pas encore fait prêt, vous pouvez essayer de générer certains des exemples. Pour de plus amples informations, veuillez consulter Utilisez des exemples basés sur des cas pour CodeBuild.
Commencer à AWS CodeBuild utiliser le AWS CLI
Dans ce didacticiel, vous allez AWS CodeBuild créer une collection d'exemples de fichiers d'entrée de code source (appelés build input artefacts ou build input) dans une version déployable du code source (appelée build output artefact ou build output). Plus précisément, vous demandez d' CodeBuild utiliser Apache Maven, un outil de génération courant, pour créer un ensemble de fichiers de classe Java dans un fichier Java Archive (JAR). Vous n'avez pas besoin d'être familiarisé avec Apache Maven ni Java pour suivre ce didacticiel.
Vous pouvez travailler CodeBuild avec la CodeBuild console AWS CodePipeline, le AWS CLI, ou le AWS SDKs. Ce didacticiel explique comment utiliser CodeBuild le AWS CLI. Pour plus d'informations sur l'utilisation CodePipeline, consultezÀ utiliser CodeBuild avec CodePipeline.
Important
Les étapes de ce didacticiel vous obligent à créer des ressources (par exemple, un compartiment S3) susceptibles d'entraîner des frais sur votre AWS compte. Cela inclut les éventuels frais pour CodeBuild et pour les AWS ressources et les actions liées à Amazon S3 et à CloudWatch Logs. AWS KMS Pour plus d'informations, consultez CodeBuildles sections Tarification
Rubriques
- Étape 1 : Création du code source
- Étape 2 : Création du fichier buildspec
- Étape 3 : Création de deux compartiments S3
- Étape 4 : Charger le code source et le fichier buildspec
- Étape 5 : Créer le projet de génération
- Étape 6 : Exécuter la génération
- Étape 7 : Afficher les informations de génération résumées
- Étape 8 : Afficher les informations de génération détaillées
- Étape 9 : Obtenir l'artefact de sortie de génération
- Étape 10 : Supprimer les compartiments S3
- Récapitulatif
Étape 1 : Création du code source
(Partie de : Commencer à AWS CodeBuild utiliser le AWS CLI)
Au cours de cette étape, vous créez le code source que vous CodeBuild souhaitez intégrer au bucket de sortie. Ce code source se compose de deux fichiers de classe Java et d'un fichier Apache Maven Project Object Model (POM).
-
Dans un répertoire vide sur votre ordinateur ou instance local, créez cette structure de répertoire.
(root directory name)
`-- src |-- main | `-- java `-- test `-- java -
A l'aide d'un éditeur de texte de votre choix, créez ce fichier, nommez-le
MessageUtil.java
, puis enregistrez-le dans le répertoiresrc/main/java
.public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }
Ce fichier de classe crée en sortie la chaîne de caractères qui lui est transmise. Le constructeur
MessageUtil
définit la chaîne de caractères. La méthodeprintMessage
crée la sortie. La méthodesalutationMessage
produit la sortieHi!
suivie par la chaîne de caractères. -
Créez ce fichier, nommez-le
TestMessageUtil.java
, puis enregistrez-le dans le répertoire/src/test/java
.import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }
Ce fichier de classe définit la variable
message
dans la classeMessageUtil
surRobert
. Il teste ensuite si la variablemessage
a été correctement définie en vérifiant si les chaînesRobert
etHi!Robert
apparaissent dans la sortie. -
Créez ce fichier, nommez-le
pom.xml
, puis enregistrez-le dans le répertoire racine (de niveau supérieur).<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>
Apache Maven utilise les instructions de ce fichier pour convertir les fichiers
MessageUtil.java
etTestMessageUtil.java
en un fichier nommémessageUtil-1.0.jar
, puis exécuter les tests spécifiés.
A ce stade, votre structure de répertoire ressemble à ceci.
(root directory name)
|-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Étape 2 : Création du fichier buildspec
(Étape précédente : Étape 1 : Création du code source)
Au cours de cette étape, vous créez un fichier de spécification de génération (spécification de génération). Un buildspec est un ensemble de commandes de construction et de paramètres associés, au YAML format, qui est CodeBuild utilisé pour exécuter un build. Sans spécification de construction, CodeBuild impossible de convertir avec succès votre entrée de génération en sortie de construction ou de localiser l'artefact de sortie de construction dans l'environnement de construction à télécharger dans votre compartiment de sortie.
Créez ce fichier, nommez-le buildspec.yml
, puis enregistrez-le dans le répertoire racine (de niveau supérieur).
version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
Important
Comme une déclaration de spécification de construction doit être valideYAML, l'espacement dans une déclaration de spécification de construction est important. Si le nombre d'espaces dans votre déclaration de spécification de génération ne correspond pas, la génération peut échouer immédiatement. Vous pouvez utiliser un YAML validateur pour vérifier si votre déclaration de spécification de construction est valide. YAML
Note
Au lieu d'inclure le fichier de spécification de génération dans votre code source, vous pouvez déclarer des commandes de génération séparément lorsque vous créez un projet de génération. Cela s'avère utile si vous souhaitez générer votre code source avec des commandes de génération différentes sans mettre à jour votre référentiel de code source chaque fois. Pour de plus amples informations, veuillez consulter Syntaxe d'un fichier buildspec.
Dans cette déclaration de spécification de génération :
-
version
représente la version de la norme de spécification de génération utilisée. Cette déclaration de spécification de génération utilise la dernière version,0.2
. -
phases
représente les phases de construction au cours desquelles vous pouvez demander d' CodeBuild exécuter des commandes. Ces phases de génération sont répertoriées ici sous les nomsinstall
,pre_build
,build
etpost_build
. Vous ne pouvez pas modifier l'orthographe des noms des phases de génération, et vous ne pouvez pas en créer d'autres.Dans cet exemple, pendant la
build
phase, CodeBuild exécute lamvn install
commande. Cette commande demande à Apache Maven de compiler, tester et packager les fichiers de classe Java compilés dans un artefact de sortie de génération. A des fins d'exhaustivité, quelquesecho
commandes sont placées dans chaque phase de génération de cet exemple. Lorsque vous consulterez les informations de construction détaillées plus loin dans ce didacticiel, le résultat de cesecho
commandes peut vous aider à mieux comprendre comment CodeBuild les commandes sont exécutées et dans quel ordre. (Même si toutes les phases de génération sont incluses dans cet exemple, vous n'êtes pas obligé d'inclure une phase de génération si vous n'avez pas l'intention de lancer des commandes au cours de cette phase.) Pour chaque phase de construction, CodeBuild exécute chaque commande spécifiée, une par une, dans l'ordre indiqué, du début à la fin. -
artifacts
représente l'ensemble des artefacts de sortie de construction qui sont CodeBuild chargés dans le compartiment de sortie.files
représente les fichiers à inclure dans la sortie de compilation. CodeBuild télécharge lemessageUtil-1.0.jar
fichier unique trouvé dans le répertoiretarget
relatif de l'environnement de construction. Le nom de fichiermessageUtil-1.0.jar
et le nom du répertoiretarget
sont basés sur la façon dont Apache Maven crée et stocke les artefacts de sortie de génération pour cet exemple uniquement. Dans vos générations, ces noms de fichier et ces répertoires sont différents.
Pour plus d’informations, consultez le Référence des spécifications de génération.
A ce stade, votre structure de répertoire ressemble à ceci.
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Étape 3 : Création de deux compartiments S3
(Étape précédente : Étape 2 : Création du fichier buildspec)
Vous pouvez utiliser un seul compartiment pour ce didacticiel, mais l'utilisation de deux compartiments permet de voir plus facilement la provenance de l'entrée de génération et la destination de la sortie de génération.
-
L'un de ces compartiments (le compartiment d'entrée) stocke l'entrée de génération. Dans ce didacticiel, le nom de ce compartiment d'entrée est
codebuild-
, oùregion-ID
-account-ID
-input-bucketregion-ID
est la AWS région du compartiment etaccount-ID
est l'identifiant AWS de votre compte. -
L'autre compartiment (le compartiment de sortie) stocke la sortie de génération. Dans ce didacticiel, le nom de ce compartiment de sortie est
codebuild-
.region-ID
-account-ID
-output-bucket
Si vous avez choisi des noms différents pour ces compartiments, veillez à les utiliser tout au long de ce didacticiel.
Ces deux compartiments doivent se trouver dans la même AWS région que vos builds. Par exemple, si vous demandez d' CodeBuild exécuter un build dans la région USA Est (Ohio), ces compartiments doivent également se trouver dans la région USA Est (Ohio).
Pour de plus amples informations, veuillez consulter Création d'un compartiment dans le Guide de l'utilisateur d'Amazon Simple Storage Service.
Note
Bien qu'il prenne CodeBuild également en charge les entrées de build stockées dans CodeCommit les référentiels Bitbucket et Bitbucket, ce didacticiel ne vous explique pas comment les utiliser. GitHub Pour de plus amples informations, veuillez consulter Planification d'une génération.
Étape 4 : Charger le code source et le fichier buildspec
(Étape précédente : Étape 3 : Création de deux compartiments S3)
Au cours de cette étape, vous ajoutez le code source et le fichier de spécification de génération dans le compartiment d'entrée.
À l'aide de l'utilitaire zip de votre système d'exploitation, créez un fichier nommé MessageUtil.zip
qui inclut MessageUtil.java
, TestMessageUtil.java
, pom.xml
et buildspec.yml
.
La structure de répertoire du fichier MessageUtil.zip
doit ressembler à ceci.
MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Important
N'incluez pas le répertoire
, mais seulement les répertoires et fichiers du répertoire (root directory name)
.(root directory name)
Chargez le fichier MessageUtil.zip
dans le compartiment d'entrée nommé codebuild-
. region-ID
-account-ID
-input-bucket
Important
Pour les référentiels Bitbucket et CodeCommit GitHub, par convention, vous devez stocker un fichier de spécification de construction nommé buildspec.yml
à la racine (niveau supérieur) de chaque référentiel ou inclure la déclaration de spécification de construction dans le cadre de la définition du projet de construction. Ne créez pas de ZIP fichier contenant le code source et le fichier de spécifications de compilation du référentiel.
Pour les entrées de construction stockées dans des compartiments S3 uniquement, vous devez créer un ZIP fichier contenant le code source et, par convention, un fichier de spécifications de construction nommé buildspec.yml
à la racine (niveau supérieur) ou inclure la déclaration de spécification de construction dans le cadre de la définition du projet de construction.
Si vous souhaitez utiliser un autre nom pour votre fichier de spécification de génération ou que vous souhaitez créer une référence à une spécification de génération dans un emplacement autre que la racine, vous pouvez spécifier un remplacement de spécification de génération dans la définition de projet de génération. Pour de plus amples informations, veuillez consulter Nom de fichier buildspec et emplacement de stockage.
Étape 5 : Créer le projet de génération
(Étape précédente : Étape 4 : Charger le code source et le fichier buildspec)
Au cours de cette étape, vous créez un projet de génération AWS CodeBuild qui permet d'exécuter la génération. Un projet de build inclut des informations sur la façon d'exécuter une compilation, notamment sur l'emplacement du code source, sur l'environnement de compilation à utiliser, sur les commandes de compilation à exécuter et sur l'emplacement où stocker le résultat de la compilation. Un environnement de génération représente une combinaison de système d'exploitation, d'exécution d'un langage de programmation et d'outils CodeBuild utilisés pour exécuter une compilation. L'environnement de construction est exprimé sous forme d'image Docker. Pour de plus amples informations, veuillez consulter Docker Overview
Pour cet environnement de génération, vous demandez d' CodeBuild utiliser une image Docker contenant une version du kit de développement Java (JDK) et d'Apache Maven.
Pour créer le projet de génération
-
Utilisez le AWS CLI pour exécuter la create-project commande :
aws codebuild create-project --generate-cli-skeleton
JSON- les données formatées apparaissent dans la sortie. Copiez les données dans un fichier nommé
create-project.json
à un emplacement de l'ordinateur local ou de l'instance où le AWS CLI est installé. Si vous choisissez d'utiliser un autre nom de fichier, veillez à l'utiliser tout au long de ce didacticiel.Modifiez les données copiées selon le format suivant, puis enregistrez vos résultats :
{ "name": "codebuild-demo-project", "source": { "type": "S3", "location": "codebuild-
region-ID
-account-ID
-input-bucket/MessageUtil.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-output-bucket" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "serviceIAMRole
" }Remplacez
serviceIAMRole
avec le nom de ressource Amazon (ARN) d'un rôle de CodeBuild service (par exemple,arn:aws:iam::
). Pour en créer un, consultez CodeBuild Autoriser l'interaction avec d'autres AWS services.account-ID
:role/role-name
Dans ces données :
-
name
représente un identificateur obligatoire pour ce projet de génération (dans cet exemple,codebuild-demo-project
). Les noms de projet de génération doivent être uniques au sein de votre compte. -
Pour
source
,type
est une valeur obligatoire qui représente le type de référentiel du code source (dans cet exemple,S3
pour un compartiment Amazon S3). -
Car
source
,location
représente le chemin d'accès au code source (dans cet exemple, le nom du compartiment d'entrée suivi du nom du ZIP fichier). -
Pour
artifacts
,type
est une valeur obligatoire qui représente le type de référentiel de l'artefact de sortie de construction (dans cet exemple,S3
pour un compartiment Amazon S3). -
Pour
artifacts
,location
représente le nom du compartiment de sortie que vous avez créé ou identifié précédemment (dans cet exemple,codebuild-
).region-ID
-account-ID
-output-bucket -
Pour
environment
,type
est une valeur obligatoire qui représente le type d'environnement de construction (dans cet exemple,LINUX_CONTAINER
). -
Pour
environment
,image
est une valeur obligatoire qui représente le nom de l'image Docker et la combinaison de balises utilisés par ce projet de génération, telle que spécifiée par le type de référentiel d'images Docker (dans cet exemple,aws/codebuild/standard:5.0
pour une image Docker dans le référentiel d'images CodeBuild Docker).aws/codebuild/standard
est le nom de l'image Docker.5.0
est le tag de l'image Docker.Pour trouver d'autres images Docker que vous pouvez utiliser dans vos scénarios, consultez Référence sur les environnements de génération.
-
Pour
environment
,computeType
est une valeur obligatoire qui représente les ressources informatiques CodeBuild utilisées (dans cet exemple,BUILD_GENERAL1_SMALL
).
Note
Les autres valeurs disponibles dans les données JSON formatées d'origine, telles que
description
buildspec
,auth
(y compristype
etresource
),,path
namespaceType
,name
(pourartifacts
)packaging
,environmentVariables
(y comprisname
etvalue
),timeoutInMinutes
encryptionKey
, ettags
(y compriskey
etvalue
) sont facultatives. Elles ne sont pas utilisées dans ce didacticiel et ne sont donc pas montrées ici. Pour de plus amples informations, veuillez consulter Création d'un projet de génération (AWS CLI). -
-
Placez-vous dans le répertoire contenant le fichier que vous venez d'enregistrer, puis exécutez à nouveau la commande create-project.
aws codebuild create-project --cli-input-json file://create-project.json
En cas de réussite, des données similaires à celles-ci apparaissent dans la sortie.
{ "project": { "name": "codebuild-demo-project", "serviceRole": "
serviceIAMRole
", "tags": [], "artifacts": { "packaging": "NONE", "type": "S3", "location": "codebuild-region-ID
-account-ID
-output-bucket", "name": "message-util.zip" }, "lastModified": 1472661575.244, "timeoutInMinutes": 60, "created": 1472661575.244, "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-input-bucket/MessageUtil.zip" }, "encryptionKey": "arn:aws:kms:region-ID
:account-ID
:alias/aws/s3", "arn": "arn:aws:codebuild:region-ID
:account-ID
:project/codebuild-demo-project" } }-
project
représente les informations sur ce projet de génération.-
tags
représente les balises qui ont été déclarées. -
packaging
représente la façon dont l'artefact de sortie de génération est stocké dans le compartiment de sortie.NONE
signifie qu'un dossier est créé dans le compartiment de sortie. L'artefact de sortie de génération est stocké dans ce dossier. -
lastModified
représente l'heure, au format horaire Unix, à laquelle les informations sur le projet de génération ont été modifiées pour la dernière fois. -
timeoutInMinutes
représente le nombre de minutes après lesquelles la génération CodeBuild s'arrête si la génération n'est pas terminée. (La valeur par défaut est de 60 minutes.) -
created
représente l'heure, au format horaire Unix, à laquelle le projet de génération a été créé. -
environmentVariables
représente toutes les variables d'environnement qui ont été déclarées et qui CodeBuild peuvent être utilisées pendant la construction. -
encryptionKey
représente ARN la clé gérée par le client qui a été CodeBuild utilisée pour chiffrer l'artefact de sortie de construction. -
arn
représente le projet ARN de construction.
-
-
Note
Après avoir exécuté la create-project commande, un message d'erreur semblable au suivant peut s'afficher : Utilisateur : user-ARN
n'est pas autorisé à exécuter : codebuild : CreateProject. Cela est probablement dû au fait que vous avez configuré le AWS CLI avec les informations d'identification d'un utilisateur qui ne dispose pas des autorisations suffisantes CodeBuild pour créer des projets de construction. Pour résoudre ce problème, configurez AWS CLI
les informations d'identification appartenant à l'une des IAM entités suivantes :
-
Utilisateur administrateur de votre AWS compte. Pour plus d'informations, consultez la section Création de votre premier utilisateur et de votre premier groupe Compte AWS root dans le guide de l'utilisateur.
-
Un utilisateur de votre AWS compte doté
AWSCodeBuildAdminAccess
AmazonS3ReadOnlyAccess
des politiquesIAMFullAccess
gérées et associées à cet utilisateur ou à un IAM groupe auquel il appartient. Si aucun utilisateur ou groupe de votre AWS compte ne possède ces autorisations et que vous ne pouvez pas les ajouter à votre utilisateur ou à votre groupe, contactez l'administrateur de votre AWS compte pour obtenir de l'aide. Pour de plus amples informations, veuillez consulter AWS politiques gérées (prédéfinies) pour AWS CodeBuild.
Étape 6 : Exécuter la génération
(Étape précédente : Étape 5 : Créer le projet de génération)
Dans cette étape, vous demandez d' AWS CodeBuild exécuter le build avec les paramètres du projet de build.
Pour exécuter la génération
-
Utilisez le AWS CLI pour exécuter la start-build commande :
aws codebuild start-build --project-name
project-name
Remplacez
project-name
avec le nom de votre projet de construction de l'étape précédente (par exemple,codebuild-demo-project
). -
En cas de réussite, des données similaires à ce qui suit s'affichent dans la sortie :
{ "build": { "buildComplete": false, "initiator": "
user-name
", "artifacts": { "location": "arn:aws:s3:::codebuild-region-ID
-account-ID
-output-bucket/message-util.zip" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "buildStatus": "IN_PROGRESS", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-input-bucket/MessageUtil.zip" }, "currentPhase": "SUBMITTED", "startTime": 1472848787.882, "id": "codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE", "arn": "arn:aws:codebuild:region-ID
:account-ID
:build/codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE" } }-
build
représente les informations sur cette génération.-
buildComplete
indique si la génération a été terminée (true
). Sinon la valeur est renvoy,false
. -
initiator
représente l'entité qui a démarré la génération. -
artifacts
représente les informations sur la sortie de génération, y compris son emplacement. -
projectName
représente le nom du projet de génération. -
buildStatus
représente l'état actuel de la génération lorsque la commande start-build a été exécutée. -
currentPhase
représente la phase actuelle de génération lorsque la commande start-build a été exécutée. -
startTime
représente l'heure, au format horaire Unix, à laquelle le processus de génération a démarré. -
id
représente l'ID de la génération. -
arn
représente le ARN du build.
-
Notez la valeur
id
. Vous en aurez besoin à l’étape suivante. -
Étape 7 : Afficher les informations de génération résumées
(Étape précédente : Étape 6 : Exécuter la génération)
Au cours de cette étape, vous affichez un résumé de l'état de votre génération.
Pour afficher les informations de génération résumées
-
Utilisez le AWS CLI pour exécuter la batch-get-builds commande.
aws codebuild batch-get-builds --ids
id
Remplacez
id
avec laid
valeur qui apparaissait dans le résultat de l'étape précédente.En cas de réussite, des données similaires à celles-ci apparaissent dans la sortie.
{ "buildsNotFound": [], "builds": [ { "buildComplete": true, "phases": [ { "phaseStatus": "SUCCEEDED", "endTime": 1472848788.525, "phaseType": "SUBMITTED", "durationInSeconds": 0, "startTime": 1472848787.882 },
... The full list of build phases has been omitted for brevity ...
{ "phaseType": "COMPLETED", "startTime": 1472848878.079 } ], "logs": { "groupName": "/aws/codebuild/codebuild-demo-project", "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=region-ID
#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "streamName": "38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" }, "artifacts": { "md5sum": "MD5-hash
", "location": "arn:aws:s3:::codebuild-region-ID
-account-ID
-output-bucket/message-util.zip", "sha256sum": "SHA-256-hash
" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "initiator": "user-name
", "buildStatus": "SUCCEEDED", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-input-bucket/MessageUtil.zip" }, "currentPhase": "COMPLETED", "startTime": 1472848787.882, "endTime": 1472848878.079, "id": "codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "arn": "arn:aws:codebuild:region-ID
:account-ID
:build/codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" } ] }-
buildsNotFound
représente la version IDs pour toutes les versions pour lesquelles aucune information n'est disponible. Dans cet exemple, cette valeur doit être vide. -
builds
représente les informations pour chaque génération où les informations sont disponibles. Dans cet exemple, des informations sur une génération apparaissent dans la sortie.-
phases
représente l'ensemble des phases de construction CodeBuild exécutées pendant le processus de génération. Les informations de chaque phase de génération sont répertoriées séparément sous la formestartTime
,endTime
,durationInSeconds
(heures de début et de fin de la phase de génération au format horaire Unix et durée de la phase en secondes) etphaseType
, par exemple, (SUBMITTED
,PROVISIONING
,DOWNLOAD_SOURCE
,INSTALL
,PRE_BUILD
,BUILD
,POST_BUILD
,UPLOAD_ARTIFACTS
,FINALIZING
ouCOMPLETED
) etphaseStatus
(par exemple,SUCCEEDED
,FAILED
,FAULT
,TIMED_OUT
,IN_PROGRESS
ouSTOPPED
). La première fois que vous exécutez la commande batch-get-builds, il se peut qu'il n'y ait que peu (ou aucune) phases. Après les exécutions suivantes de la commande batch-get-builds avec le même ID de génération, plus de phases de génération devraient apparaître dans la sortie. -
logs
représente les informations contenues dans Amazon CloudWatch Logs concernant les journaux du build. -
md5sum
etsha256sum
représentent MD5 et SHA -256 hachages de l'artefact de sortie de la version. Ces hachages s'affichent dans la sortie uniquement si la valeurpackaging
du projet de génération est définie surZIP
. (Vous n'avez pas défini cette valeur dans ce didacticiel.) Vous pouvez utiliser ces hachages avec un outil de total de contrôle pour vérifier l'intégrité et l'authenticité des fichiers.Note
Vous pouvez également utiliser la console Amazon S3 pour afficher ces hachages. Cochez la case en regard de l'artefact de sortie de génération, choisissez Actions, puis choisissez Propriétés. Dans le volet Propriétés, développez Metadata et visualisez les valeurs de x-amz-meta-codebuild-content-md5 et -content-sha256. x-amz-meta-codebuild (Dans la console Amazon S3, la ETagvaleur de l'artefact de sortie de construction ne doit pas être interprétée comme étant le hachage MD5 ou le hachage SHA -256.)
Si vous utilisez le AWS SDKs pour obtenir ces hachages, les valeurs sont nommées
codebuild-content-md5
etcodebuild-content-sha256
. -
endTime
représente l'heure, au format horaire Unix, à laquelle processus de génération s'est terminé.
-
Note
Les métadonnées Amazon S3 ont un CodeBuild en-tête nommé
x-amz-meta-codebuild-buildarn
qui contient le nombuildArn
de la CodeBuild version qui publie les artefacts sur Amazon S3. LebuildArn
est ajouté pour permettre le suivi de la source des notifications et pour indiquer la version à partir de laquelle l'artefact est généré. -
Étape 8 : Afficher les informations de génération détaillées
(Étape précédente : Étape 7 : Afficher les informations de génération résumées)
Au cours de cette étape, vous pouvez consulter des informations détaillées sur votre build dans CloudWatch Logs.
Note
Pour protéger les informations sensibles, les informations suivantes sont masquées dans CodeBuild les journaux :
-
AWS clé d'accèsIDs. Pour plus d'informations, consultez la section Gestion des clés d'accès pour IAM les utilisateurs dans le guide de AWS Identity and Access Management l'utilisateur.
-
Chaînes spécifiées à l'aide du stockage de paramètres. Pour plus d'informations, consultez la procédure pas à pas de la console Systems Manager Parameter Store et Systems Manager Parameter Store dans le guide de l'utilisateur d'Amazon EC2 Systems Manager.
-
Chaînes spécifiées à l'aide de AWS Secrets Manager. Pour de plus amples informations, veuillez consulter Gestion des clés.
Pour afficher les informations de génération détaillées
-
Utilisez votre navigateur Web pour accéder à l'emplacement
deepLink
qui apparaît dans la sortie de l'étape précédente (par exemple,https://console.aws.amazon.com/cloudwatch/home?region=
).region-ID
#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE -
Dans le flux du journal CloudWatch des journaux, vous pouvez parcourir les événements du journal. Par défaut, seul le dernier ensemble d'événements de journal s'affiche. Pour afficher des événements de journal précédents, faites défiler vers la liste.
-
Dans ce didacticiel, la plupart des événements du journal contiennent des informations détaillées sur CodeBuild le téléchargement et l'installation de fichiers de dépendance de build dans son environnement de build, ce qui ne vous intéresse probablement pas. Vous pouvez utiliser la zone Filtrer les événements pour limiter les informations affichées. Par exemple, si vous entrez
"[INFO]"
dans Filtrer les événements, seuls les événements contenant[INFO]
s'affichent. Pour plus d'informations, consultez la section Syntaxe des filtres et des modèles dans le guide de CloudWatch l'utilisateur Amazon.
Ces parties d'un flux de CloudWatch log Logs se rapportent à ce didacticiel.
... [Container] 2016/04/15 17:49:42 Entering phase PRE_BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering pre_build phase... [Container] 2016/04/15 17:49:42 Entering pre_build phase... [Container] 2016/04/15 17:49:42 Phase complete: PRE_BUILD Success: true [Container] 2016/04/15 17:49:42 Entering phase BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering build phase... [Container] 2016/04/15 17:49:42 Entering build phase... [Container] 2016/04/15 17:49:42 Running command mvn install [Container] 2016/04/15 17:49:44 [INFO] Scanning for projects... [Container] 2016/04/15 17:49:44 [INFO] [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:44 [INFO] Building Message Utility Java Sample App 1.0 [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ ... [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 T E S T S [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 Running TestMessageUtil [Container] 2016/04/15 17:49:55 Inside testSalutationMessage() [Container] 2016/04/15 17:49:55 Hi!Robert [Container] 2016/04/15 17:49:55 Inside testPrintMessage() [Container] 2016/04/15 17:49:55 Robert [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Results : [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 ... [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] BUILD SUCCESS [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] Total time: 11.845 s [Container] 2016/04/15 17:49:56 [INFO] Finished at: 2016-04-15T17:49:56+00:00 [Container] 2016/04/15 17:49:56 [INFO] Final Memory: 18M/216M [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 Phase complete: BUILD Success: true [Container] 2016/04/15 17:49:56 Entering phase POST_BUILD [Container] 2016/04/15 17:49:56 Running command echo Entering post_build phase... [Container] 2016/04/15 17:49:56 Entering post_build phase... [Container] 2016/04/15 17:49:56 Phase complete: POST_BUILD Success: true [Container] 2016/04/15 17:49:57 Preparing to copy artifacts [Container] 2016/04/15 17:49:57 Assembling file list [Container] 2016/04/15 17:49:57 Expanding target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Found target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Creating zip artifact
Dans cet exemple, les phases de pré-construction, de construction et de post-construction ont été terminées CodeBuild avec succès. Il a exécuté les tests unitaires et généré avec succès le fichier messageUtil-1.0.jar
.
Étape 9 : Obtenir l'artefact de sortie de génération
(Étape précédente : Étape 8 : Afficher les informations de génération détaillées)
Au cours de cette étape, vous obtenez le messageUtil-1.0.jar
fichier CodeBuild créé et chargé dans le bucket de sortie.
Vous pouvez utiliser la CodeBuild console ou la console Amazon S3 pour effectuer cette étape.
Pour obtenir l'artefact de sortie de construction (AWS CodeBuild console)
-
La CodeBuild console étant toujours ouverte et la page des détails du build toujours affichée à l'étape précédente, choisissez l'onglet Détails du build et faites défiler la page vers le bas jusqu'à la section Artefacts.
Note
Si la page des détails du build n'est pas affichée, dans la barre de navigation, choisissez Build history, puis cliquez sur le lien Build run.
-
Le lien vers le dossier Amazon S3 se trouve sous l'emplacement de téléchargement des artefacts. Ce lien ouvre le dossier dans Amazon S3 où se trouve le fichier d'artefact de sortie de
messageUtil-1.0.jar
compilation.
Pour obtenir l'artefact de sortie du build (console Amazon S3)
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Ouvrir
codebuild-
.region-ID
-account-ID
-output-bucket -
Ouvrez le dossier
codebuild-demo-project
. -
Ouvrez le dossier
target
, dans lequel se trouve le fichier d'artefact de sortie de générationmessageUtil-1.0.jar
.
Étape 10 : Supprimer les compartiments S3
(Étape précédente : Étape 9 : Obtenir l'artefact de sortie de génération)
Pour éviter des frais permanents sur votre AWS compte, vous pouvez supprimer les compartiments d'entrée et de sortie utilisés dans ce didacticiel. Pour obtenir des instructions, consultez Supprimer ou vider un compartiment dans le guide de l'utilisateur d'Amazon Simple Storage Service.
Si vous utilisez l'IAMutilisateur ou un IAM utilisateur administrateur pour supprimer ces compartiments, l'utilisateur doit disposer d'autorisations d'accès supplémentaires. Ajoutez l'instruction suivante entre les marqueurs (### BEGIN ADDING STATEMENT HERE ###
and ### END
ADDING STATEMENTS HERE ###
) à une politique d'accès existante pour l'utilisateur.
Les points de suspension (...) figurant dans cette instruction sont utilisés par souci de concision. Ne supprimez aucune instruction de la stratégie d'accès existante. Ne saisissez pas ces ellipses dans la stratégie.
{ "Version": "2012-10-17", "Id": "...", "Statement": [
### BEGIN ADDING STATEMENT HERE ###
{ "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" }### END ADDING STATEMENT HERE ###
] }
Récapitulatif
Dans ce didacticiel, vous avez AWS CodeBuild l'habitude de créer un ensemble de fichiers de classe Java dans un JAR fichier. Vous avez ensuite affiché les résultats de la génération.
Vous pouvez maintenant essayer de l'utiliser CodeBuild dans vos propres scénarios. Suivez les instructions de la section Planification d'une génération. Si vous ne vous sentez pas encore fait prêt, vous pouvez essayer de générer certains des exemples. Pour de plus amples informations, veuillez consulter Utilisez des exemples basés sur des cas pour CodeBuild.