Commencer avec CodeBuild - AWS CodeBuild

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, Tarification Amazon S3, AWS Key Management Service Tarification et CloudWatch Tarification Amazon.

É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).

  1. 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
  2. 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épertoire src/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éthode printMessage crée la sortie. La méthode salutationMessage produit la sortie Hi! suivie par la chaîne de caractères.

  3. 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 classe MessageUtil sur Robert. Il teste ensuite si la variable message a été correctement définie en vérifiant si les chaînes Robert et Hi!Robert apparaissent dans la sortie.

  4. 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 et TestMessageUtil.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.

  • phasesrepré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 noms install, pre_build, build et post_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 la mvn 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é, quelques echo 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 ces echo 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.

  • artifactsreprésente l'ensemble des artefacts de sortie de construction qui sont CodeBuild chargés dans le compartiment de sortie. filesreprésente les fichiers à inclure dans la sortie de compilation. CodeBuild télécharge le messageUtil-1.0.jar fichier unique trouvé dans le répertoire target relatif de l'environnement de construction. Le nom de fichier messageUtil-1.0.jar et le nom du répertoire target 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 estcodebuild-region-ID-account-ID-input-bucket, où region-ID est la AWS région du compartiment et account-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 (root directory name), mais seulement les répertoires et fichiers du répertoire (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'environnement 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 sur le site web Docker Docs.

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
  1. Connectez-vous à la AWS CodeBuild console AWS Management Console et ouvrez-la sur https://console.aws.amazon.com/codesuite/codebuild/home.

  2. 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.

  3. 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.

  4. 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 dont les politiques AWSCodeBuildAdminAccessAmazonS3ReadOnlyAccess, et IAMFullAccess gérées sont 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.

  5. Dans Source, dans Source provider, choisissez Amazon S3.

  6. Pour Bucket, choisissez codebuild-region-ID-account-ID-seau d'entrée.

  7. Pour S3 object key (Clé d'objet S3), saisissez MessageUtil.zip.

  8. Dans Environnement, pour Image d'environnement, laissez Image gérée sélectionné.

  9. Pour Operating system (Système d'exploitation), choisissez Amazon Linux 2.

  10. Pour Runtime(s) (Exécution(s)), sélectionnez Standard.

  11. Pour Image, choisissez aws/codebuild/amazonlinux2-x86_64-standard:4.0.

  12. Dans Rôle de service, laissez Nouveau rôle de service sélectionné et laissez Nom du rôle inchangé.

  13. Pour Buildspec, laissez Utiliser un fichier buildspec sélectionné.

  14. Dans Artifacts, pour Type, choisissez Amazon S3.

  15. Pour le nom du compartiment, choisissez codebuild-region-ID-account-ID-godet de sortie.

  16. Laissez Nom et Chemin d'accès vides.

  17. 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
  1. Ouvrez la AWS CodeBuild console sur https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Dans le volet de navigation, choisissez Projets de génération.

  3. 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

  1. 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é.)

  2. 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.

  3. 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 :

Pour afficher les informations de génération détaillées
  1. 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.

  2. 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.

  3. 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)
  1. 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.

  2. 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)
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Ouvrir codebuild-region-ID-account-ID-output-bucket.

  3. Ouvrez le dossier codebuild-demo-project.

  4. Ouvrez le dossier target, dans lequel se trouve le fichier d'artefact de sortie de génération messageUtil-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, Tarification Amazon S3, AWS Key Management Service Tarification et CloudWatch Tarification Amazon.

É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).

  1. 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
  2. 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épertoire src/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éthode printMessage crée la sortie. La méthode salutationMessage produit la sortie Hi! suivie par la chaîne de caractères.

  3. 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 classe MessageUtil sur Robert. Il teste ensuite si la variable message a été correctement définie en vérifiant si les chaînes Robert et Hi!Robert apparaissent dans la sortie.

  4. 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 et TestMessageUtil.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.

  • phasesrepré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 noms install, pre_build, build et post_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 la mvn 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é, quelques echo 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 ces echo 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.

  • artifactsreprésente l'ensemble des artefacts de sortie de construction qui sont CodeBuild chargés dans le compartiment de sortie. filesreprésente les fichiers à inclure dans la sortie de compilation. CodeBuild télécharge le messageUtil-1.0.jar fichier unique trouvé dans le répertoire target relatif de l'environnement de construction. Le nom de fichier messageUtil-1.0.jar et le nom du répertoire target 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 estcodebuild-region-ID-account-ID-input-bucket, où region-ID est la AWS région du compartiment et account-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 (root directory name), mais seulement les répertoires et fichiers du répertoire (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'environnement 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 sur le site web Docker Docs.

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
  1. 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::account-ID:role/role-name). Pour en créer un, consultez CodeBuild Autoriser l'interaction avec d'autres AWS services.

    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.

    • Poursource, 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).

    • Carsource, 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).

    • Pourartifacts, 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).

    • Pourenvironment, type est une valeur obligatoire qui représente le type d'environnement de construction (dans cet exemple,LINUX_CONTAINER).

    • Pourenvironment, 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/standardest le nom de l'image Docker. 5.0est 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.

    • Pourenvironment, 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 descriptionbuildspec, auth (y compris type etresource),, pathnamespaceType, name (pourartifacts)packaging, environmentVariables (y compris name etvalue), timeoutInMinutesencryptionKey, et tags (y compris key 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).

  2. 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.

      • timeoutInMinutesrepré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éé.

      • environmentVariablesreprésente toutes les variables d'environnement qui ont été déclarées et qui CodeBuild peuvent être utilisées pendant la construction.

      • encryptionKeyreprésente ARN la clé gérée par le client qui a été CodeBuild utilisée pour chiffrer l'artefact de sortie de construction.

      • arnrepré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 dont les politiques AWSCodeBuildAdminAccessAmazonS3ReadOnlyAccess, et IAMFullAccess gérées sont 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
  1. 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).

  2. 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.

      • arnrepré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 la id 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" } ] }
    • buildsNotFoundrepré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.

      • phasesrepré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 forme startTime, 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) et phaseType, par exemple, (SUBMITTED, PROVISIONING, DOWNLOAD_SOURCE, INSTALL, PRE_BUILD, BUILD, POST_BUILD, UPLOAD_ARTIFACTS, FINALIZING ou COMPLETED) et phaseStatus (par exemple, SUCCEEDED, FAILED, FAULT, TIMED_OUT, IN_PROGRESS ou STOPPED). 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.

      • logsreprésente les informations contenues dans Amazon CloudWatch Logs concernant les journaux du build.

      • md5sumet sha256sum 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 valeur packaging du projet de génération est définie sur ZIP. (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 nom buildArn de la CodeBuild version qui publie les artefacts sur Amazon S3. Le buildArn 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 :

Pour afficher les informations de génération détaillées
  1. 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).

  2. 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.

  3. 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)
  1. 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.

  2. 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)
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Ouvrir codebuild-region-ID-account-ID-output-bucket.

  3. Ouvrez le dossier codebuild-demo-project.

  4. Ouvrez le dossier target, dans lequel se trouve le fichier d'artefact de sortie de génération messageUtil-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.