

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.

# Utilisez des exemples basés sur des cas pour CodeBuild
<a name="use-case-based-samples"></a>

Vous pouvez utiliser ces exemples basés sur des cas pour expérimenter avec AWS CodeBuild :

[Échantillons multiservices](cross-service-samples.md)  
Une liste d'échantillons multiservices à tester. AWS CodeBuild

[Exemple de badges de génération](sample-build-badges.md)  
Montre comment procéder à la configuration CodeBuild avec des badges de construction.

[Exemple de rapport de test](sample-test-report-cli.md)  
Utilise le AWS CLI pour créer, exécuter et afficher les résultats d'un rapport de test.

[Exemples Docker pour CodeBuild](sample-docker-section.md)  
Montre comment utiliser des images Docker personnalisées, publier des images Docker dans un référentiel Amazon ECR et utiliser des images Docker dans un registre privé.

[Hébergement d'une sortie de génération dans un compartiment S3 ](sample-disable-artifact-encryption.md)  
Montre comment créer un site web statique dans un compartiment S3 à l'aide d'artefacts de génération non chiffrés.

[ Échantillon d'entrées et de sorties multiples ](sample-multi-in-out.md)  
Montre comment utiliser plusieurs sources d'entrée et plusieurs artefacts de sortie dans un projet de génération.

[ Exemples d'exécution de tests parallèles ](sample-parallel-test.md)  
Montre comment utiliser la commande `codebuild-tests-run` CLI pour diviser et exécuter des tests dans des environnements d'exécution parallèle.

[ Versions d'environnement d'exécution dans l'exemple de fichier buildspec ](sample-runtime-versions.md)  
Montre comment spécifier des environnements d'exécution et leurs versions dans le fichier buildspec.

[Exemple de version source](sample-source-version.md)  
Montre comment utiliser une version spécifique de votre source dans un projet de CodeBuild génération.

[Exemples de référentiels sources tiers pour CodeBuild](sample-third-party-source.md)  
Montre comment créer BitBucket, GitHub Enterprise Server et GitHub extraire des requêtes à l'aide de webhooks en utilisant CodeBuild.

[Définissez les noms des artefacts au moment de la construction à l'aide du versionnement sémantique](sample-buildspec-artifact-naming.md)  
Montre comment utiliser la gestion sémantique des versions pour créer un nom d'artefact au moment de la génération.

# Exemples multiservices pour CodeBuild
<a name="cross-service-samples"></a>

Vous pouvez utiliser ces exemples multiservices pour tester : AWS CodeBuild

[Exemple Amazon ECR](sample-ecr.md)  
Utilise une image Docker dans un référentiel Amazon ECR pour utiliser Apache Maven afin de produire un seul fichier JAR. Les exemples d'instructions vous montreront comment créer et envoyer une image Docker vers Amazon ECR, créer un projet Go, créer le projet, exécuter le projet et configurer les autorisations permettant de se connecter CodeBuild à Amazon ECR.

[Exemple Amazon EFS](sample-efs.md)  
Montre comment configurer un fichier buildspec afin qu'un CodeBuild projet soit monté et construit sur un système de fichiers Amazon EFS. Les exemples d'instructions vous montreront comment créer un Amazon VPC, créer un système de fichiers dans Amazon VPC, créer et construire un projet utilisant Amazon VPC, puis passer en revue le fichier de projet et les variables générés. 

[AWS CodePipeline échantillons](sample-codepipeline.md)  
Montre comment AWS CodePipeline créer un build avec des builds par lots ainsi que plusieurs sources d'entrée et plusieurs artefacts de sortie. Cette section contient des exemples de fichiers JSON qui montrent des structures de pipeline qui créent des constructions par lots avec des artefacts distincts et des artefacts combinés. Un exemple JSON supplémentaire est fourni qui montre la structure du pipeline avec plusieurs sources d'entrée et plusieurs artefacts de sortie.

[AWS Config échantillon](how-to-integrate-config.md)  
Montre comment procéder à la configuration AWS Config. Répertorie les CodeBuild ressources qui font l'objet d'un suivi et décrit comment rechercher CodeBuild des projets AWS Config. Les exemples d'instructions vous indiqueront les conditions préalables à l'intégration AWS Config, les étapes de configuration AWS Config et les étapes de recherche de CodeBuild projets et de données. AWS Config

[Exemple de notifications de génération](sample-build-notifications.md)  
Utilise Apache Maven pour produire un fichier JAR unique. Envoie une notification de création aux abonnés d'une rubrique Amazon SNS. Les exemples d'instructions vous montrent comment configurer les autorisations CodeBuild permettant de communiquer avec Amazon SNS CloudWatch, comment créer et identifier des CodeBuild sujets dans Amazon SNS, comment inscrire des destinataires à ces sujets et comment configurer des règles dans. CloudWatch

# Exemple Amazon ECR pour CodeBuild
<a name="sample-ecr"></a>

Cet exemple utilise une image Docker dans un référentiel d'images Amazon Elastic Container Registry (Amazon ECR) pour créer un exemple de projet Go.

**Important**  
L'exécution de cet échantillon peut entraîner des frais sur votre AWS compte. Cela inclut les éventuels frais pour AWS CodeBuild et pour les AWS ressources et les actions liées à Amazon S3 AWS KMS, CloudWatch Logs et Amazon ECR. Pour plus d'informations, consultez [CodeBuild les rubriques Tarification](https://aws.amazon.com/codebuild/pricing), [Tarification Amazon S3](https://aws.amazon.com/s3/pricing), [AWS Key Management Service Tarification](https://aws.amazon.com/kms/pricing) [Amazon et CloudWatch Tarification](https://aws.amazon.com/cloudwatch/pricing) [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/pricing).

**Topics**
+ [Exécutez l'exemple Amazon ECR](#sample-ecr-running)

## Exécutez l'exemple Amazon ECR
<a name="sample-ecr-running"></a>

Suivez les instructions suivantes pour exécuter l'exemple Amazon ECR pour CodeBuild.

**Pour exécuter cet exemple**

1. Pour créer et transférer l'image Docker vers votre référentiel d'images dans Amazon ECR, suivez les étapes décrites dans la [Exécutez l'exemple « Publier une image Docker sur Amazon ECR »](sample-docker.md#sample-docker-running) section du. [Exemple « Publier une image Docker sur Amazon ECR »](sample-docker.md)

1. Créer un projet Go : 

   1. Créez les fichiers comme décrit dans les [Fichiers d'un projet Go](#sample-ecr-go-project-files) sections [Structure d'un projet Go](#ecr-sample-go-project-file-structure) et de cette rubrique, puis chargez-les dans un compartiment d'entrée S3 ou un AWS CodeCommit référentiel Bitbucket. GitHub 
**Important**  
Ne chargez pas `(root directory name)`, mais seulement les fichiers à l'intérieur de `(root directory name)`.   
Si vous utilisez un compartiment d'entrée S3, veillez à créer un fichier ZIP contenant les fichiers, puis chargez ce fichier dans le compartiment d'entrée. N'ajoutez pas `(root directory name)` au fichier ZIP, mais seulement les fichiers à l'intérieur de `(root directory name)`.

   1. Créez un projet de build, exécutez le build et consultez les informations de build associées.

      Si vous utilisez le AWS CLI pour créer le projet de construction, l'entrée au format JSON de la `create-project` commande peut ressembler à ceci. (Remplacez les espaces réservés par vos propres valeurs.)

      ```
      {
        "name": "sample-go-project",
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/GoSample.zip"
        },
        "artifacts": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-output-bucket",
          "packaging": "ZIP",
          "name": "GoOutputArtifact.zip"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/standard:5.0",
          "computeType": "BUILD_GENERAL1_SMALL"
        },
        "serviceRole": "arn:aws:iam::account-ID:role/role-name",
        "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
      }
      ```

   1. Pour obtenir le résultat de l'artefact de sortie de la génération, ouvrez votre compartiment de sortie S3.

   1. Téléchargez le fichier `GoOutputArtifact.zip` sur votre ordinateur ou instance local, puis extrayez le contenu du fichier . Dans le contenu extrait, obtenez le fichier `hello`. 

1.  Si l'une des conditions suivantes est vraie, vous devez ajouter des autorisations à votre référentiel d'images dans Amazon ECR afin de AWS CodeBuild pouvoir intégrer son image Docker dans l'environnement de génération. 
   +  Votre projet utilise des CodeBuild informations d'identification pour extraire les images Amazon ECR. Ceci est indiqué par la valeur `CODEBUILD` dans l'attribut `imagePullCredentialsType` de votre `ProjectEnvironment`. 
   +  Votre projet utilise une image Amazon ECR multi-comptes. Dans ce cas, votre projet doit utiliser son rôle de service pour extraire les images Amazon ECR. Pour activer ce comportement, définissez l'attribut `imagePullCredentialsType` de votre `ProjectEnvironment` sur `SERVICE_ROLE`. 

   1. Ouvrez la console Amazon ECR à [https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/)l'adresse.

   1. Dans la liste des noms de référentiel, choisissez le nom du référentiel que vous avez créé ou sélectionné.

   1. Dans le volet de navigation, choisissez **Permissions (Autorisations)**, **Edit (Modifier)**, puis **Add statement (Ajouter une instruction)**.

   1. Pour **Statement name**, saisissez un identifiant (par exemple, **CodeBuildAccess**).

   1. Pour **Effect (Effet)**, conservez la sélection **Allow (Autoriser)**. Cela indique que vous souhaitez autoriser l'accès à un autre compte AWS .

   1. Pour **Principal**, effectuez l'une des opérations suivantes:
      + Si votre projet utilise des CodeBuild informations d'identification pour extraire une image Amazon ECR, saisissez ****codebuild.amazonaws.com**Service principal**. 
      + Si votre projet utilise une image Amazon ECR multi-comptes IDs, saisissez pour **AWS compte** IDs les AWS comptes auxquels vous souhaitez donner accès.

   1. Ignorer la liste **Toutes les entités IAM**.

   1. **Pour **Action**, sélectionnez les actions à extraction uniquement : ecr :GetDownloadUrlForLayer, **ecr :** et **ecr :BatchGetImage.** BatchCheckLayerAvailability**

   1. Pour **Conditions**, ajoutez ce qui suit :

      ```
      {
         "StringEquals":{
            "aws:SourceAccount":"<AWS-account-ID>",
            "aws:SourceArn":"arn:aws:codebuild:<region>:<AWS-account-ID>:project/<project-name>"
         }
      }
      ```

   1. Choisissez **Enregistrer**.

      Cette stratégie est affichée dans **Autorisations**. Le mandataire correspond à ce que vous avez saisi pour **Principal (Mandataire)** à l'étape 3 de cette procédure :
      + Si votre projet utilise des CodeBuild informations d'identification pour extraire une image Amazon ECR, cela `"codebuild.amazonaws.com"` apparaît sous **Principaux du service**.
      + **Si votre projet utilise une image Amazon ECR multi-comptes, l'identifiant du AWS compte auquel vous souhaitez donner accès apparaît sous AWS Compte. IDs**

        L'exemple de politique suivant utilise à la fois des CodeBuild informations d'identification et une image Amazon ECR entre comptes.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "CodeBuildAccessPrincipal",
                  "Effect": "Allow",
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceArn": "arn:aws:codebuild:us-east-1:111122223333:project/MyProject",
                          "aws:SourceAccount": "111122223333"
                      }
                  }
              },
              {
                  "Sid": "CodeBuildAccessCrossAccount",
                  "Effect": "Allow",
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------
      + Si vos projets utilisent des CodeBuild informations d'identification et que vous souhaitez qu'ils aient un accès ouvert au référentiel Amazon ECR, vous pouvez omettre les `Condition` clés et ajouter l'exemple de politique suivant. CodeBuild 

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "CodeBuildAccessPrincipal",
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
                  ],
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ]
              },
              {
                  "Sid": "CodeBuildAccessCrossAccount",
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
                  ],
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ]
              }
          ]
      }
      ```

------

1. Créez un projet de build, exécutez le build et consultez les informations de build.

   Si vous utilisez le AWS CLI pour créer le projet de construction, l'entrée au format JSON de la `create-project` commande peut ressembler à ceci. (Remplacez les espaces réservés par vos propres valeurs.)

   ```
   {
     "name": "amazon-ecr-sample-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/GoSample.zip"
     },
     "artifacts": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-output-bucket",
       "packaging": "ZIP",
       "name": "GoOutputArtifact.zip"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "account-ID.dkr.ecr.region-ID.amazonaws.com/your-Amazon-ECR-repo-name:tag",
       "computeType": "BUILD_GENERAL1_SMALL"
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

1. Pour obtenir le résultat de l'artefact de sortie de la génération, ouvrez votre compartiment de sortie S3.

1. Téléchargez le fichier `GoOutputArtifact.zip` sur votre ordinateur ou instance local, puis extrayez le contenu du fichier `GoOutputArtifact.zip`. Dans le contenu extrait, obtenez le fichier `hello`.

### Structure d'un projet Go
<a name="ecr-sample-go-project-file-structure"></a>

Cet exemple suppose que cette structure de répertoire est utilisée.

```
(root directory name)
├── buildspec.yml
└── hello.go
```

### Fichiers d'un projet Go
<a name="sample-ecr-go-project-files"></a>

Cet exemple utilise ces fichiers.

`buildspec.yml` (dans `(root directory name)`)

```
version: 0.2

phases:
  install: 
   runtime-versions: 
     golang: 1.13 
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Go code
      - go build hello.go 
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - hello
```

`hello.go` (dans `(root directory name)`)

```
package main
import "fmt"

func main() {
  fmt.Println("hello world")
  fmt.Println("1+1 =", 1+1)
  fmt.Println("7.0/3.0 =", 7.0/3.0)
  fmt.Println(true && false)
  fmt.Println(true || false)
  fmt.Println(!true)
}
```

# Exemple d'Amazon Elastic File System pour AWS CodeBuild
<a name="sample-efs"></a>

 Vous souhaiterez peut-être créer vos AWS CodeBuild versions sur Amazon Elastic File System, un service de fichiers partagé évolutif pour les instances Amazon EC2. La capacité de stockage d'Amazon EFS étant élastique, elle augmente ou diminue au fur et à mesure que des fichiers sont ajoutés ou supprimés. Il propose une interface de services Web simple, qui vous permet de créer et de configurer des systèmes de fichiers. Elle gère également l'ensemble de l'infrastructure de stockage de fichiers à votre place, de sorte que vous n'ayez pas besoin de vous préoccuper du déploiement, de l'application de correctifs ou de la maintenance des configurations de systèmes de fichiers. Pour plus d'informations, consultez [Qu'est-ce qu'Amazon Elastic File System ?](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) dans le *guide de l'utilisateur d'Amazon Elastic File System*. 

 Cet exemple explique comment configurer un CodeBuild projet afin qu'il soit monté puis créé une application Java sur un système de fichiers Amazon EFS. Avant de commencer, vous devez disposer d'une application Java prête à être créée et téléchargée dans un compartiment d'entrée S3 AWS CodeCommit GitHub, un serveur GitHub d'entreprise ou un référentiel Bitbucket. 

Les données en transit pour votre système de fichiers sont chiffrées. Pour chiffrer les données en transit à l'aide d'une autre image, veuillez consulter [Chiffrement des données en transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html). 

**Topics**
+ [Utilisation AWS CodeBuild avec Amazon Elastic File System](#sample-efs-high-level-steps)
+ [Résoudre les problèmes liés à l'intégration Amazon EFS](sample-efs-troubleshooting.md)

## Utilisation AWS CodeBuild avec Amazon Elastic File System
<a name="sample-efs-high-level-steps"></a>

L'exemple couvre les quatre étapes de haut niveau requises pour utiliser Amazon EFS avec AWS CodeBuild. Il s'agit des options suivantes : 

1. Créez un cloud privé virtuel (VPC) dans votre AWS compte. 

1. Créez un système de fichiers qui utilise ce VPC. 

1. Créez et créez un CodeBuild projet qui utilise le VPC. Le CodeBuild projet utilise les éléments suivants pour identifier le système de fichiers :
   +  Un identificateur de système de fichiers unique. Vous choisissez cet identificateur lorsque vous spécifiez le système de fichiers dans votre projet de génération.
   + ID du système de fichiers. L'ID s'affiche lorsque vous consultez votre système de fichiers dans la console Amazon EFS.
   +  Un point de montage. Il s'agit d'un répertoire dans votre conteneur Docker qui monte le système de fichiers. 
   + Des options de montage. Elles incluent des détails sur la façon de monter le système de fichiers.

1. Passez en revue le projet de construction pour vous assurer que les fichiers de projet et les variables appropriés ont été générés.

**Note**  
 Un système de fichiers créé dans Amazon EFS est uniquement pris en charge sur les plateformes Linux. 

 

**Topics**
+ [Étape 1 : créer un VPC à l'aide de CloudFormation](#sample-efs-create-vpc)
+ [Étape 2 : créer un système de fichiers Amazon Elastic File System avec votre VPC](#sample-efs-create-efs)
+ [Étape 3 : créer un CodeBuild projet à utiliser avec Amazon EFS](#sample-efs-create-acb)
+ [Étape 4 : Passez en revue le projet de construction](#sample-efs-summary)

### Étape 1 : créer un VPC à l'aide de CloudFormation
<a name="sample-efs-create-vpc"></a>

 Créez votre VPC à l'aide d'un CloudFormation modèle. 

1.  Suivez les instructions d'utilisation [CloudFormation Modèle VPC](cloudformation-vpc-template.md) pour CloudFormation créer un VPC. 
**Note**  
 Le VPC créé par ce CloudFormation modèle possède deux sous-réseaux privés et deux sous-réseaux publics. Vous ne devez utiliser des sous-réseaux privés que lorsque vous montez le système AWS CodeBuild de fichiers que vous avez créé dans Amazon EFS. Si vous utilisez l'un des sous-réseaux publics, la génération échoue. 

1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1.  Choisissez le VPC avec lequel vous avez créé. CloudFormation

1. Dans l'onglet **Description**, notez le nom de votre VPC et son ID. Les deux seront requis lorsque vous créerez votre projet AWS CodeBuild plus tard dans cet exemple. 

### Étape 2 : créer un système de fichiers Amazon Elastic File System avec votre VPC
<a name="sample-efs-create-efs"></a>

 Créez un système de fichiers Amazon EFS simple pour cet exemple à l'aide du VPC que vous avez créé précédemment. 

1. Connectez-vous à la console Amazon EFS AWS Management Console et ouvrez-la à l'adresse [ https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/).

1.  Choisissez **Create file system** (Créer un système de fichiers). 

1.  Dans **VPC**, choisissez le nom de VPC que vous avez noté précédemment dans cet exemple. 

1.  Conservez les Zones de disponibilité associées à vos sous-réseaux sélectionnés. 

1.  Choisissez **Étape suivante**. 

1.  Dans **Ajouter des balises**, pour la clé **Nom** par défaut, dans **Valeur**, entrez le nom de votre système de fichiers Amazon EFS. 

1.  Conservez **Bursting (Transmission en rafales)** et **General Purpose (Usage général)** sélectionnés en tant que modes de performance et de débit par défaut, puis choisissez **Étape suivante**. 

1. Pour **Configure client access (Configurer l'accès client)**, choisissez **Next Step (Étape suivante)**.

1.  Sélectionnez **Créer un système de fichiers**. 

1.  (Facultatif) Nous vous recommandons d'ajouter une politique à votre système de fichiers Amazon EFS qui applique le chiffrement des données en transit. Dans la console Amazon EFS, choisissez la **politique du système de fichiers**, choisissez **Modifier**, cochez la case intitulée **Appliquer le chiffrement en transit pour tous les clients**, puis sélectionnez **Enregistrer**.

### Étape 3 : créer un CodeBuild projet à utiliser avec Amazon EFS
<a name="sample-efs-create-acb"></a>

 Créez un AWS CodeBuild projet qui utilise le VPC que vous avez créé précédemment dans cet exemple. Lorsque le build est exécuté, il monte le système de fichiers Amazon EFS créé précédemment. Ensuite, elle stocke le fichier .jar créé par votre application Java dans le répertoire de point de montage de votre système de fichiers.

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Choisissez **Build projects (Projets de génération)** dans le volet de navigation, puis choisissez **Create a build project (Créer un projet de build)**. 

1.  Dans **Project name (Nom de projet)**, saisissez un nom pour votre projet. 

1.  Dans **Source provider (Fournisseur de source)**, choisissez le référentiel qui contient l'application Java que vous voulez générer. 

1.  Entrez les informations, telles que l'URL du référentiel, CodeBuild qui permettent de localiser votre application. Les options sont différentes pour chaque fournisseur de source. Pour de plus amples informations, veuillez consulter [Choose source provider](create-project.md#create-project-source-provider). 

1.  Dans **Image de l'environnement**, choisissez **Image gérée**. 

1.  Dans **Operating system (Système d'exploitation)**, choisissez **Amazon Linux 2**. 

1. Dans **Runtime(s) (Exécution(s))**, sélectionnez **Standard**. 

1.  Dans **Image**, choisissez **aws/codebuild/amazonlinux-x86\$164-standard:4.0**. 

1.  Dans **Environment type (Type d'environnement)**, choisissez **Linux**. 

1.  Dans **Service role (Rôle de service)**, choisissez **New service role (Nouveau rôle de service)**. Dans **Nom du rôle**, entrez le nom du rôle CodeBuild créé pour vous. 

1. Développez **Additional configuration (Configuration supplémentaire)**.

1.  Sélectionnez **Enable this flag if you want to build Docker images or want your builds to get elevated privileges (Activer cet indicateur si vous souhaitez créer des images Docker ou que vos builds reçoivent des privilèges élevés)**.
**Note**  
Par défaut, le démon Docker est activé pour les versions non VPC. Si vous souhaitez utiliser des conteneurs Docker pour les builds VPC, [consultez Runtime Privilege et Linux](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) Capabilities sur le site Web de Docker Docs et activez le mode privilégié. De plus, Windows ne prend pas en charge le mode privilégié.

1.  Choisissez l'ID de VPC dans **VPC**. 

1.  Dans **Subnets (Sous-réseaux)**, choisissez un ou plusieurs sous-réseaux privés associés à votre VPC. Vous devez utiliser des sous-réseaux privés dans une version qui monte un système de fichiers Amazon EFS. La génération échoue si vous utilisez un sous-réseau public. 

1.  Pour **Security Groups (Groupes de sécurité)**, choisissez le groupe de sécurité par défaut.

1.  Dans **File systems (Systèmes de fichiers)**, entrez les informations suivantes :
   + Pour **Identifier (Identificateur)**, entrez un identificateur de système de fichiers unique. Il doit comporter moins de 129 caractères et ne contenir que des caractères alphanumériques et des traits de soulignement. CodeBuild utilise cet identificateur pour créer une variable d'environnement qui identifie le système de fichiers élastique. Le format de variable d'environnement est `CODEBUILD_<file_system_identifier>` en lettres majuscules. Par exemple, si vous entrez `my_efs`, la variable d'environnement est `CODEBUILD_MY_EFS`. 
   + Pour **ID**, choisissez l'ID du système de fichiers. 
   + (Facultatif) Entrez un répertoire dans le système de fichiers. CodeBuild monte ce répertoire. Si vous laissez **Directory path (Chemin du répertoire)** vide, CodeBuild monte le système de fichiers complet. Le chemin est relatif à la racine du système de fichiers. 
   + Pour **Point de montage**, entrez le chemin absolu du répertoire dans votre conteneur de compilation où le système de fichiers est monté. Si ce répertoire n'existe pas, CodeBuild créez-le lors de la compilation. 
   + (Facultatif) Entrez des options de montage. Si vous laissez **le champ Options de montage** vide, CodeBuild utilise ses options de montage par défaut :

     ```
     nfsvers=4.1
     rsize=1048576
     wsize=1048576
     hard
     timeo=600
     retrans=2
     ```

     Pour plus d'informations, consultez les [options de montage NFS recommandées](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-nfs-mount-settings.html) dans le *guide de l'utilisateur d'Amazon Elastic File System*. 

1.  Pour **Build spécification (Spécification de génération)**, choisissez **Insert build commands (Insérer les commandes de génération)**, puis choisissez **Switch to editor (Basculer vers l'éditeur)**. 

1.  Entrez les commandes de spécification de construction suivantes dans l'éditeur. Remplacez `<file_system_identifier>` par l'identificateur que vous avez entré à l'étape 17. Utilisez des lettres majuscules (par exemple, `CODEBUILD_MY_EFS`).

   ```
   version: 0.2
   phases:
     install:
       runtime-versions:
         java: corretto11    
     build:
       commands:
         - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_<file_system_identifier>
   ```

1.  Utilisez les valeurs par défaut pour les autres paramètres, puis choisissez **Create build project (Créer un projet de build)**. Lorsque votre génération est terminée, la page de la console correspondant à votre projet est affichée. 

1.  Choisissez **Démarrer la génération**. 

### Étape 4 : Passez en revue le projet de construction
<a name="sample-efs-summary"></a>



 Une fois votre AWS CodeBuild projet créé : 
+  Vous disposez d'un fichier .jar créé par votre application Java qui est intégré à votre système de fichiers Amazon EFS dans le répertoire de votre point de montage. 
+  Une variable d'environnement qui identifie votre système de fichiers est créée à l'aide de l'identificateur de système de fichiers que vous avez entré lors de la création du projet. 

 Pour plus d'informations, consultez la section [Montage de systèmes de fichiers](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html) dans le manuel *Amazon Elastic File System User Guide*. 

# Résoudre les problèmes liés à l'intégration Amazon EFS
<a name="sample-efs-troubleshooting"></a>

Les erreurs suivantes sont susceptibles de se produire lors de la configuration d'Amazon EFS avec CodeBuild.

**Topics**
+ [CLIENT\$1ERROR : échec du montage de « 127.0.0.1 :/». Autorisation refusée](#sample-efs-troubleshooting.permission-denied)
+ [CLIENT\$1ERROR : échec du montage de '127.0.0.1 :/'. Connexion réinitialisée par un pair](#sample-efs-troubleshooting.connection-reset)
+ [VPC\$1CLIENT\$1ERROR : erreur EC2 inattendue : UnauthorizedOperation](#sample-efs-troubleshooting.unauthorized-operation)

## CLIENT\$1ERROR : échec du montage de « 127.0.0.1 :/». Autorisation refusée
<a name="sample-efs-troubleshooting.permission-denied"></a>

L'autorisation IAM n'est pas prise en charge pour le montage d'Amazon EFS avec CodeBuild. Si vous utilisez une politique de système de fichiers Amazon EFS personnalisée, vous devez accorder un accès en lecture et en écriture à tous les principaux IAM. Par exemple :

```
"Principal": {
  "AWS": "*"
}
```

## CLIENT\$1ERROR : échec du montage de '127.0.0.1 :/'. Connexion réinitialisée par un pair
<a name="sample-efs-troubleshooting.connection-reset"></a>

Cette erreur peut avoir deux causes :
+ Le sous-réseau CodeBuild VPC se trouve dans une zone de disponibilité différente de celle de la cible de montage Amazon EFS. Vous pouvez résoudre ce problème en ajoutant un sous-réseau VPC dans la même zone de disponibilité que la cible de montage Amazon EFS.
+ Le groupe de sécurité n'est pas autorisé à communiquer avec Amazon EFS. Vous pouvez résoudre ce problème en ajoutant une règle entrante pour autoriser tout le trafic provenant du VPC (ajoutez le bloc CIDR principal pour votre VPC) ou du groupe de sécurité lui-même.

## VPC\$1CLIENT\$1ERROR : erreur EC2 inattendue : UnauthorizedOperation
<a name="sample-efs-troubleshooting.unauthorized-operation"></a>

Cette erreur se produit lorsque tous les sous-réseaux de votre configuration VPC pour CodeBuild le projet sont des sous-réseaux publics. Vous devez disposer d'au moins un sous-réseau privé dans le VPC pour garantir la connectivité réseau. 

# AWS CodePipeline échantillons pour CodeBuild
<a name="sample-codepipeline"></a>

Cette section décrit des exemples d'intégrations entre CodePipeline et. CodeBuild


| Exemple | Description | 
| --- | --- | 
|  [Exemples d' CodePipeline/CodeBuild intégrations et de versions par lots](#sample-pipeline-batch)  |  Ces exemples montrent comment AWS CodePipeline créer un projet de génération utilisant des builds par lots.  | 
|  [Exemple d' CodePipeline/CodeBuild intégration avec plusieurs sources d'entrée et artefacts de sortie](#sample-pipeline-multi-input-output)  |  Cet exemple montre comment AWS CodePipeline créer un projet de génération qui utilise plusieurs sources d'entrée pour créer plusieurs artefacts de sortie.  | 

## Exemples d' CodePipeline/CodeBuild intégrations et de versions par lots
<a name="sample-pipeline-batch"></a>

AWS CodeBuild prend en charge les builds par lots. Les exemples suivants montrent comment AWS CodePipeline créer un projet de génération utilisant des builds par lots.

Vous pouvez utiliser un fichier au format JSON qui définit la structure de votre pipeline, puis l'utiliser avec le AWS CLI pour créer le pipeline. Pour plus d'informations, consultez la section [Référence sur la structure du AWS CodePipeline pipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html) dans le *guide de AWS CodePipeline l'utilisateur*.

### Construction par lots avec des artefacts individuels
<a name="sample-pipeline-batch.separate-artifacts"></a>

Utilisez le fichier JSON suivant comme exemple de structure de pipeline qui crée une construction par lots avec des artefacts distincts. Pour activer les intégrations par lots CodePipeline, définissez le `BatchEnabled` paramètre de l'`configuration`objet sur`true`.

```
{
  "pipeline": {
    "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
    "stages": [
      {
        "name": "Source",
        "actions": [
          {
            "inputArtifacts": [],
            "name": "Source1",
            "actionTypeId": {
              "category": "Source",
              "owner": "AWS",
              "version": "1",
              "provider": "S3"
            },
            "outputArtifacts": [
              {
                "name": "source1"
              }
            ],
            "configuration": {
              "S3Bucket": "<my-input-bucket-name>",
              "S3ObjectKey": "my-source-code-file-name.zip"
            },
            "runOrder": 1
          },
          {
            "inputArtifacts": [],
            "name": "Source2",
            "actionTypeId": {
              "category": "Source",
              "owner": "AWS",
              "version": "1",
              "provider": "S3"
            },
            "outputArtifacts": [
              {
                "name": "source2"
              }
            ],
            "configuration": {
              "S3Bucket": "<my-other-input-bucket-name>",
              "S3ObjectKey": "my-other-source-code-file-name.zip"
            },
            "runOrder": 1
          }
        ]
      },
      {
        "name": "Build",
        "actions": [
          {
            "inputArtifacts": [
              {
                "name": "source1"
              },
              {
                "name": "source2"
              }
            ],
            "name": "Build",
            "actionTypeId": {
              "category": "Build",
              "owner": "AWS",
              "version": "1",
              "provider": "CodeBuild"
            },
            "outputArtifacts": [
              {
                "name": "build1"
              },
              {
                "name": "build1_artifact1"
              },
              {
                "name": "build1_artifact2"
              },
              {
                "name": "build2_artifact1"
              },
              {
                "name": "build2_artifact2"
              }
            ],
            "configuration": {
              "ProjectName": "my-build-project-name",
              "PrimarySource": "source1",
              "BatchEnabled": "true"
            },
            "runOrder": 1
          }
        ]
      }
    ],
    "artifactStore": {
      "type": "S3",
      "location": "<AWS-CodePipeline-internal-bucket-name>"
    },
    "name": "my-pipeline-name",
    "version": 1
  }
}
```

Voici un exemple de fichier CodeBuild buildspec qui fonctionnera avec cette configuration de pipeline.

```
version: 0.2
batch:
  build-list:
    - identifier: build1
      env:
        compute-type: BUILD_GENERAL1_SMALL
    - identifier: build2
      env:
        compute-type: BUILD_GENERAL1_MEDIUM

phases:
  build:
    commands:
      - echo 'file' > output_file

artifacts:
  files:
    - output_file
  secondary-artifacts:
    artifact1:
      files:
        - output_file
    artifact2:
      files:
        - output_file
```

Les noms des artefacts de sortie spécifiés dans le fichier JSON du pipeline doivent correspondre à l'identifiant des builds et des artefacts définis dans votre fichier buildspec. La syntaxe est *buildIdentifier* pour les artefacts principaux et *buildIdentifier* \$1 *artifactIdentifier* pour les artefacts secondaires.

Par exemple, pour le nom de l'artefact en sortie`build1`, CodeBuild téléchargera l'artefact principal de `build1` à l'emplacement de. `build1` Pour le nom de sortie`build1_artifact1`, CodeBuild téléchargera l'artefact secondaire `artifact1` de `build1` à l'emplacement de`build1_artifact1`, et ainsi de suite. Si un seul emplacement de sortie est spécifié, le nom doit être *buildIdentifier* uniquement.

Une fois que vous avez créé le fichier JSON, vous pouvez créer votre pipeline. Utilisez le AWS CLI pour exécuter la commande **create-pipeline** et transmettre le fichier au `--cli-input-json` paramètre. Pour plus d'informations, consultez la section [Créer un pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) dans le *guide de AWS CodePipeline l'utilisateur*. 

### Construction par lots avec des artefacts combinés
<a name="sample-pipeline-batch.combined-artifacts"></a>

Utilisez le fichier JSON suivant comme exemple de structure de pipeline qui crée une construction par lots avec des artefacts combinés. Pour activer les intégrations par lots CodePipeline, définissez le `BatchEnabled` paramètre de l'`configuration`objet sur`true`. Pour combiner les artefacts de construction au même endroit, définissez le `CombineArtifacts` paramètre de l'`configuration`objet sur`true`.

```
{
 "pipeline": {
  "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
  "stages": [
    {
      "name": "Source",
      "actions": [
        {
          "inputArtifacts": [],
          "name": "Source1",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source1"
            }
          ],
          "configuration": {
            "S3Bucket": "<my-input-bucket-name>",
            "S3ObjectKey": "my-source-code-file-name.zip"
          },
          "runOrder": 1
        },
        {
          "inputArtifacts": [],
          "name": "Source2",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source2"
            }
          ],
          "configuration": {
            "S3Bucket": "<my-other-input-bucket-name>",
            "S3ObjectKey": "my-other-source-code-file-name.zip"
          },
          "runOrder": 1
        }
      ]
    },
    {
      "name": "Build",
      "actions": [
        {
          "inputArtifacts": [
            {
              "name": "source1"
            },
            {
              "name": "source2"
            }
          ],
          "name": "Build",
          "actionTypeId": {
            "category": "Build",
            "owner": "AWS",
            "version": "1",
            "provider": "CodeBuild"
          },
          "outputArtifacts": [
            {
              "name": "output1 "
            }
          ],
          "configuration": {
            "ProjectName": "my-build-project-name",
            "PrimarySource": "source1",
             "BatchEnabled": "true",
             "CombineArtifacts": "true"
          },
          "runOrder": 1
        }
      ]
    }
  ],
  "artifactStore": {
    "type": "S3",
    "location": "<AWS-CodePipeline-internal-bucket-name>"
  },
  "name": "my-pipeline-name",
  "version": 1
 }
}
```

Voici un exemple de fichier CodeBuild buildspec qui fonctionnera avec cette configuration de pipeline.

```
version: 0.2
batch:
  build-list:
    - identifier: build1
      env:
        compute-type: BUILD_GENERAL1_SMALL
    - identifier: build2
      env:
        compute-type: BUILD_GENERAL1_MEDIUM

phases:
  build:
    commands:
      - echo 'file' > output_file

artifacts:
  files:
    - output_file
```

Si les artefacts combinés sont activés pour la génération par lots, une seule sortie est autorisée. CodeBuild combinera les principaux artefacts de toutes les versions dans un seul fichier ZIP.

Une fois que vous avez créé le fichier JSON, vous pouvez créer votre pipeline. Utilisez le AWS CLI pour exécuter la commande **create-pipeline** et transmettre le fichier au `--cli-input-json` paramètre. Pour plus d'informations, consultez la section [Créer un pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) dans le *guide de AWS CodePipeline l'utilisateur*. 

## Exemple d' CodePipeline/CodeBuild intégration avec plusieurs sources d'entrée et artefacts de sortie
<a name="sample-pipeline-multi-input-output"></a>

Un AWS CodeBuild projet peut utiliser plusieurs sources d'entrée. Il peut également créer plusieurs artefacts de sortie. Cet exemple montre comment AWS CodePipeline créer un projet de génération qui utilise plusieurs sources d'entrée pour créer plusieurs artefacts de sortie. Pour de plus amples informations, veuillez consulter [Exemples de projets avec plusieurs sources d'entrée et plusieurs artefacts de sortie](sample-multi-in-out.md).

Vous pouvez utiliser un fichier au format JSON qui définit la structure de votre pipeline, puis l'utiliser avec le AWS CLI pour créer le pipeline. Utilisez le fichier JSON suivant comme exemple de structure de pipeline qui crée une génération avec plusieurs sources d'entrée et plusieurs artefacts de sortie. Ultérieurement dans cet exemple, vous apprendrez comment ce fichier spécifie les différentes entrées et sorties. Pour plus d'informations, consultez [la référence sur la structure du CodePipeline pipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html) dans le *guide de AWS CodePipeline l'utilisateur*.

```
{
 "pipeline": {
  "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
  "stages": [
    {
      "name": "Source",
      "actions": [
        {
          "inputArtifacts": [],
          "name": "Source1",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source1"
            }
          ],
          "configuration": {
            "S3Bucket": "my-input-bucket-name",
            "S3ObjectKey": "my-source-code-file-name.zip"
          },
          "runOrder": 1
        },
        {
          "inputArtifacts": [],
          "name": "Source2",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source2"
            }
          ],
          "configuration": {
            "S3Bucket": "my-other-input-bucket-name",
            "S3ObjectKey": "my-other-source-code-file-name.zip"
          },
          "runOrder": 1
        }
      ]
    },
    {
      "name": "Build",
      "actions": [
        {
          "inputArtifacts": [
            {
              "name": "source1"
            },
            {
              "name": "source2"
            }
          ],
          "name": "Build",
          "actionTypeId": {
            "category": "Build",
            "owner": "AWS",
            "version": "1",
            "provider": "AWS CodeBuild"
          },
          "outputArtifacts": [
            {
              "name": "artifact1"
            },
            {
              "name": "artifact2"
            }
          ],
          "configuration": {
            "ProjectName": "my-build-project-name",
            "PrimarySource": "source1"
          },
          "runOrder": 1
        }
      ]
    }
  ],
  "artifactStore": {
    "type": "S3",
    "location": "AWS-CodePipeline-internal-bucket-name"
  },
  "name": "my-pipeline-name",
  "version": 1
 }
}
```

 Dans ce fichier JSON : 
+ L'une de vos sources d'entrée doit être désignée comme `PrimarySource`. Cette source est le répertoire dans lequel CodeBuild recherche et exécute votre fichier buildspec. Le mot clé `PrimarySource` est utilisé pour spécifier la source principale dans la `configuration` section du CodeBuild stage du fichier JSON. 
+ Chaque source d'entrée est installée dans son propre répertoire. Ce répertoire est stocké dans la variable d'environnement intégrée `$CODEBUILD_SRC_DIR` pour la source principale et `$CODEBUILD_SRC_DIR_yourInputArtifactName` pour toutes les autres sources. Pour le pipeline de cet exemple, les deux répertoires des sources d'entrée sont `$CODEBUILD_SRC_DIR` et `$CODEBUILD_SRC_DIR_source2`. Pour de plus amples informations, veuillez consulter [Variables d'environnement dans les environnements de génération](build-env-ref-env-vars.md). 
+ Les noms des artefacts de sortie spécifiés dans le fichier JSON du pipeline doivent correspondre aux noms des artefacts secondaires définis dans votre fichier buildspec. Ce pipeline utilise le fichier buildspec suivant. Pour de plus amples informations, veuillez consulter [Syntaxe d'un fichier buildspec](build-spec-ref.md#build-spec-ref-syntax). 

  ```
  version: 0.2
  
  phases:
    build:
      commands:
        - touch source1_file
        - cd $CODEBUILD_SRC_DIR_source2
        - touch source2_file
  
  artifacts:
    files:
      - '**/*'
    secondary-artifacts:
      artifact1:
        base-directory: $CODEBUILD_SRC_DIR
        files:
          - source1_file
      artifact2:
        base-directory: $CODEBUILD_SRC_DIR_source2
        files:
          - source2_file
  ```

 Une fois que vous avez créé le fichier JSON, vous pouvez créer votre pipeline. Utilisez le AWS CLI pour exécuter la commande **create-pipeline** et transmettre le fichier au `--cli-input-json` paramètre. Pour plus d'informations, consultez la section [Créer un pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) dans le *guide de AWS CodePipeline l'utilisateur*. 

# AWS Config échantillon avec CodeBuild
<a name="how-to-integrate-config"></a>

AWS Config fournit un inventaire de vos AWS ressources et un historique des modifications de configuration apportées à ces ressources. AWS Config prend désormais en charge en AWS CodeBuild tant que AWS ressource, ce qui signifie que le service peut suivre vos CodeBuild projets. Pour plus d'informations AWS Config, voir [Qu'est-ce que c'est AWS Config ?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) dans le *Guide AWS Config du développeur*.

Vous pouvez consulter les informations suivantes concernant les CodeBuild ressources sur la page **Inventaire des ressources** de la AWS Config console :
+ Chronologie de vos modifications CodeBuild de configuration.
+ Détails de configuration pour chaque CodeBuild projet.
+ Relations avec d'autres AWS ressources.
+ Liste des modifications apportées à vos CodeBuild projets.

**Topics**
+ [À utiliser CodeBuild avec AWS Config](#how-to-integrate-config-run)
+ [Étape 3 : Afficher AWS CodeBuild les données dans la AWS Config console](#viewing-config-details)

## À utiliser CodeBuild avec AWS Config
<a name="how-to-integrate-config-run"></a>

Les procédures décrites dans cette rubrique vous montrent comment configurer AWS Config et rechercher CodeBuild des projets.

**Topics**
+ [Conditions préalables](#how-to-create-a-build-project)
+ [Étape 1 : Configuration AWS Config](#setup-config)
+ [Étape 2 : Rechercher AWS CodeBuild des projets](#lookup-projects)

### Conditions préalables
<a name="how-to-create-a-build-project"></a>

Créez votre AWS CodeBuild projet. Pour obtenir des instructions, veuillez consulter [Création d'un projet de génération](create-project.md).

### Étape 1 : Configuration AWS Config
<a name="setup-config"></a>
+ [Configuration de AWS Config (console)](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html)
+ [Configuration de AWS Config (AWS CLI)](https://docs.aws.amazon.com/config/latest/developerguide/gs-cli.html)

**Note**  
Une fois la configuration terminée, l'affichage des AWS CodeBuild projets dans la AWS Config console peut prendre jusqu'à 10 minutes.

### Étape 2 : Rechercher AWS CodeBuild des projets
<a name="lookup-projects"></a>

1. Connectez-vous à la console de AWS gestion et ouvrez la AWS Config console à l'adresse [https://console.aws.amazon.com/config](https://console.aws.amazon.com/config). 

1. Sur la page **Inventaire des ressources**, sélectionnez **AWS CodeBuild Projet** sous **Type de ressource**. Faites défiler la page vers le bas et cochez la case **CodeBuilddu projet**.

1. Choisissez **Recherche**.

1. Une fois la liste des CodeBuild projets ajoutée, cliquez sur le lien du nom du CodeBuild projet dans la colonne **Config timeline**.

## Étape 3 : Afficher AWS CodeBuild les données dans la AWS Config console
<a name="viewing-config-details"></a>

Lorsque vous recherchez des ressources sur la page **Inventaire des ressources**, vous pouvez choisir la AWS Config chronologie pour afficher les détails de votre CodeBuild projet. La page des détails d'une ressource fournit des informations sur la configuration, les relations et le nombre de modifications apportées à cette ressource. 

Les blocs situés en haut de la page constituent la chronologie. La chronologie affiche la date et l'heure de l'enregistrement.

Pour plus d'informations, consultez la section [Affichage des détails de configuration dans la AWS Config console](https://docs.aws.amazon.com/config/latest/developerguide/view-manage-resource-console.html) dans le *Guide du AWS Config développeur*.

# Créer un exemple de notifications pour CodeBuild
<a name="sample-build-notifications"></a>

Amazon CloudWatch Events dispose d'un support intégré pour AWS CodeBuild. CloudWatch Les événements sont un flux d'événements système décrivant les modifications apportées à vos AWS ressources. Avec CloudWatch Events, vous rédigez des règles déclaratives pour associer les événements intéressants aux actions automatisées à entreprendre. Cet exemple utilise Amazon CloudWatch Events et Amazon Simple Notification Service (Amazon SNS) pour envoyer des notifications de build aux abonnés chaque fois que les builds réussissent, échouent, passent d'une phase de construction à une autre, ou toute combinaison de ces événements.

**Important**  
L'exécution de cet échantillon peut 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 CloudWatch et Amazon SNS. Pour plus d'informations, consultez les [CodeBuild sections Tarification](https://aws.amazon.com/codebuild/pricing), [ CloudWatchTarification Amazon](https://aws.amazon.com/cloudwatch/pricing) et Tarification [Amazon SNS.](https://aws.amazon.com/sns/pricing)

**Topics**
+ [Exécutez l'exemple de notifications de build](#sample-build-notifications-running)
+ [Référence du format d'entrée des notifications de génération](sample-build-notifications-ref.md)

## Exécutez l'exemple de notifications de build
<a name="sample-build-notifications-running"></a>

Utilisez la procédure suivante pour exécuter l'exemple de notifications de génération.

**Pour exécuter cet exemple**

1. Si vous avez déjà configuré une rubrique et que vous êtes abonné sur Amazon SNS et que vous souhaitez utiliser pour cet exemple, passez à l'étape 4. Sinon, si vous utilisez un utilisateur IAM au lieu d'un compte AWS root ou un utilisateur administrateur pour travailler avec Amazon SNS, ajoutez la déclaration suivante (*\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1*entre *\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1* et) à l'utilisateur (ou au groupe IAM auquel l'utilisateur est associé). L'utilisation d'un compte AWS root n'est pas recommandée. Cette déclaration permet de consulter, de créer, de s'abonner et de tester l'envoi de notifications à des rubriques sur Amazon SNS. Des ellipses (`...`) sont utilisées par souci de concision et pour vous aider à déterminer l'endroit où ajouter l'instruction. Ne supprimez aucune instruction, et n'entrez pas ces ellipses dans la stratégie existante.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:CreateTopic",
                   "sns:GetTopicAttributes",
                   "sns:List*",
                   "sns:Publish",
                   "sns:SetTopicAttributes",
                   "sns:Subscribe"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**Note**  
L'entité IAM qui modifie cette politique doit être autorisée dans IAM à modifier les politiques.  
Pour plus d'informations, consultez la section [Modification des politiques gérées par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) ou la section « Pour modifier ou supprimer une politique intégrée pour un groupe, un utilisateur ou un rôle » dans [Utilisation des politiques intégrées (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) du guide de l'utilisateur *IAM*.

1. Créez ou identifiez un sujet dans Amazon SNS. AWS CodeBuild utilise CloudWatch Events pour envoyer des notifications de build à cette rubrique via Amazon SNS. 

   Pour créer une rubrique:

   1. [Ouvrez la console Amazon SNS à l'adresse /sns. https://console.aws.amazon.com](https://console.aws.amazon.com/sns)

   1. Choisissez **Créer une rubrique**. 

   1. Dans **Create new topic (Créer une rubrique)**, pour **Topic name (Nom de rubrique)**, saisissez un nom de rubrique (par exemple, **CodeBuildDemoTopic**). (Si vous choisissez un autre nom, remplacez-le dans l'ensemble de cet exemple.) 

   1. Choisissez **Créer une rubrique**.

   1. Sur la CodeBuildDemoTopic page **Détails du sujet :**, copiez la valeur **ARN du sujet**. Vous avez besoin de cette valeur pour l’étape suivante. 

        
![\[La valeur ARN du sujet.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/topic-arn.png)

      

   Pour plus d'informations, consultez la section [Créer une rubrique](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) dans le manuel *Amazon SNS Developer Guide*.

1. Abonnez un ou plusieurs destinataires à la rubrique pour recevoir des notifications par e-mail. 

   Pour abonner un destinataire à une rubrique :

   1. La console Amazon SNS étant ouverte depuis l'étape précédente, dans le volet de navigation, choisissez **Subscriptions**, puis **Create** subscription.

   1. Dans la boîte de dialogue **Create subscription (Créer un abonnement**, pour **Topic ARN (ARN de la rubrique)**, collez l'ARN de la rubrique que vous avez copié à l'étape précédente.

   1. Pour **Protocole**, choisissez **E-mail**.

   1. Indiquez l'adresse e-mail complète du destinataire dans **Endpoint (Point de terminaison)**. 

        
![\[Configuration de l'abonnement.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/create-subscription.png)

      

   1. Choisissez **Create Subscription** (Créer un abonnement).

   1. Amazon SNS envoie un e-mail de confirmation d'abonnement au destinataire. Pour commencer à recevoir des notifications par e-mail, le destinataire doit choisir le lien **Confirmer l'abonnement** dans l'e-mail de confirmation d'abonnement. Une fois que le destinataire a cliqué sur le lien, s'il est correctement inscrit, Amazon SNS affiche un message de confirmation dans le navigateur Web du destinataire.

   Pour plus d'informations, consultez la section [S'abonner à une rubrique](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html) du manuel *Amazon SNS Developer Guide*.

1. Si vous utilisez un utilisateur plutôt qu'un compte AWS root ou un utilisateur administrateur pour travailler avec CloudWatch Events, ajoutez l'instruction suivante (entre *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* et*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) à l'utilisateur (ou au groupe IAM auquel l'utilisateur est associé). L'utilisation d'un compte AWS root n'est pas recommandée. Cette déclaration est utilisée pour permettre à l'utilisateur de travailler avec CloudWatch Events. Des ellipses (`...`) sont utilisées par souci de concision et pour vous aider à déterminer l'endroit où ajouter l'instruction. Ne supprimez aucune instruction, et n'entrez pas ces ellipses dans la stratégie existante.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "events:*",
                   "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::*:role/Service*"
           }
       ]
   }
   ```

------
**Note**  
L'entité IAM qui modifie cette politique doit être autorisée dans IAM à modifier les politiques.  
Pour plus d'informations, consultez la section [Modification des politiques gérées par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) ou la section « Pour modifier ou supprimer une politique intégrée pour un groupe, un utilisateur ou un rôle » dans [Utilisation des politiques intégrées (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) du guide de l'utilisateur *IAM*.

1. Créez une règle dans CloudWatch Events. Pour ce faire, ouvrez la CloudWatch console, dans [https://console.aws.amazon.com/cloudwatch.](https://console.aws.amazon.com/cloudwatch)

1. Dans le volet de navigation, sous **Events**, choisissez **Rules**, puis **Create rule**. 

1. Sur la page **Step 1: Create rule page (Étape 1 : Créer une page de règle)**, les options **Event Pattern (Modèle d'événement)** et **Build event pattern to match events by service (Créer un modèle d'événement pour correspondre aux événements en fonction du service)** doivent toujours être activées. 

1. Pour **Service Name (Nom du service)**, choisissez **CodeBuild**. Pour **Event Type (Type d'événement)**, vous devez toujours choisir **All Events (Tous les événements)**.

1. Le code suivant doit être affiché dans l'**aperçu du modèle d'événement** :

   ```
   {
     "source": [ 
       "aws.codebuild"
     ]
   }
   ```

1. Choisissez **Edit (Modifier)** pour remplacer le code présent dans **Event Pattern Preview (Aperçu du modèle d'événement)** par l'un des deux modèles de règle suivants.

   Ce premier modèle de règle déclenche un événement chaque fois qu'une génération commence ou se termine, pour les projets de génération spécifiés dans AWS CodeBuild.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build State Change"
     ],
     "detail": {
       "build-status": [
         "IN_PROGRESS",
         "SUCCEEDED", 
         "FAILED",
         "STOPPED" 
       ],
       "project-name": [
         "my-demo-project-1",
         "my-demo-project-2"
       ]
     }  
   }
   ```

   Dans la règle précédente, effectuez les modifications de code suivantes en fonction de vos besoins.
   + Pour déclencher un événement chaque fois qu'une génération commence ou se termine, laissez toutes les valeurs indiquées dans la zone `build-status` ou supprimez complètement la zone `build-status`. 
   + Pour déclencher un événement uniquement lorsqu'une génération est terminée, supprimez `IN_PROGRESS` dans la zone `build-status`. 
   + Pour déclencher un événement uniquement lorsqu'une génération commence, supprimez toutes les valeurs sauf `IN_PROGRESS` dans la zone `build-status`.
   + Pour déclencher des événements inhérents à tous les projets de génération, supprimez complètement la zone `project-name`.
   + Pour déclencher des événements uniquement pour les projets de génération individuels, spécifiez le nom de chaque projet de génération dans la zone `project-name`. 

   Ce second modèle de règle déclenche un événement chaque fois qu'une génération passe d'une phase à une autre pour les projets de génération spécifiés dans AWS CodeBuild.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build Phase Change" 
     ],
     "detail": {
       "completed-phase": [
         "SUBMITTED",
         "PROVISIONING",
         "DOWNLOAD_SOURCE",
         "INSTALL",
         "PRE_BUILD",
         "BUILD",
         "POST_BUILD",
         "UPLOAD_ARTIFACTS",
         "FINALIZING"
       ],
       "completed-phase-status": [
         "TIMED_OUT",
         "STOPPED",
         "FAILED", 
         "SUCCEEDED",
         "FAULT",
         "CLIENT_ERROR"
       ],
       "project-name": [
         "my-demo-project-1",
         "my-demo-project-2"
       ]
     }  
   }
   ```

   Dans la règle précédente, effectuez les modifications de code suivantes en fonction de vos besoins.
   + Pour déclencher un événement à chaque changement de phase de génération (ce qui peut générer l'envoi de jusqu'à 9 notifications par génération), laissez toutes les valeurs indiquées dans la zone `completed-phase` ou supprimez complètement le tableau `completed-phase`.
   + Pour déclencher des événements uniquement lors des changements de phase de génération individuelle, supprimez le nom de chaque phase de génération pour laquelle vous ne souhaitez pas déclencher un événement dans la zone `completed-phase`.
   + Pour déclencher un événement à chaque changement de statut de phase de génération, laissez toutes les valeurs indiquées dans la zone `completed-phase-status` ou supprimez complètement la zone `completed-phase-status`.
   + Pour déclencher des événements uniquement lors des changements de statut de phase de génération individuelle, supprimez le nom de chaque statut de phase de génération pour lequel vous ne souhaitez pas déclencher un événement dans la zone `completed-phase-status`.
   + Pour déclencher des événements pour tous les projets de génération, supprimez la zone `project-name`.
   + Pour déclencher des événements pour les projets de génération individuels, spécifiez le nom de chaque projet de génération dans la zone `project-name`. 

   Pour plus d'informations sur les modèles d'événements, consultez la section [Modèles d'événements](https://docs.aws.amazon.com/eventbridge/latest/userguide/filtering-examples-structure.html) dans le guide de EventBridge l'utilisateur Amazon.

   Pour plus d'informations sur le filtrage à l'aide de modèles d'événements, consultez la section [Filtrage basé sur le contenu avec des modèles d'événements](https://docs.aws.amazon.com/eventbridge/latest/userguide/content-filtering-with-event-patterns.html) dans le guide de EventBridge l'utilisateur Amazon.
**Note**  
Si vous souhaitez déclencher des événements à la fois pour les changements d'état de génération et les changements de phase de génération, vous devez créer deux règles distinctes, une pour les changements d'état de génération et une autre pour les changements de phase de génération. Si vous essayez de combiner les deux règles en une seule, la règle combinée peut entraîner des résultats inattendus ou un arrêt de la procédure.

   Une fois que vous avez terminé le remplacement du code, choisissez **Save**.

1. Pour **Targets** (Cibles), choisissez **Add target** (Ajouter une cible). 

1. Dans la liste des cibles, sélectionnez **Rubrique SNS**. 

1. Pour **Topic**, choisissez la rubrique que vous avez identifiée ou créée précédemment. 

1. Développez **Configurer l'entrée**, puis choisissez **Transformateur d'entrée**. 

1. Dans la zone **Input Path (Chemin d'entrée)**, tapez l'un des chemins d'entrée ci-après.

   Pour une règle dont l'élément `detail-type` a pour valeur `CodeBuild Build State Change`, tapez ce qui suit.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","build-status":"$.detail.build-status"}
   ```

   Pour une règle dont l'élément `detail-type` a pour valeur `CodeBuild Build Phase Change`, tapez ce qui suit.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","completed-phase":"$.detail.completed-phase","completed-phase-status":"$.detail.completed-phase-status"}
   ```

   Pour obtenir d'autres types d'informations, consultez [Référence du format d'entrée des notifications de génération](sample-build-notifications-ref.md).

1. Dans la zone **Input Template (Modèle d'entrée)**, tapez l'un des modèles d'entrée ci-après.

   Pour une règle dont l'élément `detail-type` a pour valeur `CodeBuild Build State Change`, tapez ce qui suit.

   ```
   "Build '<build-id>' for build project '<project-name>' has reached the build status of '<build-status>'."
   ```

   Pour une règle dont l'élément `detail-type` a pour valeur `CodeBuild Build Phase Change`, tapez ce qui suit.

   ```
   "Build '<build-id>' for build project '<project-name>' has completed the build phase of '<completed-phase>' with a status of '<completed-phase-status>'."
   ```

1. Choisissez **Configure details** (Configurer les détails).

1. Sur la page **Step 2: Configure rule details (Étape 2 : Configurer les détails de la règle)**, tapez un nom et une description. Pour **State (État)**, la case **Enabled (Activé)** doit rester sélectionnée.

1. Choisissez **Créer une règle**. 

1. Créez des projets de build, exécutez les builds et consultez les informations de build.

1. Confirmez CodeBuild que les notifications de build sont désormais correctement envoyées. Par exemple, vérifiez si les e-mails de notification de build sont à présent dans votre boîte de réception.

Pour modifier le comportement d'une règle, dans la CloudWatch console, choisissez la règle que vous souhaitez modifier, sélectionnez **Actions**, puis sélectionnez **Modifier**. Modifiez la règle, choisissez **Configure details (Configurer les détails)**, puis choisissez **Mettre à jour la règle (Update rule)**.

Pour arrêter d'utiliser une règle pour envoyer des notifications de build, dans la CloudWatch console, choisissez la règle que vous souhaitez arrêter d'utiliser, choisissez **Actions**, puis choisissez **Désactiver**.

Pour supprimer complètement une règle, dans la CloudWatch console, choisissez la règle que vous souhaitez supprimer, choisissez **Actions**, puis choisissez **Supprimer**.

# Référence du format d'entrée des notifications de génération
<a name="sample-build-notifications-ref"></a>

CloudWatch fournit des notifications au format JSON.

Les notifications de changement d'état de génération utilisent le format suivant :

```
{
  "version": "0",
  "id": "c030038d-8c4d-6141-9545-00ff7b7153EX",
  "detail-type": "CodeBuild Build State Change",
  "source": "aws.codebuild",
  "account": "123456789012",
  "time": "2017-09-01T16:14:28Z",
  "region": "us-west-2",
  "resources":[
    "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX"
  ],
  "detail":{
    "build-status": "SUCCEEDED",
    "project-name": "my-sample-project",
    "build-id": "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX",
    "additional-information": {
      "artifact": {
        "md5sum": "da9c44c8a9a3cd4b443126e823168fEX",
        "sha256sum": "6ccc2ae1df9d155ba83c597051611c42d60e09c6329dcb14a312cecc0a8e39EX",
        "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/my-output-artifact.zip"
      },
      "environment": {
        "image": "aws/codebuild/standard:5.0",
        "privileged-mode": false,
        "compute-type": "BUILD_GENERAL1_SMALL",
        "type": "LINUX_CONTAINER",
        "environment-variables": []
      },
      "timeout-in-minutes": 60,
      "build-complete": true,
      "initiator": "MyCodeBuildDemoUser",
      "build-start-time": "Sep 1, 2017 4:12:29 PM",
      "source": {
        "location": "codebuild-123456789012-input-bucket/my-input-artifact.zip",
        "type": "S3"
      },
      "logs": {
        "group-name": "/aws/codebuild/my-sample-project",
        "stream-name": "8745a7a9-c340-456a-9166-edf953571bEX",
        "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logEvent:group=/aws/codebuild/my-sample-project;stream=8745a7a9-c340-456a-9166-edf953571bEX"
      },
      "phases": [
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:12:29 PM",
          "duration-in-seconds": 0,
          "phase-type": "SUBMITTED",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:13:05 PM",
          "duration-in-seconds": 36,
          "phase-type": "PROVISIONING",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:05 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 4,
          "phase-type": "DOWNLOAD_SOURCE",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "INSTALL",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "PRE_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 70,
          "phase-type": "BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "POST_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "UPLOAD_ARTIFACTS",
          "phase-status": "SUCCEEDED"
        },
         {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:26 PM",
          "duration-in-seconds": 4,
          "phase-type": "FINALIZING",
          "phase-status": "SUCCEEDED"
        },
        {
          "start-time": "Sep 1, 2017 4:14:26 PM",
          "phase-type": "COMPLETED"
        }
      ]
    },
    "current-phase": "COMPLETED",
    "current-phase-context": "[]",
    "version": "1"
  }
}
```

Les notifications de changement de phase de génération utilisent le format suivant :

```
{
  "version": "0",
  "id": "43ddc2bd-af76-9ca5-2dc7-b695e15adeEX",
  "detail-type": "CodeBuild Build Phase Change",
  "source": "aws.codebuild",
  "account": "123456789012",
  "time": "2017-09-01T16:14:21Z",
  "region": "us-west-2",
  "resources":[
    "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX"
  ],
  "detail":{
    "completed-phase": "COMPLETED",
    "project-name": "my-sample-project",
    "build-id": "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX",
    "completed-phase-context": "[]",
    "additional-information": {
      "artifact": {
        "md5sum": "da9c44c8a9a3cd4b443126e823168fEX",
        "sha256sum": "6ccc2ae1df9d155ba83c597051611c42d60e09c6329dcb14a312cecc0a8e39EX",
        "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/my-output-artifact.zip"
      },
      "environment": {
        "image": "aws/codebuild/standard:5.0",
        "privileged-mode": false,
        "compute-type": "BUILD_GENERAL1_SMALL",
        "type": "LINUX_CONTAINER",
        "environment-variables": []
      },
      "timeout-in-minutes": 60,
      "build-complete": true,
      "initiator": "MyCodeBuildDemoUser",
      "build-start-time": "Sep 1, 2017 4:12:29 PM",
      "source": {
        "location": "codebuild-123456789012-input-bucket/my-input-artifact.zip",
        "type": "S3"
      },
      "logs": {
        "group-name": "/aws/codebuild/my-sample-project",
        "stream-name": "8745a7a9-c340-456a-9166-edf953571bEX",
        "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logEvent:group=/aws/codebuild/my-sample-project;stream=8745a7a9-c340-456a-9166-edf953571bEX"
      },
      "phases": [
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:12:29 PM",
          "duration-in-seconds": 0,
          "phase-type": "SUBMITTED",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:13:05 PM",
          "duration-in-seconds": 36,
          "phase-type": "PROVISIONING",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:05 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 4,
          "phase-type": "DOWNLOAD_SOURCE",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "INSTALL",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "PRE_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 70,
          "phase-type": "BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "POST_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "UPLOAD_ARTIFACTS",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:26 PM",
          "duration-in-seconds": 4,
          "phase-type": "FINALIZING",
          "phase-status": "SUCCEEDED"
        },
        {
          "start-time": "Sep 1, 2017 4:14:26 PM",
          "phase-type": "COMPLETED"
        }
      ]  
    },
    "completed-phase-status": "SUCCEEDED",
    "completed-phase-duration-seconds": 4,
    "version": "1",
    "completed-phase-start": "Sep 1, 2017 4:14:21 PM",
    "completed-phase-end": "Sep 1, 2017 4:14:26 PM"
  }
}
```

# Créez un échantillon de badges avec CodeBuild
<a name="sample-build-badges"></a>

AWS CodeBuild prend désormais en charge l'utilisation de badges de construction, qui fournissent une image intégrée et générée dynamiquement (*badge*) qui affiche l'état de la dernière version d'un projet. Cette image est accessible via une URL accessible au public générée pour votre CodeBuild projet. Cela permet à n'importe qui de consulter le statut d'un CodeBuild projet. Les badges de génération ne contiennent pas d'informations de sécurité. Ils n'ont donc pas besoin d'une authentification.

**Topics**
+ [Créez un projet de construction avec des badges de construction](#sample-build-badges-request-running)
+ [Badges Access AWS CodeBuild Build](access-badges.md)
+ [Publier CodeBuild des badges de construction](publish-badges.md)
+ [CodeBuild statuts des badges](badge-statuses.md)

## Créez un projet de construction avec des badges de construction
<a name="sample-build-badges-request-running"></a>

Utilisez l'une des procédures suivantes pour créer un projet de génération avec les badges de construction activés. Vous pouvez utiliser AWS CLI ou le AWS Management Console.

**Pour créer un projet de construction avec les badges de construction activés (AWS CLI)**
+ Pour en savoir plus sur la création d'un projet de génération, consultez [Création d'un projet de génération (AWS CLI)](create-project.md#create-project-cli). Pour inclure des badges de construction dans votre AWS CodeBuild projet, vous devez les spécifier *badgeEnabled* avec une valeur de`true`.

**Pour créer un projet de construction avec les badges de construction activés (console)**

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Si une page CodeBuild d'informations s'affiche, choisissez **Créer un projet de construction**. Sinon, dans le volet de navigation, développez **Build****, choisissez Build projects**, puis **Create build project**. 

1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération. Les noms des projets de construction doivent être uniques pour chaque AWS compte. Vous pouvez également inclure une description facultative du projet de construction pour aider les autres utilisateurs à comprendre à quoi sert ce projet.

1. Dans **Source**, pour **Fournisseur de source**, choisissez le type de fournisseur de code source, puis effectuez l'une des actions suivantes :
**Note**  
 CodeBuild ne prend pas en charge les badges de génération auprès du fournisseur de source Amazon S3. Dans la AWS CodePipeline mesure où Amazon S3 est utilisé pour les transferts d'artefacts, les badges de construction ne sont pas pris en charge pour les projets de génération faisant partie d'un pipeline créé dans CodePipeline. 
   + Si vous avez choisi **CodeCommit**, pour **Référentiel**, sélectionnez le nom du référentiel. Sélectionnez **Enable build badge (Activer le badge de génération)** pour rendre le statut de génération de votre projet visible et intégrable.
   + Si vous le souhaitez **GitHub**, suivez les instructions pour vous connecter (ou vous reconnecter) à GitHub. Sur la page GitHub **Autoriser l'application**, pour **Accès à l'organisation**, sélectionnez **Demander l'accès** à côté de chaque référentiel AWS CodeBuild auquel vous souhaitez pouvoir accéder. Après avoir choisi **Authorize application**, de retour dans la console AWS CodeBuild , pour **Repository**, choisissez le nom du référentiel qui contient le code source. Sélectionnez **Enable build badge (Activer le badge de génération)** pour rendre le statut de génération de votre projet visible et intégrable.
   + Si vous avez choisi **Bitbucket**, suivez les instructions pour vous connecter (ou vous reconnecter) à Bitbucket. Dans la page Bitbucket **Confirm access to your account**, pour **Organization access**, choisissez **Grant access**. Après avoir choisi **Autoriser l'accès**, de retour dans la AWS CodeBuild console, pour **Repository**, choisissez le nom du référentiel qui contient le code source. Sélectionnez **Enable build badge (Activer le badge de génération)** pour rendre le statut de génération de votre projet visible et intégrable.
**Important**  
Si vous mettez à jour la source de votre projet, cela peut affecter la précision des badges de génération du projet.

1. Dans **Environment (Environnement)** :

   Pour **Image d'environnement**, effectuez l'une des actions suivantes :
   + Pour utiliser une image Docker gérée par AWS CodeBuild, choisissez **Image gérée**, puis sélectionnez **Système d'exploitation**, **Runtime (s)**, **Image** et **Version de l'image**. Effectuez votre sélection pour **Type d'environnement** si cette option est disponible.
   + Pour utiliser une autre image Docker, choisissez **Image personnalisée**. Pour le **type d'environnement**, choisissez **ARM**, **Linux****, Linux GPU** ou **Windows**. Si vous choisissez **Other registry (Autre registre)**, pour **External registry URL (URL du registre externe)**, entrez le nom et la balise de l'image Docker dans Docker Hub au format `docker repository/docker image name`. Si vous choisissez **Amazon ECR**, utilisez le **référentiel Amazon ECR** et l'image **Amazon ECR pour choisir l'image** Docker dans votre compte. AWS 
   + Pour utiliser une image Docker privée, choisissez **Image personnalisée**. Pour le **type d'environnement**, choisissez **ARM**, **Linux****, Linux GPU** ou **Windows**. Pour **Image registry (Registre de l'image)**, choisissez **Other registry (Autre registre)** et entrez l'ARN des informations d'identification de votre image Docker privée. Les informations d'identification doivent être créées par Secrets Manager. Pour plus d'informations, consultez [Présentation de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) dans le *Guide de l'utilisateur AWS Secrets Manager *.

1. Dans **Rôle du service**, sélectionnez l'une des options suivantes :
   + Si vous n'avez pas de rôle CodeBuild de service, choisissez **Nouveau rôle de service**. Dans **Role name**, entrez un nom pour le nouveau rôle.
   + Si vous avez un rôle CodeBuild de service, choisissez **Rôle de service existant**. Dans **Role ARN**, choisissez le rôle de service.
**Note**  
Lorsque vous utilisez la console pour créer ou mettre à jour un projet de génération, vous pouvez créer un rôle de CodeBuild service en même temps. Par défaut, le rôle fonctionne avec ce projet de génération uniquement. Si vous utilisez la console pour associer ce rôle de service à un autre projet de génération, le rôle est mis à jour pour fonctionner avec l'autre projet de génération. Un rôle de service peut fonctionner avec 10 projets de génération maximum.

1. Dans **Buildspec, effectuez** l'une des opérations suivantes :
   + Choisissez **Utiliser un fichier buildspec pour utiliser le fichier** buildspec.yml dans le répertoire racine du code source.
   + Choisissez **Insérer des commandes** de génération pour utiliser la console pour insérer des commandes de génération.

   Pour de plus amples informations, veuillez consulter [Référence des spécifications de génération](build-spec-ref.md).

1. Dans **Artefacts**, pour **Type**, effectuez l'une des actions suivantes :
   + Si vous ne souhaitez pas créer d'artefacts de sortie de génération, choisissez **Aucun artefact**.
   + Pour stocker le résultat du build dans un compartiment S3, choisissez **Amazon S3**, puis procédez comme suit :
     + Si vous souhaitez utiliser votre nom de projet pour le dossier ou le fichier ZIP de sortie de génération, ne renseignez pas le champ **Nom**. Sinon, entrez le nom. Par défaut, le nom d'un artefact est le nom du projet. Si vous souhaitez utiliser un autre nom, entrez-le dans la zone Nom des artefacts. Si vous souhaitez générer un fichier ZIP, incluez l'extension zip.
     + Pour **Nom du compartiment**, choisissez le nom du compartiment de sortie.
     + Si vous avez sélectionné **Insérer des commandes de génération** précédemment dans cette procédure, pour **Fichiers de sortie**, saisissez les emplacements des fichiers de la génération que vous souhaitez placer dans le dossier ou le fichier ZIP de sortie de génération. Pour plusieurs emplacements, séparez ceux-ci avec une virgule (par exemple, `appspec.yml, target/my-app.jar`). Pour de plus amples informations, consultez la description de `files` dans [Syntaxe d'un fichier buildspec](build-spec-ref.md#build-spec-ref-syntax).

1. Développez **Additional configuration (Configuration supplémentaire)** et choisissez les options appropriées.

1. Choisissez **Créer un projet de génération**. Sur la page **Révision**, choisissez **Démarrer la génération** pour exécuter la génération.

# Badges Access AWS CodeBuild Build
<a name="access-badges"></a>

Vous pouvez utiliser AWS CodeBuild la console ou le AWS CLI pour accéder aux badges de build.
+ Dans la CodeBuild console, dans la liste des projets de construction, dans la colonne **Nom**, choisissez le lien correspondant au projet de construction. Sur la *project-name* page **Créer un projet :**, dans **Configuration**, choisissez **Copier l'URL du badge**. Pour de plus amples informations, veuillez consulter [Affichage des détails d'un projet de génération (console)](view-project-details.md#view-project-details-console).
+ Dans le AWS CLI, exécutez la `batch-get-projects` commande. L'URL de badge de génération est incluse dans la section des détails de l'environnement de projet de la sortie. Pour de plus amples informations, veuillez consulter [Affichage des détails d'un projet de génération (AWS CLI)](view-project-details.md#view-project-details-cli).

L'URL de demande de badge de construction est générée avec une branche par défaut commune, mais vous pouvez spécifier n'importe quelle branche de votre référentiel source que vous avez utilisée pour exécuter une compilation. Par exemple :

```
https://codebuild.us-east-1.amazon.com/badges?uuid=...&branch=<branch>
```

Vous pouvez également spécifier une balise à partir de votre référentiel source en remplaçant le `branch` paramètre par le `tag` paramètre figurant dans l'URL du badge. Par exemple : 

```
https://codebuild.us-east-1.amazon.com/badges?uuid=...&tag=<tag>
```

# Publier CodeBuild des badges de construction
<a name="publish-badges"></a>

Vous pouvez afficher l'état de la dernière version dans un fichier Markdown en utilisant l'URL de votre badge de build dans une image Markdown. Cela est utile pour afficher l'état de la version la plus récente dans le fichier readme.md de votre référentiel source (par exemple, GitHub ou). CodeCommit Par exemple :

```
![](<build badge URL>)
```

# CodeBuild statuts des badges
<a name="badge-statuses"></a>

Le badge de CodeBuild construction peut avoir l'un des statuts suivants.
+ **PASSING** : La dernière génération sur la branche indiquée a abouti. 
+ **FAILING** : La dernière génération sur la branche indiquée a expiré, a échoué, comprend des erreurs ou a été arrêtée.
+ **IN\$1PROGRESS** : La dernière génération sur la branche indiquée est en cours.
+ **UNKNOWN** : Le projet n'a pas encore exécuté une génération pour la branche indiquée ou n'a exécuté aucune génération. En outre, la fonction de badges de génération a peut-être été désactivée.

# « Rapport de test utilisant l'exemple AWS CLI »
<a name="sample-test-report-cli"></a>

Les tests que vous spécifiez dans votre fichier buildspec sont exécutés pendant votre génération. Cet exemple vous montre comment utiliser le AWS CLI pour intégrer des tests dans des builds in CodeBuild. Vous pouvez l'utiliser JUnit pour créer des tests unitaires, ou vous pouvez utiliser un autre outil pour créer des tests de configuration. Vous pouvez ensuite évaluer les résultats des tests pour résoudre les problèmes ou optimiser votre application. 

Vous pouvez utiliser l' CodeBuild API ou la AWS CodeBuild console pour accéder aux résultats des tests. Cet exemple montre comment configurer votre rapport afin que ses résultats de test soient exportés vers un compartiment S3. 

**Topics**
+ [Exécutez l'exemple de rapport de test](#sample-test-report-cli-run)

## Exécutez l'exemple de rapport de test
<a name="sample-test-report-cli-run"></a>

Procédez comme suit pour exécuter l'exemple de rapport de test.

**Topics**
+ [Conditions préalables](#sample-test-report-cli-prerequisites)
+ [Étape 1 : créer un groupe de rapports](#sample-test-report-cli-create-report)
+ [Étape 2 : Configuration d'un projet avec un groupe de rapports](#sample-test-report-cli-create-project-with-report)
+ [Étape 3 : Exécuter et afficher les résultats d'un rapport](#sample-test-report-cli-run-and-view-report-results)

### Conditions préalables
<a name="sample-test-report-cli-prerequisites"></a>
+ Créez vos cas de test. Cet échantillon est rédigé en supposant que vous avez des cas de test à inclure dans votre rapport de test. Vous spécifiez l'emplacement de vos fichiers de test dans le fichier buildspec. 

  Les formats de fichier de rapport de test suivants sont pris en charge :
  + Concombre JSON (.json)
  + JUnit XML (.xml)
  + NUnit XML (.xml)
  + NUnit3 XML (.xml)
  + TestNG XML (.xml)
  + Visual Studio TRX (.trx)
  + Visual Studio TRX XML (.xml)

  Créez vos scénarios de test avec n'importe quel framework de test capable de créer des fichiers de rapport dans l'un de ces formats (par exemple, le JUnit plugin Surefire, TestNG ou Cucumber).
+ Créez un compartiment S3 et notez son nom. Pour plus d'informations, consultez [Comment créer un compartiment S3 ?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html) dans le *guide de l'utilisateur Amazon S3*. 
+ Créez un rôle IAM et notez son ARN. Vous avez besoin de l'ARN lorsque vous créez votre projet de génération. 
+ Si votre rôle ne dispose pas des autorisations suivantes, ajoutez-les. 

  ```
  {
      "Effect": "Allow",
      "Resource": [
          "*"
      ],
      "Action": [
          "codebuild:CreateReportGroup",
          "codebuild:CreateReport",
          "codebuild:UpdateReport",
          "codebuild:BatchPutTestCases"
      ]
  }
  ```

   Pour de plus amples informations, veuillez consulter [Autorisations pour les opérations de rapports de test](test-permissions.md#test-permissions-related-to-reporting). 

### Étape 1 : créer un groupe de rapports
<a name="sample-test-report-cli-create-report"></a>

1. Créez un fichier nommé `CreateReportGroupInput.json`. 

1. Créez un dossier dans votre compartiment S3 où vos résultats de test sont exportés. 

1. Copiez ce qui suit dans `CreateReportGroupInput.json`. Pour `<bucket-name>`, utilisez le nom du compartiment S3. Pour `<path-to-folder>`, entrez le chemin d'accès au dossier dans votre compartiment S3. 

   ```
   {
     "name": "<report-name>",
     "type": "TEST",
     "exportConfig": {
       "exportConfigType": "S3",
       "s3Destination": {
         "bucket": "<bucket-name>",
         "path": "<path-to-folder>",
         "packaging": "NONE"
       }
     }
   }
   ```

1. Exécutez la commande suivante dans le répertoire qui contient `CreateReportGroupInput.json`.

   ```
   aws codebuild create-report-group --cli-input-json file://CreateReportGroupInput.json
   ```

   Le résultat se présente comme suit. Notez l'ARN pour `reportGroup`. Vous l'utilisez lorsque vous créez un projet qui utilise ce groupe de rapports.

   ```
   {
     "reportGroup": {
       "arn": "arn:aws:codebuild:us-west-2:123456789012:report-group/<report-name>",
       "name": "<report-name>",
       "type": "TEST",
       "exportConfig": {
         "exportConfigType": "S3",
         "s3Destination": {
           "bucket": "<s3-bucket-name>",
           "path": "<folder-path>",
           "packaging": "NONE",
           "encryptionKey": "arn:aws:kms:us-west-2:123456789012:alias/aws/s3"
         }
       },
       "created": 1570837165.885,
       "lastModified": 1570837165.885
     }
   }
   ```

### Étape 2 : Configuration d'un projet avec un groupe de rapports
<a name="sample-test-report-cli-create-project-with-report"></a>

Pour exécuter un rapport, vous devez d'abord CodeBuild créer un projet de génération configuré avec votre groupe de rapports. Les cas de test spécifiés pour votre groupe de rapports sont exécutés lorsque vous exécutez une génération. 

1. Créez un fichier buildspec nommé `buildspec.yml`. 

1. Utilisez le YAML suivant comme modèle pour votre fichier `buildspec.yml`. Assurez-vous d'inclure les commandes qui exécutent vos tests. Dans la section `reports`, spécifiez les fichiers qui contiennent les résultats de vos cas de test. Ces fichiers stockent les résultats des tests auxquels vous pouvez accéder CodeBuild. Ils expirent 30 jours après leur création. Ces fichiers sont différents des fichiers de résultats de cas de test bruts que vous exportez vers un compartiment S3.

   ```
   version: 0.2
       phases:
       install:
           runtime-versions:
               java: openjdk8
       build:
         commands:
           - echo Running tests 
           - <enter commands to run your tests>
           
       reports:
         <report-name-or-arn>: #test file information
         files:
           - '<test-result-files>'
         base-directory: '<optional-base-directory>'
         discard-paths: false #do not remove file paths from test result files
   ```
**Note**  
Au lieu de l'ARN d'un groupe de rapports existant, vous pouvez également spécifier un nom pour un groupe de rapports qui n'a pas été créé. Si vous spécifiez un nom au lieu d'un ARN, CodeBuild crée un groupe de rapports lors de l'exécution d'une compilation. Son nom contient le nom de votre projet et le nom que vous spécifiez dans le fichier buildspec au format suivant : `project-name-report-group-name`. Pour plus d’informations, consultez [Création de rapports de test](report-create.md) et [Attribution des noms des groupes de rapports](test-report-group-naming.md). 

1. Créez un fichier nommé `project.json`. Ce fichier contient l'entrée de la commande **create-project**. 

1. Copiez le JSON suivant dans `project.json`. Pour `source`, entrez le type et l'emplacement du référentiel qui contient vos fichiers source. Pour `serviceRole`, spécifiez l'ARN du rôle que vous utilisez. 

   ```
   {
     "name": "test-report-project",
     "description": "sample-test-report-project",
     "source": {
       "type": "CODECOMMIT|CODEPIPELINE|GITHUB|S3|BITBUCKET|GITHUB_ENTERPRISE|NO_SOURCE",
       "location": "<your-source-url>"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "cache": {
       "type": "NO_CACHE"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "small"
     },
     "serviceRole": "arn:aws:iam::<your-aws-account-id>:role/service-role/<your-role-name>"
   }
   ```

1. Exécutez la commande suivante dans le répertoire qui contient `project.json`. Cela crée un projet nommé `test-project`. 

   ```
   aws codebuild create-project --cli-input-json file://project.json
   ```

### Étape 3 : Exécuter et afficher les résultats d'un rapport
<a name="sample-test-report-cli-run-and-view-report-results"></a>

Dans cette section, vous exécutez une version du projet que vous avez créé précédemment. Au cours du processus de CodeBuild création, crée un rapport contenant les résultats des scénarios de test. Le rapport est contenu dans le groupe de rapports que vous avez spécifié. 

1. Pour démarrer une compilation, exécutez la commande suivante. `test-report-project`est le nom du projet de construction créé ci-dessus. Notez l'ID de génération qui apparaît dans la sortie. 

   ```
   aws codebuild start-build --project-name test-report-project
   ```

1. Exécutez la commande suivante pour obtenir des informations sur votre génération, y compris l'ARN de votre rapport. Pour `<build-id>`, spécifiez votre ID de génération. Notez l'ARN du rapport dans la `reportArns` propriété de la sortie. 

   ```
   aws codebuild batch-get-builds --ids <build-id>
   ```

1. Exécutez la commande suivante pour obtenir des informations sur votre rapport. Pour `<report-arn>`, spécifiez votre ARN de rapport. 

   ```
   aws codebuild batch-get-reports --report-arns <report-arn>
   ```

   Le résultat se présente comme suit. Cet exemple de sortie indique le nombre de tests réussis, échoués, ignorés, entraînés une erreur ou renvoyant un état inconnu.

   ```
   {
     "reports": [
       {
         "status": "FAILED",
         "reportGroupArn": "<report-group-arn>",
         "name": "<report-group-name>",
         "created": 1573324770.154,
         "exportConfig": {
           "exportConfigType": "S3",
           "s3Destination": {
             "bucket": "<amzn-s3-demo-bucket>",
             "path": "<path-to-your-report-results>",
             "packaging": "NONE",
             "encryptionKey": "<encryption-key>"
           }
         },
         "expired": 1575916770.0,
         "truncated": false,
         "executionId": "arn:aws:codebuild:us-west-2:123456789012:build/<name-of-build-project>:2c254862-ddf6-4831-a53f-6839a73829c1",
         "type": "TEST",
         "arn": "<report-arn>",
         "testSummary": {
           "durationInNanoSeconds": 6657770,
           "total": 11,
           "statusCounts": {
             "FAILED": 3,
             "SKIPPED": 7,
             "ERROR": 0,
             "SUCCEEDED": 1,
             "UNKNOWN": 0
           }
         }
       }
     ],
     "reportsNotFound": []
   }
   ```

1. Exécutez la commande suivante pour répertorier les informations sur les cas de test de votre rapport. Pour `<report-arn>`, spécifiez l'ARN de votre rapport. Pour le paramètre facultatif `--filter`, vous pouvez spécifier un résultat d'état (`SUCCEEDED`, `FAILED`, `SKIPPED`, `ERROR` ou `UNKNOWN`). 

   ```
   aws codebuild describe-test-cases \
       --report-arn <report-arn> \
       --filter status=SUCCEEDED|FAILED|SKIPPED|ERROR|UNKNOWN
   ```

    Le résultat se présente comme suit. 

   ```
   {
     "testCases": [
       {
         "status": "FAILED",
         "name": "Test case 1",
         "expired": 1575916770.0,
         "reportArn": "<report-arn>",
         "prefix": "Cucumber tests for agent",
         "message": "A test message",
         "durationInNanoSeconds": 1540540,
         "testRawDataPath": "<path-to-output-report-files>"
       },
       {
         "status": "SUCCEEDED",
         "name": "Test case 2",
         "expired": 1575916770.0,
         "reportArn": "<report-arn>",
         "prefix": "Cucumber tests for agent",
         "message": "A test message",
         "durationInNanoSeconds": 1540540,
         "testRawDataPath": "<path-to-output-report-files>"
       }
     ]
   }
   ```

# Exemples Docker pour CodeBuild
<a name="sample-docker-section"></a>

Cette section décrit des exemples d'intégrations entre Docker et. AWS CodeBuild


| Exemple | Description | 
| --- | --- | 
|  [Docker dans un exemple d'image personnalisé pour CodeBuild](sample-docker-custom-image.md)  |  Cet exemple crée et exécute une image Docker en utilisant une image CodeBuild de construction Docker personnalisée (`docker:dind`dans Docker Hub).   | 
|  [Exemple de serveur de génération d'images Docker pour CodeBuild](sample-docker-server.md)  |  Cet exemple télécharge vos versions Docker vers un serveur de génération d'images géré.   | 
|  [Exemple de compilation Windows Docker pour CodeBuild](sample-windows-docker-custom-image.md)  |  Cet exemple crée et exécute une image Docker Windows à l'aide CodeBuild de.  | 
|  [Exemple « Publier une image Docker dans un référentiel d'images Amazon ECR » pour CodeBuild](sample-docker.md)  |  Cet exemple produit une image Docker en tant que sortie de compilation, puis envoie l'image Docker vers un référentiel d'images Amazon Elastic Container Registry (Amazon ECR).   | 
|  [Registre privé avec AWS Secrets Manager échantillon pour CodeBuild](sample-private-registry.md)  |  Cet exemple montre comment utiliser une image Docker stockée dans un registre privé comme environnement d' CodeBuild exécution.  | 

# Docker dans un exemple d'image personnalisé pour CodeBuild
<a name="sample-docker-custom-image"></a>

L'exemple suivant crée et exécute une image Docker à l'aide AWS CodeBuild d'une image de construction Docker personnalisée (`docker:dind`dans Docker Hub). 

Pour savoir comment créer une image Docker en utilisant plutôt une image de construction fournie CodeBuild par le support Docker, consultez notre. [Exemple « Publier une image Docker sur Amazon ECR »](sample-docker.md)

**Important**  
L'exécution de cet échantillon peut 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 [CodeBuild les sections Tarification](https://aws.amazon.com/codebuild/pricing), [Tarification Amazon S3](https://aws.amazon.com/s3/pricing), [AWS Key Management Service Tarification](https://aws.amazon.com/kms/pricing) et [ CloudWatchTarification Amazon](https://aws.amazon.com/cloudwatch/pricing).

**Topics**
+ [Exécutez le Docker dans un exemple d'image personnalisé](#sample-docker-custom-image-running)

## Exécutez le Docker dans un exemple d'image personnalisé
<a name="sample-docker-custom-image-running"></a>

Utilisez la procédure suivante pour exécuter le Docker dans un exemple d'image personnalisé. Pour plus d'informations sur cet exemple, consultez[Docker dans un exemple d'image personnalisé pour CodeBuild](#sample-docker-custom-image).

**Pour exécuter le Docker dans un exemple d'image personnalisé**

1. Créez les fichiers comme décrit dans les [Fichiers](#sample-docker-custom-image-files) sections [Structure de répertoire](#sample-docker-custom-image-dir) et de cette rubrique, puis chargez-les dans un compartiment d'entrée S3 ou un AWS CodeCommit référentiel Bitbucket. GitHub 
**Important**  
Ne chargez pas `(root directory name)`, mais seulement les fichiers à l'intérieur de `(root directory name)`.   
Si vous utilisez un compartiment d'entrée S3, veillez à créer un fichier ZIP contenant les fichiers, puis chargez ce fichier dans le compartiment d'entrée. N'ajoutez pas `(root directory name)` au fichier ZIP, mais seulement les fichiers à l'intérieur de `(root directory name)`.

1. Créez un projet de build, exécutez le build et consultez les informations de build associées.

   Si vous utilisez le AWS CLI pour créer le projet de construction, l'entrée au format JSON de la `create-project` commande peut ressembler à ceci. (Remplacez les espaces réservés par vos propres valeurs.)

   ```
   {
     "name": "sample-docker-custom-image-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/DockerCustomImageSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "docker:dind",
       "computeType": "BUILD_GENERAL1_SMALL",
       "privilegedMode": false
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```
**Note**  
Par défaut, le démon Docker est activé pour les versions non VPC. Si vous souhaitez utiliser des conteneurs Docker pour les builds VPC, [consultez Runtime Privilege et Linux](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) Capabilities sur le site Web de Docker Docs et activez le mode privilégié. De plus, Windows ne prend pas en charge le mode privilégié.

1. Pour voir les résultats de la génération, recherchez la chaîne `Hello, World!` dans le journal de la génération. Pour de plus amples informations, veuillez consulter [Affichage des détails d'une génération](view-build-details.md).

### Structure de répertoire
<a name="sample-docker-custom-image-dir"></a>

Cet exemple suppose que cette structure de répertoire est utilisée.

```
(root directory name)
├── buildspec.yml
└── Dockerfile
```

### Fichiers
<a name="sample-docker-custom-image-files"></a>

L'image de base du système d'exploitation utilisé dans cet exemple est Ubuntu. L'exemple utilise ces fichiers.

`buildspec.yml` (dans `(root directory name)`)

```
version: 0.2

phases:
  pre_build:
    commands:
      - docker build -t helloworld .
  build:
    commands:
      - docker images
      - docker run helloworld echo "Hello, World!"
```

`Dockerfile` (dans `(root directory name)`)

```
FROM maven:3.3.9-jdk-8
 
RUN echo "Hello World"
```

# Exemple de serveur de génération d'images Docker pour CodeBuild
<a name="sample-docker-server"></a>

L'exemple suivant télécharge vos builds Docker vers un serveur de génération d'images géré. Vous pouvez adapter cet exemple pour fournir un serveur de génération d'images Docker dédié et géré dans la configuration de votre CodeBuild projet. Notez que l'instance provisionnée est active lorsque les builds sont exécutés activement pour le projet, et qu'elle est arrêtée lorsque les builds ne sont pas en cours d'exécution. L'instance provisionnée est stockée jusqu'à un mois avant d'être recyclée. Pour plus d'informations, consultez la section [ CodeBuild Fonctionnalité du serveur Docker](https://aws.amazon.com/blogs//aws/accelerate-ci-cd-pipelines-with-the-new-aws-codebuild-docker-server-capability).

**Important**  
L'exécution de cet échantillon peut 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 [CodeBuild les sections Tarification](https://aws.amazon.com/codebuild/pricing), [Tarification Amazon S3](https://aws.amazon.com/s3/pricing), [AWS Key Management Service Tarification](https://aws.amazon.com/kms/pricing) et [ CloudWatchTarification Amazon](https://aws.amazon.com/cloudwatch/pricing).

**Topics**
+ [Configuration d'un serveur Docker](#sample-docker-server-running)

## Configuration d'un serveur Docker
<a name="sample-docker-server-running"></a>

Utilisez la procédure suivante pour configurer un environnement informatique dédié à un CodeBuild projet qui gère les charges de travail Docker et stocke les couches d'images Docker. 

**Pour configurer un serveur Docker**

1. Créez les fichiers comme décrit dans les [Fichiers](#sample-docker-server-files) sections [Structure de répertoire](#sample-docker-server-dir) et de cette rubrique, puis chargez-les dans un compartiment d'entrée S3 ou un AWS CodeCommit référentiel Bitbucket. GitHub 
**Important**  
Ne chargez pas `(root directory name)`, mais seulement les fichiers à l'intérieur de `(root directory name)`.   
Si vous utilisez un compartiment d'entrée S3, veillez à créer un fichier ZIP contenant les fichiers, puis chargez ce fichier dans le compartiment d'entrée. N'ajoutez pas `(root directory name)` au fichier ZIP, mais seulement les fichiers à l'intérieur de `(root directory name)`.

1. Créez un projet de build, exécutez le build et consultez les informations de build associées :

   1. Dans la section **Environnement** de la console, choisissez **Configuration supplémentaire**, accédez à **Configuration du serveur Docker**, puis sélectionnez **Activer le serveur docker pour** ce projet. Vous pouvez ensuite choisir le **type de calcul du serveur Docker** et fournir un **identifiant de registre**.

   1. Si vous utilisez le AWS CLI pour créer le projet de construction, l'entrée au format JSON de la `create-project` commande peut ressembler à ceci. (Remplacez les espaces réservés par vos propres valeurs.)

      ```
      {
        "name": "sample-docker-custom-image-project",
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/DockerServerSample.zip"
        },
        "artifacts": {
          "type": "NO_ARTIFACTS"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/amazonlinux-x86_64-standard:5.0",
          "computeType": "BUILD_GENERAL1_LARGE",
          "dockerServer": [ 
               { 
                  "computeType": "BUILD_GENERAL1_LARGE",
                  "securityGroupIds": [ "security-groups-ID" ]
               }
            ]
        },
        "serviceRole": "arn:aws:iam::account-ID:role/role-name"
      }
      ```
**Note**  
Les groupes de sécurité configurés pour les serveurs Docker doivent autoriser le trafic réseau entrant depuis le VPC configuré dans le projet. Ils devraient autoriser l'entrée sur le port 9876.

1. Pour voir les résultats de la génération, recherchez la chaîne `Hello, World!` dans le journal de la génération. Pour de plus amples informations, veuillez consulter [Affichage des détails d'une génération](view-build-details.md).

### Structure de répertoire
<a name="sample-docker-server-dir"></a>

Cet exemple suppose que cette structure de répertoire est utilisée.

```
(root directory name)
├── buildspec.yml
└── Dockerfile
```

### Fichiers
<a name="sample-docker-server-files"></a>

L'image de base du système d'exploitation utilisé dans cet exemple est Ubuntu. L'exemple utilise ces fichiers.

`buildspec.yml` (dans `(root directory name)`)

```
version: 0.2

phases:
  build:
    commands:
      - docker buildx build -t helloworld --load .
      - docker run helloworld echo "Hello, World!"
```

`Dockerfile` (dans `(root directory name)`)

```
FROM public.ecr.aws/amazonlinux/amazonlinux:latest 
 
RUN echo "Hello World"
```

# Exemple de compilation Windows Docker pour CodeBuild
<a name="sample-windows-docker-custom-image"></a>

L'exemple suivant crée et exécute une image Docker Windows à l'aide CodeBuild de.

**Topics**
+ [Exemple d'exécution de versions de Windows Docker](#sample-windows-docker-build-running)

## Exemple d'exécution de versions de Windows Docker
<a name="sample-windows-docker-build-running"></a>

Utilisez la procédure suivante pour exécuter les versions de Windows Docker.

**Pour exécuter un exemple de build Windows Docker**

1. Créez les fichiers comme décrit dans les [Fichiers](#sample-windows-docker-custom-image-files) sections [Structure de répertoire](#sample-windows-docker-custom-image-dir) et de cette rubrique, puis chargez-les dans un compartiment d'entrée S3 ou un AWS CodeCommit référentiel Bitbucket. GitHub 
**Important**  
Ne chargez pas `(root directory name)`, mais seulement les fichiers à l'intérieur de `(root directory name)`.   
Si vous utilisez un compartiment d'entrée S3, veillez à créer un fichier ZIP contenant les fichiers, puis chargez ce fichier dans le compartiment d'entrée. N'ajoutez pas `(root directory name)` au fichier ZIP, mais seulement les fichiers à l'intérieur de `(root directory name)`.

1. Créez une `WINDOWS_EC2` flotte.

   Si vous utilisez le AWS CLI pour créer la flotte, l'entrée au format JSON de la `create-fleet` commande peut ressembler à ceci. (Remplacez les espaces réservés par vos propres valeurs.)

   ```
   {
     "name": "fleet-name",
     "baseCapacity": 1,
     "environmentType": "WINDOWS_EC2",
     "computeType": "BUILD_GENERAL1_MEDIUM"
   }
   ```

1. Créez un projet de build, exécutez le build et consultez les informations de build associées.

   Si vous utilisez le AWS CLI pour créer le projet de construction, l'entrée au format JSON de la `create-project` commande peut ressembler à ceci. (Remplacez les espaces réservés par vos propres valeurs.)

   ```
   {
     "name": "project-name",
     "source": {
       "type": "S3",
       "location": "bucket-name/DockerImageSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "WINDOWS_EC2",
       "image": "Windows",
       "computeType": "BUILD_GENERAL1_MEDIUM",
       "fleet": {
          "fleetArn": "fleet-arn"
       }
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name"
   }
   ```

1. Pour voir les résultats de la génération, recherchez la chaîne `Hello, World!` dans le journal de la génération. Pour de plus amples informations, veuillez consulter [Affichage des détails d'une génération](view-build-details.md).

### Structure de répertoire
<a name="sample-windows-docker-custom-image-dir"></a>

Cet exemple suppose que cette structure de répertoire est utilisée.

```
(root directory name)
├── buildspec.yml
└── Dockerfile
```

### Fichiers
<a name="sample-windows-docker-custom-image-files"></a>

L'image de base du système d'exploitation utilisé dans cet exemple est`mcr.microsoft.com/windows/servercore:ltsc2022`. L'exemple utilise ces fichiers.

`buildspec.yml` (dans `(root directory name)`)

```
version: 0.2

phases:
  pre_build:
    commands:
      - docker build -t helloworld .
  build:
    commands:
      - docker images
      - docker run helloworld powershell -Command "Write-Host 'Hello World!'"
```

`Dockerfile` (dans `(root directory name)`)

```
FROM mcr.microsoft.com/windows/servercore:ltsc2022

RUN powershell -Command "Write-Host 'Hello World'"
```

# Exemple « Publier une image Docker dans un référentiel d'images Amazon ECR » pour CodeBuild
<a name="sample-docker"></a>

Cet exemple produit une image Docker en tant que sortie de compilation, puis envoie l'image Docker vers un référentiel d'images Amazon Elastic Container Registry (Amazon ECR). Vous pouvez adapter cet exemple pour transférer l'image Docker vers Docker Hub. Pour de plus amples informations, veuillez consulter [Adaptez l'exemple « Publier une image Docker sur Amazon ECR » pour le transférer vers Docker Hub](sample-docker-docker-hub.md).

Pour savoir comment générer une image Docker à l'aide d'une image de génération Docker personnalisée (`docker:dind` dans Docker Hub), consultez notre [Exemple Docker dans une image personnalisée](sample-docker-custom-image.md).

Cet exemple a été testé en faisant référence à `golang:1.12`.

Cet exemple utilise la nouvelle fonction de générations Docker en plusieurs étapes, qui produit une image Docker comme sortie de génération. Il envoie ensuite l'image Docker vers un référentiel d'images Amazon ECR. Les générations d'image Docker en plusieurs étapes contribuent à réduire la taille de l'image Docker finale. Pour plus d'informations, consultez [Use multi-stage builds with Docker](https://docs.docker.com/engine/userguide/eng-image/multistage-build/).

**Important**  
L'exécution de cet échantillon peut entraîner des frais sur votre AWS compte. Cela inclut les éventuels frais pour AWS CodeBuild et pour les AWS ressources et les actions liées à Amazon S3 AWS KMS, CloudWatch Logs et Amazon ECR. Pour plus d'informations, consultez [CodeBuild les rubriques Tarification](https://aws.amazon.com/codebuild/pricing), [Tarification Amazon S3](https://aws.amazon.com/s3/pricing), [AWS Key Management Service Tarification](https://aws.amazon.com/kms/pricing) [Amazon et CloudWatch Tarification](https://aws.amazon.com/cloudwatch/pricing) [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/pricing).

**Topics**
+ [Exécutez l'exemple « Publier une image Docker sur Amazon ECR »](#sample-docker-running)
+ [Adaptez l'exemple « Publier une image Docker sur Amazon ECR » pour le transférer vers Docker Hub](sample-docker-docker-hub.md)

## Exécutez l'exemple « Publier une image Docker sur Amazon ECR »
<a name="sample-docker-running"></a>

Utilisez la procédure suivante pour exécuter l'exemple qui publie une image Docker sur Amazon ECR. Pour plus d'informations sur cet exemple, consultez. [Exemple « Publier une image Docker dans un référentiel d'images Amazon ECR » pour CodeBuild](#sample-docker)

**Pour exécuter cet exemple**

1. Si vous avez déjà un référentiel d'images dans Amazon ECR que vous souhaitez utiliser, passez à l'étape 3. Sinon, si vous utilisez un utilisateur au lieu d'un compte AWS root ou un utilisateur administrateur pour travailler avec Amazon ECR, ajoutez cette déclaration (entre *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* et*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) à l'utilisateur (ou au groupe IAM auquel l'utilisateur est associé). L'utilisation d'un compte AWS root n'est pas recommandée. Cette déclaration permet la création de référentiels Amazon ECR pour le stockage d'images Docker. Des ellipses (`...`) sont utilisées par souci de concision et pour vous aider à déterminer l'endroit où ajouter l'instruction. Ne supprimez aucune instruction, et n'entrez pas ces ellipses dans la stratégie. Pour plus d'informations, consultez la section [Utilisation des politiques intégrées à l'aide du AWS Management Console](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) *guide de l'utilisateur*. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:CreateRepository"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**Note**  
L'entité IAM qui modifie cette politique doit être autorisée dans IAM à modifier les politiques.

1. Créez un référentiel d'images dans Amazon ECR. Assurez-vous de créer le référentiel dans la même AWS région que celle dans laquelle vous créez votre environnement de génération et exécutez votre build. Pour plus d'informations, consultez la section [Création d'un référentiel](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) dans le *guide de l'utilisateur Amazon ECR.* Le nom de ce référentiel doit correspondre au nom du référentiel que vous spécifierez ultérieurement dans cette procédure, représenté par la variable d'environnement `IMAGE_REPO_NAME`. Assurez-vous que la politique de référentiel Amazon ECR accorde un accès push aux images pour votre rôle IAM CodeBuild de service. 

1. Ajoutez cette déclaration (entre *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* et*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) à la politique que vous avez attachée à votre rôle AWS CodeBuild de service. Cette instruction permet de CodeBuild télécharger des images Docker dans les référentiels Amazon ECR. Des ellipses (`...`) sont utilisées par souci de concision et pour vous aider à déterminer l'endroit où ajouter l'instruction. Ne supprimez aucune instruction, et n'entrez pas ces ellipses dans la stratégie. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:CompleteLayerUpload",
                   "ecr:GetAuthorizationToken",
                   "ecr:InitiateLayerUpload",
                   "ecr:PutImage",
                   "ecr:UploadLayerPart"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**Note**  
L'entité IAM qui modifie cette politique doit être autorisée dans IAM à modifier les politiques.

1. Créez les fichiers comme décrit dans les [Fichiers](#sample-docker-files) sections [Structure de répertoire](#sample-docker-dir) et de cette rubrique, puis chargez-les dans un compartiment d'entrée S3 ou un AWS CodeCommit référentiel Bitbucket. GitHub Pour plus d'informations, reportez-vous à la section [Référence des fichiers de définitions d'images](https://docs.aws.amazon.com/codepipeline/latest/userguide/file-reference.html) dans le *Guide de AWS CodePipeline l'utilisateur*.
**Important**  
Ne chargez pas `(root directory name)`, mais seulement les fichiers à l'intérieur de `(root directory name)`.   
Si vous utilisez un compartiment d'entrée S3, veillez à créer un fichier ZIP contenant les fichiers, puis chargez ce fichier dans le compartiment d'entrée. N'ajoutez pas `(root directory name)` au fichier ZIP, mais seulement les fichiers à l'intérieur de `(root directory name)`.

1. Créez un projet de build, exécutez le build et visualisez les informations de build.

    Si vous utilisez la console pour créer votre projet :

   1.  Pour **Système d'exploitation**, choisissez **Ubuntu**. 

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

   1.  **Pour **Image**, choisissez aws/codebuild/standard : 5.0.** 

   1.  Ajoutez les variables d'environnement suivantes : 
      +  AWS\$1DEFAULT\$1REGION avec une valeur de *region-ID* 
      +  AWS\$1ACCOUNT\$1ID avec une valeur de *account-ID* 
      +  IMAGE\$1TAG avec la valeur Latest 
      +  IMAGE\$1REPO\$1NAME avec une valeur de *Amazon-ECR-repo-name* 

   Si vous utilisez le AWS CLI pour créer le projet de construction, l'entrée au format JSON de la `create-project` commande peut ressembler à ceci. (Remplacez les espaces réservés par vos propres valeurs.)

   ```
   {
     "name": "sample-docker-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/DockerSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "BUILD_GENERAL1_SMALL",
       "environmentVariables": [
         {
           "name": "AWS_DEFAULT_REGION",
           "value": "region-ID"
         },
         {
           "name": "AWS_ACCOUNT_ID",
           "value": "account-ID"
         },
         {
           "name": "IMAGE_REPO_NAME",
           "value": "Amazon-ECR-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ],
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

1. Confirmez que CodeBuild l'image Docker a bien été transférée vers le référentiel :

   1. Ouvrez la console Amazon ECR à [https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/)l'adresse.

   1. Choisissez le nom du référentiel. L'image doit apparaître dans la colonne **Balise d'image**.

### Structure de répertoire
<a name="sample-docker-dir"></a>

Cet exemple suppose que cette structure de répertoire est utilisée.

```
(root directory name)
├── buildspec.yml
└── Dockerfile
```

### Fichiers
<a name="sample-docker-files"></a>

Cet exemple utilise ces fichiers.

`buildspec.yml` (dans `(root directory name)`)

```
version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...          
      - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
      - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG      
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker image...
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
```

`Dockerfile` (dans `(root directory name)`)

```
FROM golang:1.12-alpine AS build
#Install git
RUN apk add --no-cache git
#Get the hello world package from a GitHub repository
RUN go get github.com/golang/example/hello
WORKDIR /go/src/github.com/golang/example/hello
# Build the project and send the output to /bin/HelloWorld 
RUN go build -o /bin/HelloWorld

FROM golang:1.12-alpine
#Copy the build's output binary from the previous build container
COPY --from=build /bin/HelloWorld /bin/HelloWorld
ENTRYPOINT ["/bin/HelloWorld"]
```

**Note**  
CodeBuild remplace le `ENTRYPOINT` pour les images Docker personnalisées.

# Adaptez l'exemple « Publier une image Docker sur Amazon ECR » pour le transférer vers Docker Hub
<a name="sample-docker-docker-hub"></a>

Pour adapter l'exemple « Publier une image Docker sur Amazon ECR » afin que l'image Docker soit envoyée vers Docker Hub plutôt que vers Amazon ECR, modifiez le code de l'exemple. Pour plus d'informations sur l'exemple, reportez-vous aux sections [Exemple « Publier une image Docker dans un référentiel d'images Amazon ECR » pour CodeBuild](sample-docker.md) et[Exécutez l'exemple « Publier une image Docker sur Amazon ECR »](sample-docker.md#sample-docker-running).
**Note**  
Si vous utilisez une version de Docker antérieure à 17.06, supprimez l'option `--no-include-email`.

1. Remplacez ces lignes de code spécifiques à Amazon ECR dans le `buildspec.yml` fichier :

   ```
   ...
     pre_build:
       commands:
         - echo Logging in to Amazon ECR...
         - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
     build:
       commands:
         - echo Build started on `date`
         - echo Building the Docker image...          
         - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
         - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
     post_build:
       commands:
         - echo Build completed on `date`
         - echo Pushing the Docker image...
         - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
   ...
   ```

   Par ces lignes de code spécifiques à Docker Hub :

   ```
   ...
     pre_build:
       commands:
         - echo Logging in to Docker Hub...
         # Type the command to log in to your Docker Hub account here.          
     build:
       commands:
         - echo Build started on `date`
         - echo Building the Docker image...
         - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
         - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $IMAGE_REPO_NAME:$IMAGE_TAG
     post_build:
       commands:
         - echo Build completed on `date`
         - echo Pushing the Docker image...
         - docker push $IMAGE_REPO_NAME:$IMAGE_TAG
   ...
   ```

1. Téléchargez le code modifié dans un compartiment d'entrée S3 ou un AWS CodeCommit référentiel Bitbucket. GitHub 
**Important**  
Ne chargez pas `(root directory name)`, mais seulement les fichiers à l'intérieur de `(root directory name)`.   
Si vous utilisez un compartiment d'entrée S3, veillez à créer un fichier ZIP contenant les fichiers, puis chargez ce fichier dans le compartiment d'entrée. N'ajoutez pas `(root directory name)` au fichier ZIP, mais seulement les fichiers à l'intérieur de `(root directory name)`.

1. Remplacez ces lignes de code de l'entrée au format JSON vers la commande `create-project` :

   ```
   ...
       "environmentVariables": [
         {
           "name": "AWS_DEFAULT_REGION",
           "value": "region-ID"
         },
         {
           "name": "AWS_ACCOUNT_ID",
           "value": "account-ID"
         },
         {
           "name": "IMAGE_REPO_NAME",
           "value": "Amazon-ECR-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ]
   ...
   ```

   Par ces lignes de code :

   ```
   ...
       "environmentVariables": [
         {
           "name": "IMAGE_REPO_NAME",
           "value": "your-Docker-Hub-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ]
   ...
   ```

1. Créez un environnement de génération, exécutez le build et consultez les informations de build associées.

1. Vérifiez que l'image Docker a AWS CodeBuild bien été transférée vers le référentiel. Connectez-vous à Docker Hub, accédez au référentiel et choisissez l'onglet **Tags**. La balise `latest` doit comporter une valeur **Last Updated** très récente.

# Registre privé avec AWS Secrets Manager échantillon pour CodeBuild
<a name="sample-private-registry"></a>

 Cet exemple vous montre comment utiliser une image Docker stockée dans un registre privé comme environnement AWS CodeBuild d'exécution. Les informations d'identification du registre privé sont stockées dans AWS Secrets Manager. N'importe quel registre privé fonctionne avec CodeBuild. Cet exemple utilise Docker Hub. 

**Note**  
Les secrets sont visibles par les actions et ne sont pas masqués lorsqu'ils sont écrits dans un fichier.

**Topics**
+ [Exigences de l'exemple de registre privé](#sample-private-registry-requirements)
+ [Création d'un CodeBuild projet avec un registre privé](private-registry-sample-create-project.md)
+ [Configurer un identifiant de registre privé pour les coureurs auto-hébergés](private-registry-sample-configure-runners.md)

## Exigences de l'exemple de registre privé
<a name="sample-private-registry-requirements"></a>

 Pour utiliser un registre privé avec AWS CodeBuild, vous devez disposer des éléments suivants : 
+  Un secret du Gestionnaire de Secrets qui stocke vos informations d'identification Docker Hub. Les informations d'identification sont utilisées pour accéder à votre référentiel privé. 
**Note**  
Les secrets que vous créez vous seront facturés.
+  Un référentiel ou un compte privé. 
+  Une politique IAM de rôle de CodeBuild service qui accorde l'accès à votre secret Secrets Manager. 

 Suivez ces étapes pour créer ces ressources, puis créez un projet de CodeBuild construction à l'aide des images Docker stockées dans votre registre privé. 

# Création d'un CodeBuild projet avec un registre privé
<a name="private-registry-sample-create-project"></a>

1. Pour plus d'informations sur la création d'un référentiel privé, consultez [Référentiels sur Docker Hub](https://docs.docker.com/docker-hub/repos/). Vous pouvez également exécuter les commandes suivantes dans un terminal pour extraire une image, obtenir son ID et la transmettre à un nouveau référentiel. 

   ```
   docker pull amazonlinux
   docker images amazonlinux --format {{.ID}}
   docker tag image-id your-username/repository-name:tag
   docker login
   docker push your-username/repository-name
   ```

1.  Suivez les étapes décrites dans la [section Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) dans le *guide de AWS Secrets Manager l'utilisateur*.

   

   1.  À l'étape 3, dans **Choisir le type de secret**, choisissez **Autre type de secret**. 

   1. Dans les **paires clé/valeur**, créez une paire clé-valeur pour votre nom d'utilisateur Docker Hub et une paire clé-valeur pour votre mot de passe Docker Hub. 

   1.  Continuez à suivre les étapes décrites dans [Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). 

   1.  À l'étape 5, sur la page **Configurer la rotation automatique**, désactivez-la car les clés correspondent à vos informations d'identification Docker Hub. 

   1.  Terminez en suivant les étapes décrites dans [Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). 

    Pour plus d’informations, consultez [Qu’est-ce qu’ AWS Secrets Manager ?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) 

1.  Lorsque vous créez un AWS CodeBuild projet dans la console, il CodeBuild joint l'autorisation requise pour vous. Si vous utilisez une AWS KMS clé autre que`DefaultEncryptionKey`, vous devez l'ajouter au rôle de service. Pour plus d'informations, consultez la section [Modification d'un rôle (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html#roles-managingrole-editing-console) dans le *guide de l'utilisateur IAM*. 

    Pour que votre rôle de service fonctionne avec Secrets Manager, il doit au minimum disposer de l'`secretsmanager:GetSecretValue`autorisation.   
![\[Configuration du rôle de service.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/private-registry-sample-iam.png)

1.  Pour utiliser la console afin de créer un projet avec un environnement stocké dans un registre privé, effectuez les opérations suivantes lorsque vous créez un projet. Pour plus d'informations, consultez [Création d'un projet de génération (console)](create-project.md#create-project-console). 
**Note**  
 Si votre registre privé se trouve dans votre VPC, celui-ci doit disposer d'un accès public à Internet. CodeBuild Impossible d'extraire une image d'une adresse IP privée dans un VPC. 

   1.  Dans **Image d'environnement**, sélectionnez **Image personnalisée**. 

   1.  Pour **Type d'environnement**, choisissez **Linux** ou **Windows**. 

   1.  Pour le **registre d'images**, choisissez **Autre registre**. 

   1.  Dans **URL de registre externe**, entrez l'emplacement de l'image et dans **Informations d'identification du registre. Entrez éventuellement** l'ARN ou le nom de vos informations d'identification de Secrets Manager.
**Note**  
 Si vos informations d'identification n'existent pas dans votre région actuelle, vous devez utiliser l'ARN. Vous ne pouvez pas utiliser le nom des informations d'identification si celles-ci existent dans une autre région. 

# Configurer un identifiant de registre privé pour les coureurs auto-hébergés
<a name="private-registry-sample-configure-runners"></a>

Suivez les instructions ci-dessous pour configurer un identifiant de registre pour un coureur auto-hébergé.

**Note**  
Notez que ces informations d'identification ne seront utilisées que si les images sont remplacées par celles provenant de registres privés. 

------
#### [ AWS Management Console ]

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Créez un projet de construction ou sélectionnez un projet existant. Pour plus d’informations, consultez [Création d'un projet de génération (console)](create-project.md#create-project-console) et [Modification des paramètres d'un projet de génération (console)](change-project.md#change-project-console).

1.  Dans **Environnement**, sélectionnez **Configuration supplémentaire**. 

1.  Dans **Configuration supplémentaire**, entrez le nom ou l'ARN du formulaire secret AWS Secrets Manager pour les **informations d'identification du registre (facultatif)**.  
![\[Configuration des informations d'identification du registre.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/registry-credential.png)

------
#### [ AWS CLI ]

1. Si vous souhaitez créer un nouveau projet, exécutez la commande **create-project**.

   ```
   aws codebuild create-project \
       --name project-name \
       --source type=source-type,location=source-location \
       --environment "type=environment-type,image=image,computeType=compute-type,registryCredential={credentialProvider=SECRETS_MANAGER,credential=secret-name-or-arn},imagePullCredentialsType=CODEBUILD|SERVICE_ROLE" \
       --artifacts type=artifacts-type \
       --service-role arn:aws:iam::account-ID:role/service-role/service-role-name
   ```

1. Si vous souhaitez mettre à jour un projet existant, exécutez la commande **update-project**.

   ```
   aws codebuild update-project \
       --name project-name \
       --environment "type=environment-type,image=image,computeType=compute-type,registryCredential={credentialProvider=SECRETS_MANAGER,credential=secret-name-or-arn}"
   ```

------

# Création d'un site web statique avec la sortie de génération hébergée dans un compartiment S3
<a name="sample-disable-artifact-encryption"></a>

Vous pouvez désactiver le chiffrement des artefacts dans une génération. Cela peut s'avérer utile pour publier des artefacts dans un emplacement configuré pour héberger un site web. (Vous ne pouvez pas publier d'artefacts chiffrés.) Cet exemple montre comment utiliser des webhooks pour déclencher une génération et publier ses artefacts dans un compartiment S3 qui est configuré comme un site web. 

1.  Suivez les instructions indiquées dans [Configuration d'un site web statique](https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html) pour configurer un compartiment S3 afin qu'il fonctionne comme un site web. 

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  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**. 

1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération. Les noms des projets de construction doivent être uniques pour chaque AWS compte. Vous pouvez également inclure une description facultative du projet de construction pour aider les autres utilisateurs à comprendre à quoi sert ce projet.

1.  Dans **Source**, pour **Fournisseur de source**, choisissez **GitHub**. Suivez les instructions pour vous connecter (ou vous reconnecter) à GitHub, puis choisissez **Autoriser**. 

    Pour **Webhook**, sélectionnez **Reconstruire à chaque fois qu'une modification de code est transférée dans ce référentiel**. Vous pouvez cocher cette case uniquement si vous avez choisi **Use a repository in my account (Utiliser un référentiel de mon compte)**.   
![\[La configuration du webhook.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/webhook.png)

1. Dans **Environment (Environnement)** :

   Pour **Image d'environnement**, effectuez l'une des actions suivantes :
   + Pour utiliser une image Docker gérée par AWS CodeBuild, choisissez **Image gérée**, puis sélectionnez **Système d'exploitation**, **Runtime (s)**, **Image** et **Version de l'image**. Effectuez votre sélection pour **Type d'environnement** si cette option est disponible.
   + Pour utiliser une autre image Docker, choisissez **Image personnalisée**. Pour le **type d'environnement**, choisissez **ARM**, **Linux****, Linux GPU** ou **Windows**. Si vous choisissez **Other registry (Autre registre)**, pour **External registry URL (URL du registre externe)**, entrez le nom et la balise de l'image Docker dans Docker Hub au format `docker repository/docker image name`. Si vous choisissez **Amazon ECR**, utilisez le **référentiel Amazon ECR** et l'image **Amazon ECR pour choisir l'image** Docker dans votre compte. AWS 
   + Pour utiliser une image Docker privée, choisissez **Image personnalisée**. Pour le **type d'environnement**, choisissez **ARM**, **Linux****, Linux GPU** ou **Windows**. Pour **Image registry (Registre de l'image)**, choisissez **Other registry (Autre registre)** et entrez l'ARN des informations d'identification de votre image Docker privée. Les informations d'identification doivent être créées par Secrets Manager. Pour plus d'informations, consultez [Présentation de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) dans le *Guide de l'utilisateur AWS Secrets Manager *.

1. Dans **Rôle du service**, sélectionnez l'une des options suivantes :
   + Si vous n'avez pas de rôle CodeBuild de service, choisissez **Nouveau rôle de service**. Dans **Role name**, entrez un nom pour le nouveau rôle.
   + Si vous avez un rôle CodeBuild de service, choisissez **Rôle de service existant**. Dans **Role ARN**, choisissez le rôle de service.
**Note**  
Lorsque vous utilisez la console pour créer ou mettre à jour un projet de génération, vous pouvez créer un rôle de CodeBuild service en même temps. Par défaut, le rôle fonctionne avec ce projet de génération uniquement. Si vous utilisez la console pour associer ce rôle de service à un autre projet de génération, le rôle est mis à jour pour fonctionner avec l'autre projet de génération. Un rôle de service peut fonctionner avec 10 projets de génération maximum.

1. Dans **Buildspec, effectuez** l'une des opérations suivantes :
   + Choisissez **Utiliser un fichier buildspec pour utiliser le fichier** buildspec.yml dans le répertoire racine du code source.
   + Choisissez **Insérer des commandes** de génération pour utiliser la console pour insérer des commandes de génération.

   Pour de plus amples informations, veuillez consulter [Référence des spécifications de génération](build-spec-ref.md).

1.  Dans **Artifacts**, pour **Type**, choisissez **Amazon S3** pour stocker la sortie de compilation dans un compartiment S3. 

1.  Pour **Bucket name (Nom du compartiment)**, choisissez le nom du compartiment S3 que vous avez configuré pour fonctionner comme un site web à l'étape 1. 

1.  Si vous avez choisi **Insérer des commandes de génération** précédemment dans la procédure **Environnement**, pour **Fichiers de sortie**, saisissez les emplacements des fichiers de la génération que vous souhaitez placer dans le compartiment de sortie. Si vous avez plusieurs emplacements, utilisez une virgule pour séparer chaque emplacement (par exemple, **appspec.yml, target/my-app.jar**). Pour de plus amples informations, veuillez consulter [Artifacts reference-key in the buildspec file](build-spec-ref.md#artifacts-build-spec).

1.  Sélectionnez **Disable artifacts encryption (Désactiver le chiffrement des artefacts)**. 

1. Développez **Additional configuration (Configuration supplémentaire)** et choisissez les options appropriées.

1. Choisissez **Créer un projet de génération**. Sur la page du projet de génération, dans **Historique de génération**, choisissez **Démarrer la génération** pour exécuter la génération.

1.  (Facultatif) Suivez les instructions de la [section Exemple : accélérez votre site Web avec Amazon CloudFront](https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-cloudfront-walkthrough.html) dans le *manuel du développeur Amazon S3*. 

# Exemples de projets avec plusieurs sources d'entrée et plusieurs artefacts de sortie
<a name="sample-multi-in-out"></a>

Vous pouvez créer un projet de AWS CodeBuild construction avec plusieurs sources d'entrée et plusieurs ensembles d'artefacts de sortie. Cet exemple vous montre comment configurer un projet de génération qui : 
+ utilise plusieurs sources et référentiels de différents types ;
+ publie des artefacts de génération vers plusieurs compartiments S3 dans une seule génération.

 Dans l'exemple suivant, vous allez créer un projet de build et l'utiliser pour exécuter une build. L'exemple utilise le fichier buildspec du projet de génération pour vous montrer comment intégrer plusieurs sources et créer plusieurs ensembles d'artefacts. 

Pour savoir comment créer un pipeline qui utilise plusieurs entrées source afin de CodeBuild créer plusieurs artefacts de sortie, voir[Exemple d' CodePipeline/CodeBuild intégration avec plusieurs sources d'entrée et artefacts de sortie](sample-codepipeline.md#sample-pipeline-multi-input-output).

**Topics**
+ [Créez un projet de construction avec plusieurs entrées et sorties](sample-multi-in-out-create.md)
+ [Création d'un projet de construction sans source](no-source.md)

# Créez un projet de construction avec plusieurs entrées et sorties
<a name="sample-multi-in-out-create"></a>

Utilisez la procédure suivante pour créer un projet de construction avec plusieurs entrées et sorties.

**Pour créer un projet de construction avec plusieurs entrées et sorties**

1.  Téléchargez vos sources vers un ou plusieurs buckets S3, CodeCommit GitHub, GitHub Enterprise Server ou référentiels Bitbucket. 

1.  Choisissez quelle source est la source principale. Il s'agit de la source dans laquelle vous CodeBuild recherchez et exécutez votre fichier buildspec. 

1.  Créez un projet de génération. Pour de plus amples informations, veuillez consulter [Créez un projet de construction dans AWS CodeBuild](create-project.md). 

1.  Créez votre projet de build, exécutez le build et obtenez des informations sur le build. 

1.  Si vous utilisez le AWS CLI pour créer le projet de construction, l'entrée au format JSON de la `create-project` commande peut ressembler à ce qui suit : 

   ```
   {
     "name": "sample-project",
     "source": {
       "type": "S3",
       "location": "<bucket/sample.zip>"
     },
     "secondarySources": [
       {
         "type": "CODECOMMIT",
         "location": "https://git-codecommit.us-west-2.amazonaws.com/v1/repos/repo",
         "sourceIdentifier": "source1"
       },
       {
         "type": "GITHUB",
         "location": "https://github.com/awslabs/aws-codebuild-jenkins-plugin",
         "sourceIdentifier": "source2"
       }
     ],
     "secondaryArtifacts": [ss
       {
         "type": "S3",
         "location": "<output-bucket>",
         "artifactIdentifier": "artifact1"
       },
       {
         "type": "S3",
         "location": "<other-output-bucket>",
         "artifactIdentifier": "artifact2"
       }
     ],
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "BUILD_GENERAL1_SMALL"
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

 Votre source principale est définie sous l'attribut `source`. Toutes les autres sources sont appelées « sources secondaires » et apparaissent sous `secondarySources`. Toutes les sources secondaires sont installées dans leur propre répertoire. Ce répertoire est stocké dans la variable d'environnement intégrée `CODEBUILD_SRC_DIR_sourceIdentifer`. Pour de plus amples informations, veuillez consulter [Variables d'environnement dans les environnements de génération](build-env-ref-env-vars.md). 

 L'attribut `secondaryArtifacts` contient une liste de définitions d'artefacts. Ces artefacts utilisent le bloc `secondary-artifacts` du fichier buildspec qui est imbriqué dans le bloc `artifacts`. 

 Les artefacts secondaires du fichier buildspec ont la même structure que tous les artefacts et sont séparés par leur identifiant d'artefact. 

**Note**  
 Dans l'API [CodeBuild ](https://docs.aws.amazon.com/codebuild/latest/APIReference/), l'attribut `artifactIdentifier` sur un artefact secondaire est obligatoire dans `CreateProject` et `UpdateProject`. Il doit être utilisé pour référencer un artefact secondaire. 

 Lorsque vous utilisez l'entrée précédente au format JSON, le fichier buildspec du projet peut ressembler à ce qui suit : 

```
version: 0.2

phases:
  install:
    runtime-versions:
      java: openjdk11
  build:
    commands:
      - cd $CODEBUILD_SRC_DIR_source1
      - touch file1
      - cd $CODEBUILD_SRC_DIR_source2
      - touch file2

artifacts:
  files:
    - '**.*'
  secondary-artifacts:
    artifact1:
      base-directory: $CODEBUILD_SRC_DIR_source1
      files:
        - file1
    artifact2:
      base-directory: $CODEBUILD_SRC_DIR_source2
      files:
        - file2
```

 Vous pouvez substituer la version de la source principale à l'aide de l'API avec l'attribut `sourceVersion` dans `StartBuild`. Pour substituer une ou plusieurs versions de source secondaire, utilisez l'attribut `secondarySourceVersionOverride`. 

 L'entrée au format JSON de la `start-build` commande dans le AWS CLI peut ressembler à ceci : 

```
{
   "projectName": "sample-project",
   "secondarySourcesVersionOverride": [
      {
        "sourceIdentifier": "source1",
        "sourceVersion": "codecommit-branch"
      },
      {
        "sourceIdentifier": "source2",
        "sourceVersion": "github-branch"
      },
   ]
}
```

# Création d'un projet de construction sans source
<a name="no-source"></a>

 Vous pouvez configurer un CodeBuild projet en choisissant le type de **NO\$1SOURCE** source lorsque vous configurez votre source. Lorsque votre type de source est **NO\$1SOURCE**, vous ne pouvez pas spécifier de fichier buildspec car votre projet n'a pas de source. Au lieu de cela, vous devez spécifier une chaîne buildspec au format YAML dans l'attribut `buildspec` de l'entrée au format JSON pour la commande de l'interface de ligne de commande `create-project`. Elle peut ressembler à ceci : 

```
{
  "name": "project-name",
  "source": {
    "type": "NO_SOURCE",
    "buildspec": "version: 0.2\n\nphases:\n  build:\n    commands:\n      - command"
   },
  "environment": {
    "type": "LINUX_CONTAINER",
    "image": "aws/codebuild/standard:5.0",
    "computeType": "BUILD_GENERAL1_SMALL",    
  },
  "serviceRole": "arn:aws:iam::account-ID:role/role-name",
  "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
}
```

Pour de plus amples informations, veuillez consulter [Création d'un projet de génération (AWS CLI)](create-project.md#create-project-cli).

# Versions d'exécution dans un exemple de fichier buildspec pour CodeBuild
<a name="sample-runtime-versions"></a>

Si vous utilisez l'image standard Amazon Linux 2 (AL2) version 1.0 ou ultérieure, ou l'image standard Ubuntu version 2.0 ou ultérieure, vous pouvez spécifier un ou plusieurs environnements d'exécution dans la `runtime-versions` section de votre fichier buildspec. Les exemples suivants montrent comment modifier le temps d'exécution de votre projet, spécifier plusieurs environnements d'exécution et spécifier un environnement d'exécution dépendant d'un autre environnement d'exécution. Pour plus d'informations sur les environnements d'exécution pris en charge, consultez [Images Docker fournies par CodeBuild](build-env-ref-available.md).

**Note**  
Si vous utilisez Docker dans le conteneur de générations, la génération doit s'exécuter en mode privilégié. Pour plus d’informations, consultez [Exécuter AWS CodeBuild les builds manuellement](run-build.md) et [Créez un projet de construction dans AWS CodeBuild](create-project.md). 

**Topics**
+ [Mettre à jour la version d'exécution dans le fichier buildspec](sample-runtime-update-version.md)
+ [Spécification de deux environnements d'exécution](sample-runtime-two-major-version-runtimes.md)

# Mettre à jour la version d'exécution dans le fichier buildspec
<a name="sample-runtime-update-version"></a>

Vous pouvez modifier le runtime utilisé par votre projet vers une nouvelle version en mettant à jour la `runtime-versions` section de votre fichier buildspec. Les exemples suivants montrent comment spécifier Java versions 8 et 11 :
+ Une section `runtime-versions` qui spécifie la version 8 de Java :

  ```
  phases:
    install:
      runtime-versions:
        java: corretto8
  ```
+ Une section `runtime-versions` qui spécifie la version 11 de Java :

  ```
  phases:
    install:
      runtime-versions:
        java: corretto11
  ```

Les exemples suivants montrent comment spécifier différentes versions de Python à l'aide de l'image standard d'Ubuntu 5.0 ou de l'image standard 3.0 d'Amazon Linux 2 :
+ `runtime-versions`Section qui spécifie la version 3.7 de Python : 

  ```
  phases:
    install:
      runtime-versions:
        python: 3.7
  ```
+ `runtime-versions`Section qui spécifie la version 3.8 de Python : 

  ```
  phases:
    install:
      runtime-versions:
        python: 3.8
  ```

Cet exemple illustre un projet qui démarre avec l'environnement d'exécution Java version 8, puis qui est mis à jour vers l'environnement d'exécution Java version 10. 

1. Téléchargez et installez Maven. Pour de plus amples informations, consultez [Downloading Apache Maven](https://maven.apache.org/download.cgi) et [Installing Apache Maven](https://maven.apache.org/install.html) sur le site Web Apache Maven.

1. Placez-vous dans un répertoire vide sur votre ordinateur ou instance local, puis exécutez cette commande Maven.

   ```
   mvn archetype:generate "-DgroupId=com.mycompany.app" "-DartifactId=ROOT" "-DarchetypeArtifactId=maven-archetype-webapp" "-DinteractiveMode=false"
   ```

   En cas de réussite, cette structure de répertoire et ces fichiers sont créés.

   ```
   .
   └── ROOT
       ├── pom.xml
       └── src
           └── main
               ├── resources
               └── webapp
                   ├── WEB-INF
                   │   └── web.xml
                   └── index.jsp
   ```

1. Créez un fichier nommé `buildspec.yml` avec les contenus suivants. Stockez le fichier dans le répertoire ` (root directory name)/my-web-app`. 

   ```
   version: 0.2
   
   phases:
     install:
       runtime-versions:
         java: corretto8
     build:
       commands:
         - java -version
         - mvn package
   artifacts:
     files:
       - '**/*'
     base-directory: 'target/my-web-app'
   ```

   Dans le fichier buildspec : 
   + La section `runtime-versions` spécifie que le projet utilise la version 8 de l'environnement d'exécution Java. 
   + La commande `- java -version` affiche la version de Java utilisée par votre projet lors de la génération. 

   La structure de votre fichier devrait maintenant ressembler à ceci. 

   ```
   (root directory name)
   └── my-web-app
       ├── src
       │   ├── main
       │   ├── resources
       │   └── webapp
       │       └── WEB-INF
       │           └── web.xml
       │               └── index.jsp
       ├── buildspec.yml
       └── pom.xml
   ```

1. Téléchargez le contenu du `my-web-app` répertoire dans un compartiment d'entrée S3 ou un CodeCommit référentiel Bitbucket. GitHub 
**Important**  
Ne chargez pas `(root directory name)` ou `(root directory name)/my-web-app`, mais seulement les répertoires et les fichiers de `(root directory name)/my-web-app`.   
Si vous utilisez un compartiment d'entrée S3, veillez à créer un fichier ZIP qui contient la structure de répertoire et les fichiers, puis chargez ce fichier dans le compartiment d'entrée. N'ajoutez pas `(root directory name)` ou `(root directory name)/my-web-app` au fichier ZIP, mais seulement les répertoires et les fichiers de `(root directory name)/my-web-app`.

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Créez un projet de génération. Pour plus d’informations, consultez [Création d'un projet de génération (console)](create-project.md#create-project-console) et [Exécution d'une génération (console)](run-build-console.md). Laissez tous les paramètres avec leurs valeurs par défaut, sauf pour ces paramètres.
   + Pour **Environnement** :
     + Pour **Image d'environnement**, choisissez **Managed image (Image gérée)**.
     + Pour **Operating system (Système d'exploitation)**, choisissez **Amazon Linux 2**. 
     +  Pour **Runtime(s) (Exécution(s))**, sélectionnez **Standard**. 
     + Pour **Image**, choisissez **aws/codebuild/amazonlinux-x86\$164-standard:4.0**.

1. Choisissez **Démarrer la génération**. 

1. Dans **Configuration de la génération**, acceptez les valeurs par défaut, puis choisissez **Démarrer la génération**. 

1. Une fois que la génération est terminée, affichez sa sortie dans l'onglet **Journaux de génération**. Vous devez voir des résultats similaires à ce qui suit : 

   ```
   [Container] Date Time Phase is DOWNLOAD_SOURCE
   [Container] Date Time CODEBUILD_SRC_DIR=/codebuild/output/src460614277/src
   [Container] Date Time YAML location is /codebuild/output/src460614277/src/buildspec.yml
   [Container] Date Time Processing environment variables
   [Container] Date Time Selecting 'java' runtime version 'corretto8' based on manual selections...
   [Container] Date Time Running command echo "Installing Java version 8 ..."
   Installing Java version 8 ... 
    
   [Container] Date Time Running command export JAVA_HOME="$JAVA_8_HOME" 
    
   [Container] Date Time Running command export JRE_HOME="$JRE_8_HOME" 
    
   [Container] Date Time Running command export JDK_HOME="$JDK_8_HOME" 
    
   [Container] Date Time Running command for tool_path in "$JAVA_8_HOME"/bin/* "$JRE_8_HOME"/bin/*;
   ```

1. Mise à jour de la section `runtime-versions`avec Java version 11 : 

   ```
   install:
       runtime-versions:
         java: corretto11
   ```

1. Une fois que vous avez enregistré la modification, réexécutez votre génération et affichez sa sortie. Vous devez voir que la version installée de Java est la version 11. Vous devez voir des résultats similaires à ce qui suit : 

   ```
   [Container] Date Time Phase is DOWNLOAD_SOURCE
   [Container] Date Time CODEBUILD_SRC_DIR=/codebuild/output/src460614277/src
   [Container] Date Time YAML location is /codebuild/output/src460614277/src/buildspec.yml
   [Container] Date Time Processing environment variables
   [Container] Date Time Selecting 'java' runtime version 'corretto11' based on manual selections... 
   Installing Java version 11 ... 
    
   [Container] Date Time Running command export JAVA_HOME="$JAVA_11_HOME" 
    
   [Container] Date Time Running command export JRE_HOME="$JRE_11_HOME" 
    
   [Container] Date Time Running command export JDK_HOME="$JDK_11_HOME" 
    
   [Container] Date Time Running command for tool_path in "$JAVA_11_HOME"/bin/* "$JRE_11_HOME"/bin/*;
   ```

# Spécification de deux environnements d'exécution
<a name="sample-runtime-two-major-version-runtimes"></a>

Vous pouvez spécifier plusieurs environnements d'exécution dans le même projet de CodeBuild construction. Cet exemple de projet utilise deux fichiers sources : l'un qui utilise l'environnement d'exécution Go et l'autre qui utilise l'environnement d'exécution Node.js. 

1. Créez un répertoire nommé `my-source`. 

1. Dans le répertoire `my-source`, créez un répertoire nommé `golang-app`. 

1. Créez un fichier nommé `hello.go` avec les contenus suivants. Stockez le fichier dans le répertoire `golang-app`. 

   ```
   package main
   import "fmt"
   
   func main() {
     fmt.Println("hello world from golang")
     fmt.Println("1+1 =", 1+1)
     fmt.Println("7.0/3.0 =", 7.0/3.0)
     fmt.Println(true && false)
     fmt.Println(true || false)
     fmt.Println(!true)
     fmt.Println("good bye from golang")
   }
   ```

1. Dans le répertoire `my-source`, créez un répertoire nommé `nodejs-app`. Il doit être au même niveau que le répertoire `golang-app`. 

1. Créez un fichier nommé `index.js` avec les contenus suivants. Stockez le fichier dans le répertoire `nodejs-app`. 

   ```
   console.log("hello world from nodejs");
   console.log("1+1 =" + (1+1));
   console.log("7.0/3.0 =" + 7.0/3.0);
   console.log(true && false);
   console.log(true || false);
   console.log(!true);
   console.log("good bye from nodejs");
   ```

1. Créez un fichier nommé `package.json` avec les contenus suivants. Stockez le fichier dans le répertoire `nodejs-app`. 

   ```
   {
     "name": "mycompany-app",
     "version": "1.0.0",
     "description": "",
     "main": "index.js",
     "scripts": {
       "test": "echo \"run some tests here\""
     },
     "author": "",
     "license": "ISC"
   }
   ```

1. Créez un fichier nommé `buildspec.yml` avec les contenus suivants. Stockez le fichier dans le répertoire `my-source`, au même niveau que les répertoires `nodejs-app` et `golang-app`. La `runtime-versions` section spécifie les environnements d'exécution de Node.js version 12 et Go version 1.13. 

   ```
   version: 0.2
   
   phases:
     install:
       runtime-versions:
         golang: 1.13
         nodejs: 12
     build:
       commands:
         - echo Building the Go code...
         - cd $CODEBUILD_SRC_DIR/golang-app
         - go build hello.go 
         - echo Building the Node code...
         - cd $CODEBUILD_SRC_DIR/nodejs-app
         - npm run test
   artifacts:
     secondary-artifacts:
       golang_artifacts:
         base-directory: golang-app
         files:
           - hello
       nodejs_artifacts:
         base-directory: nodejs-app
         files:
           - index.js
           - package.json
   ```

1. La structure de votre fichier devrait maintenant ressembler à ceci. 

   ```
   my-source
   ├── golang-app
   │   └── hello.go
   ├── nodejs.app
   │   ├── index.js
   │   └── package.json
   └── buildspec.yml
   ```

1. Téléchargez le contenu du `my-source` répertoire dans un compartiment d'entrée S3 ou un CodeCommit référentiel Bitbucket. GitHub
**Important**  
 Si vous utilisez un compartiment d'entrée S3, veillez à créer un fichier ZIP qui contient la structure de répertoire et les fichiers, puis chargez ce fichier dans le compartiment d'entrée. N'ajoutez pas `my-source` au fichier ZIP, mais seulement les répertoires et les fichiers dans `my-source`.

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Créez un projet de génération. Pour plus d’informations, consultez [Création d'un projet de génération (console)](create-project.md#create-project-console) et [Exécution d'une génération (console)](run-build-console.md). Laissez tous les paramètres avec leurs valeurs par défaut, sauf pour ces paramètres.
   + Pour **Environnement** :
     + Pour **Image d'environnement**, choisissez **Managed image (Image gérée)**.
     + Pour **Operating system (Système d'exploitation)**, choisissez **Amazon Linux 2**.
     + Pour **Runtime(s) (Exécution(s))**, sélectionnez **Standard**.
     + Pour **Image**, choisissez **aws/codebuild/amazonlinux-x86\$164-standard:4.0**.

1. Choisissez **Créer un projet de génération**. 

1. Choisissez **Démarrer la génération**. 

1. Dans **Configuration de la génération**, acceptez les valeurs par défaut, puis choisissez **Démarrer la génération**. 

1. Une fois que la génération est terminée, affichez sa sortie dans l'onglet **Journaux de génération**. Vous devez visualiser des résultats similaires à ce qui suit. Ils montrent la sortie des environnements d'exécution Go et Node.js. Ils montrent également la sortie des applications Go et Node.js. 

   ```
   [Container] Date Time Processing environment variables
   [Container] Date Time Selecting 'golang' runtime version '1.13' based on manual selections...
   [Container] Date Time Selecting 'nodejs' runtime version '12' based on manual selections...
   [Container] Date Time Running command echo "Installing Go version 1.13 ..."
   Installing Go version 1.13 ... 
    
   [Container] Date Time Running command echo "Installing Node.js version 12 ..." 
   Installing Node.js version 12 ... 
    
   [Container] Date Time Running command n $NODE_12_VERSION
      installed : v12.20.1 (with npm 6.14.10)
   
   [Container] Date Time Moving to directory /codebuild/output/src819694850/src
   [Container] Date Time Registering with agent
   [Container] Date Time Phases found in YAML: 2
   [Container] Date Time  INSTALL: 0 commands
   [Container] Date Time  BUILD: 1 commands
   [Container] Date Time Phase complete: DOWNLOAD_SOURCE State: SUCCEEDED
   [Container] Date Time Phase context status code:  Message:
   [Container] Date Time Entering phase INSTALL
   [Container] Date Time Phase complete: INSTALL State: SUCCEEDED
   [Container] Date Time Phase context status code:  Message:  
   [Container] Date Time Entering phase PRE_BUILD 
   [Container] Date Time Phase complete: PRE_BUILD State: SUCCEEDED 
   [Container] Date Time Phase context status code:  Message:  
   [Container] Date Time Entering phase BUILD 
   [Container] Date Time Running command echo Building the Go code... 
   Building the Go code... 
    
   [Container] Date Time Running command cd $CODEBUILD_SRC_DIR/golang-app 
    
   [Container] Date Time Running command go build hello.go 
    
   [Container] Date Time Running command echo Building the Node code... 
   Building the Node code... 
    
   [Container] Date Time Running command cd $CODEBUILD_SRC_DIR/nodejs-app 
    
   [Container] Date Time Running command npm run test 
    
   > mycompany-app@1.0.0 test /codebuild/output/src924084119/src/nodejs-app 
   > echo "run some tests here" 
    
   run some tests here
   ```

# Exemple de version source avec AWS CodeBuild
<a name="sample-source-version"></a>

 Cet exemple illustre la façon de spécifier une version de votre code source à l'aide d'un format autre qu'un ID de validation (également connu sous le nom de SHA de validation). Vous pouvez spécifier la version de votre source de différentes manières : 
+  Pour un fournisseur de source Amazon S3, utilisez l'ID de version de l'objet qui représente le fichier ZIP d'entrée de compilation. 
+  Pour CodeCommit Bitbucket et GitHub Enterprise Server GitHub, utilisez l'une des options suivantes : 
  +  Demande d’extraction en tant que référence de demande d'extraction (par exemple, `refs/pull/1/head`). 
  +  Branche en tant que nom de branche. 
  +  ID de validation. 
  +  Balise. 
  +  Référence et identifiant de validation. La référence peut être l'une des suivantes :
    +  Une balise (par exemple, `refs/tags/mytagv1.0^{full-commit-SHA}`). 
    +  Une branche (par exemple, `refs/heads/mydevbranch^{full-commit-SHA}`). 
    +  Une demande d'extraction (par exemple, `refs/pull/1/head^{full-commit-SHA}`). 
+  Pour GitLab et GitLab Autogéré, utilisez l'une des options suivantes : 
  +  Branche en tant que nom de branche. 
  +  ID de validation. 
  +  Balise. 

**Note**  
 Vous pouvez spécifier la version d'une source de pull request uniquement si votre référentiel est GitHub GitHub Enterprise Server. 

 Si vous utilisez une référence et un ID de validation pour spécifier une version, la phase `DOWNLOAD_SOURCE` de la génération est plus rapide que si vous indiquez uniquement la version. En effet, lorsque vous ajoutez une référence, il CodeBuild n'est pas nécessaire de télécharger l'intégralité du référentiel pour trouver le commit. 
+ Vous pouvez spécifier une version source avec seulement un ID de validation, par exemple `12345678901234567890123467890123456789`. Dans ce cas, vous CodeBuild devez télécharger l'intégralité du référentiel pour trouver la version.
+ Vous pouvez spécifier une version source avec une référence et un ID de validation dans ce format : `refs/heads/branchname^{full-commit-SHA}` (par exemple, `refs/heads/main^{12345678901234567890123467890123456789}`). Dans ce cas, CodeBuild télécharge uniquement la branche spécifiée pour trouver la version.

**Note**  
Pour accélérer la `DOWNLOAD_SOURCE` phase de votre build, vous pouvez également définir la **profondeur de clonage de Git** à un faible nombre. CodeBuild télécharge moins de versions de votre dépôt.

**Topics**
+ [Spécifiez une version de GitHub référentiel avec un ID de validation](sample-source-version-github.md)
+ [Spécifiez une version GitHub du référentiel avec une référence et un ID de validation](sample-source-version-github-ref.md)

# Spécifiez une version de GitHub référentiel avec un ID de validation
<a name="sample-source-version-github"></a>

Vous pouvez spécifier une version source avec seulement un ID de validation, par exemple `12345678901234567890123467890123456789`. Dans ce cas, vous CodeBuild devez télécharger l'intégralité du référentiel pour trouver la version.

**Pour spécifier une version de GitHub référentiel avec un ID de validation**

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Créez un projet de génération. Pour plus d’informations, consultez [Création d'un projet de génération (console)](create-project.md#create-project-console) et [Exécution d'une génération (console)](run-build-console.md). Laissez tous les paramètres avec leurs valeurs par défaut, sauf pour les paramètres suivants.
   +  Dans **Source**: 
     +  Dans le **champ Source provider**, sélectionnez **GitHub**. Si vous n'êtes pas connecté à GitHub, suivez les instructions pour vous connecter. 
     +  Pour **Repository (Référentiel)**, choisissez **Public repository (Référentiel public)**. 
     +  Pour **Repository URL (URL du référentiel)**, saisissez **https://github.com/aws/aws-sdk-ruby.git** 
   + Dans **Environment (Environnement)** :
     + Pour **Image d'environnement**, choisissez **Managed image (Image gérée)**.
     + Pour **Operating system (Système d'exploitation)**, choisissez **Amazon Linux 2**.
     + Pour **Runtime(s) (Exécution(s))**, sélectionnez **Standard**.
     + Pour **Image**, choisissez **aws/codebuild/amazonlinux-x86\$164-standard:4.0**.

1.  Pour **Build spécification (Spécifications de génération)**, choisissez **Insérer des commandes de génération**, puis choisissez **Switch to editor (Passer à l'éditeur)**. 

1.  Dans **Build commands (Commandes de génération)**, remplacez le texte de l'espace réservé par ce qui suit : 

   ```
   version: 0.2
   
   phases:
     install:
       runtime-versions:
         ruby: 2.6
     build:
       commands:
          - echo $CODEBUILD_RESOLVED_SOURCE_VERSION
   ```

    La section `runtime-versions` est obligatoire lorsque vous utilisez l'image standard Ubuntu 2.0. Ici, la version Ruby 2.6 de l'exécution est spécifiée, mais vous pouvez utiliser n'importe quelle exécution. La commande `echo` affiche la version du code source stocké dans la variable d'environnement `CODEBUILD_RESOLVED_SOURCE_VERSION`. 

1.  Dans **Configuration de la génération**, acceptez les valeurs par défaut, puis choisissez **Démarrer la génération**. 

1.  Pour **Version de la source**, saisissez **046e8b67481d53bdc86c3f6affdd5d1afae6d369**. Il s'agit du SHA d'une validation dans le référentiel `https://github.com/aws/aws-sdk-ruby.git`. 

1.  Choisissez **Démarrer la génération**. 

1.  Une fois la génération terminée, vous devez voir ce qui suit : 
   +  Sur l’onglet **Journaux de génération**, la version de la source du projet qui a été utilisée. Voici un exemple.

     ```
     [Container] Date Time Running command echo $CODEBUILD_RESOLVED_SOURCE_VERSION 
     046e8b67481d53bdc86c3f6affdd5d1afae6d369
      
     [Container] Date Time Phase complete: BUILD State: SUCCEEDED
     ```
   +  Sur l’onglet **Variables d'environnement**, **Resolved source version (Version de source résolue)** correspond à l’ID de validation utilisé pour créer la validation. 
   +  Sur l'onglet **Détail de la phase**, la durée de la phase `DOWNLOAD_SOURCE`. 

# Spécifiez une version GitHub du référentiel avec une référence et un ID de validation
<a name="sample-source-version-github-ref"></a>

Vous pouvez spécifier une version source avec une référence et un ID de validation dans ce format : `refs/heads/branchname^{full-commit-SHA}` (par exemple, `refs/heads/main^{12345678901234567890123467890123456789}`). Dans ce cas, CodeBuild télécharge uniquement la branche spécifiée pour trouver la version.

**Pour spécifier une version de GitHub référentiel avec une référence et un ID de validation.**

1. Suivez les étapes de [Spécifiez une version de GitHub référentiel avec un ID de validation](sample-source-version-github.md).

1.  Dans le volet de navigation de gauche, choisissez **Projets de génération**, puis choisissez le projet que vous avez créé précédemment. 

1.  Choisissez **Démarrer la génération**. 

1.  Dans **Version de la source**, saisissez **refs/heads/main^\$1046e8b67481d53bdc86c3f6affdd5d1afae6d369\$1**. Il s'agit du même ID de validation et d’une référence à une branche dans le format `refs/heads/branchname^{full-commit-SHA}`. 

1.  Choisissez **Démarrer la génération**. 

1. Une fois la génération terminée, vous devez voir ce qui suit : 
   +  Sur l’onglet **Journaux de génération**, la version de la source du projet qui a été utilisée. Voici un exemple.

     ```
     [Container] Date Time Running command echo $CODEBUILD_RESOLVED_SOURCE_VERSION 
     046e8b67481d53bdc86c3f6affdd5d1afae6d369
      
     [Container] Date Time Phase complete: BUILD State: SUCCEEDED
     ```
   +  Sur l’onglet **Variables d'environnement**, **Resolved source version (Version de source résolue)** correspond à l’ID de validation utilisé pour créer la validation. 
   +  Sur l'onglet Détails de **Détail de la phase**, la durée de la phase `DOWNLOAD_SOURCE` doit être inférieure à la durée lorsque vous avez utilisé uniquement l'ID de validation pour spécifier la version de votre code source.

# Exemples de référentiels sources tiers pour CodeBuild
<a name="sample-third-party-source"></a>

Cette section décrit des exemples d'intégrations entre des référentiels sources tiers et. CodeBuild


| Exemple | Description | 
| --- | --- | 
|  BitBucket exemple de pull request et de filtre Webhook — voir [Exécutez l'exemple « Bitbucket pull request and webhook filter » pour CodeBuild](sample-bitbucket-pull-request.md)  |  Cet exemple vous montre comment créer une demande d'extraction à l'aide d'un référentiel Bitbucket. Il vous montre également comment utiliser un webhook Bitbucket de manière à déclencher CodeBuild pour créer une génération de projet.  | 
|  GitHub Exemple de serveur d'entreprise — voir [Exécutez l'exemple de serveur d' GitHub entreprise pour CodeBuild](sample-github-enterprise.md)  |  Cet exemple explique comment configurer vos CodeBuild projets lorsqu'un certificat est installé dans votre référentiel GitHub Enterprise Server. Il montre également comment activer les webhooks afin de CodeBuild recompiler le code source chaque fois qu'une modification de code est transmise à votre référentiel GitHub Enterprise Server.  | 
|  GitHub exemple de pull request et de filtre Webhook — voir [Exécutez l'exemple de GitHub pull request et de filtre webhook pour CodeBuild](sample-github-pull-request.md)  |  Cet exemple explique comment créer une pull request à l'aide d'un référentiel GitHub Enterprise Server. Il montre également comment activer les webhooks afin de CodeBuild recompiler le code source chaque fois qu'une modification de code est transmise à votre référentiel GitHub Enterprise Server.  | 

# Exécutez l'exemple « Bitbucket pull request and webhook filter » pour CodeBuild
<a name="sample-bitbucket-pull-request"></a>

AWS CodeBuild prend en charge les webhooks lorsque le référentiel source est Bitbucket. Cela signifie que pour un projet de CodeBuild compilation dont le code source est stocké dans un dépôt Bitbucket, les webhooks peuvent être utilisés pour reconstruire le code source chaque fois qu'une modification de code est envoyée au référentiel. Pour de plus amples informations, veuillez consulter [Événements du webhook Bitbucket](bitbucket-webhook.md). 

Cet exemple vous montre comment créer une demande d'extraction à l'aide d'un référentiel Bitbucket. Il vous montre également comment utiliser un webhook Bitbucket pour déclencher la création CodeBuild d'une version d'un projet.

**Note**  
Lors de l'utilisation de webhooks, il est possible pour un utilisateur de déclencher une compilation inattendue. Pour atténuer ce risque, voir[Bonnes pratiques d'utilisation des webhooks](webhooks.md#webhook-best-practices).

**Topics**
+ [Conditions préalables](#sample-bitbucket-pull-request-prerequisites)
+ [Étape 1 : créer un projet de build avec Bitbucket et activer les webhooks](#sample-bitbucket-pull-request-create)
+ [Étape 2 : Déclencher un build avec un webhook Bitbucket](#sample-bitbucket-pull-request-trigger)

## Conditions préalables
<a name="sample-bitbucket-pull-request-prerequisites"></a>

 Pour exécuter cet exemple, vous devez connecter votre AWS CodeBuild projet à votre compte Bitbucket. 

**Note**  
 CodeBuild a mis à jour ses autorisations avec Bitbucket. Si vous avez précédemment connecté votre projet à Bitbucket et que vous recevez maintenant une erreur de connexion Bitbucket, vous devez vous reconnecter pour CodeBuild autoriser la gestion de vos webhooks. 

## Étape 1 : créer un projet de build avec Bitbucket et activer les webhooks
<a name="sample-bitbucket-pull-request-create"></a>

 Les étapes suivantes décrivent comment créer un AWS CodeBuild projet avec Bitbucket comme référentiel source et comment activer les webhooks. 

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Si une page CodeBuild d'informations s'affiche, choisissez **Créer un projet de construction**. Sinon, dans le volet de navigation, développez **Build****, choisissez Build projects**, puis **Create build project**. 

1. Choisissez **Créer un projet de génération**. 

1. Dans **Configuration de projet** :  
**Nom du projet**  
Entrez un nom pour ce projet de construction. Les noms des projets de construction doivent être uniques pour chaque AWS compte. Vous pouvez également inclure une description facultative du projet de construction pour aider les autres utilisateurs à comprendre à quoi sert ce projet.

1. Dans **Source**:  
**Fournisseur de source**  
Choisissez **Bitbucket.** **Suivez les instructions pour vous connecter (ou vous reconnecter) à Bitbucket, puis choisissez Autoriser.**  
**Référentiel**  
Choisissez **Repository dans mon compte Bitbucket.**  
Si vous n'êtes pas encore connecté à votre compte Bitbucket, entrez votre nom d'utilisateur Bitbucket et le mot de passe de l'application, puis sélectionnez **Enregistrer les informations d'identification Bitbucket**.  
**Référentiel Bitbucket**  
Entrez l'URL de votre dépôt Bitbucket.

1. Dans **Événements webhook de la source principale**, sélectionnez ce qui suit. 
**Note**  
La section des **événements du webhook de la source principale** n'est visible que si vous avez choisi **Repository in my Bitbucket account** à l'étape précédente.

   1. Sélectionnez **Rebuild every time a code change is pushed to this repository (Reconstruire à chaque fois qu'une modification de code est transférée dans ce référentiel)** lorsque vous créez votre projet. 

   1. Dans **Event type (Type d'événement)**, choisissez un ou plusieurs événements. 

   1. Pour filtrer le moment où un événement déclenche une génération, sous **Start a build under these conditions (Lancer une génération dans ces conditions)**, ajoutez un ou plusieurs filtres facultatifs. 

   1. Pour filtrer le moment où un événement n'est pas déclenché, sous **Don't start a build under these conditions (Ne pas lancer de génération dans ces conditions)**, ajoutez un ou plusieurs filtres facultatifs. 

   1. Choisissez **Ajouter un groupe de filtres** pour ajouter un autre groupe de filtres, si nécessaire. 

   Pour plus d'informations sur les types d'événements et les filtres Bitbucket Webhook, consultez. [Événements du webhook Bitbucket](bitbucket-webhook.md)

1. Dans **Environment (Environnement)** :  
**Image de l'environnement**  
Sélectionnez l’une des méthodes suivantes :    
Pour utiliser une image Docker gérée par AWS CodeBuild :  
Choisissez **Image gérée**, puis sélectionnez **Système d'exploitation**, **Runtime (s)**, **Image** et **Version de l'image**. Effectuez votre sélection pour **Type d'environnement** si cette option est disponible.  
Pour utiliser une autre image Docker :  
Choisissez **Image personnalisée**. Pour le **type d'environnement**, choisissez **ARM**, **Linux****, Linux GPU** ou **Windows**. Si vous choisissez **Other registry (Autre registre)**, pour **External registry URL (URL du registre externe)**, entrez le nom et la balise de l'image Docker dans Docker Hub au format `docker repository/docker image name`. Si vous choisissez **Amazon ECR**, utilisez le **référentiel Amazon ECR** et l'image **Amazon ECR pour choisir l'image** Docker dans votre compte. AWS   
Pour utiliser une image Docker privée :  
Choisissez **Image personnalisée**. Pour le **type d'environnement**, choisissez **ARM**, **Linux****, Linux GPU** ou **Windows**. Pour **Image registry (Registre de l'image)**, choisissez **Other registry (Autre registre)** et entrez l'ARN des informations d'identification de votre image Docker privée. Les informations d'identification doivent être créées par Secrets Manager. Pour plus d'informations, voir [Qu'est-ce que c'est AWS Secrets Manager ?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) dans le *guide de AWS Secrets Manager l'utilisateur*.  
**Rôle de service**  
Sélectionnez l’une des méthodes suivantes :  
   + Si vous n'avez pas de rôle CodeBuild de service, choisissez **Nouveau rôle de service**. Dans **Role name**, entrez un nom pour le nouveau rôle.
   + Si vous avez un rôle CodeBuild de service, choisissez **Rôle de service existant**. Dans **Role ARN**, choisissez le rôle de service.
Lorsque vous utilisez la console pour créer ou mettre à jour un projet de génération, vous pouvez créer un rôle de CodeBuild service en même temps. Par défaut, le rôle fonctionne avec ce projet de génération uniquement. Si vous utilisez la console pour associer ce rôle de service à un autre projet de génération, le rôle est mis à jour pour fonctionner avec l'autre projet de génération. Un rôle de service peut fonctionner avec 10 projets de génération maximum.

1. Dans **Buildspec, effectuez** l'une des opérations suivantes :
   + Choisissez **Utiliser un fichier buildspec pour utiliser le fichier** buildspec.yml dans le répertoire racine du code source.
   + Choisissez **Insérer des commandes** de génération pour utiliser la console pour insérer des commandes de génération.

   Pour de plus amples informations, veuillez consulter [Référence des spécifications de génération](build-spec-ref.md).

1. Dans **Artefacts**:  
**Type**  
Sélectionnez l’une des méthodes suivantes :  
   + Si vous ne souhaitez pas créer d'artefacts de sortie de génération, choisissez **Aucun artefact**.
   + Pour stocker le résultat du build dans un compartiment S3, choisissez **Amazon S3**, puis procédez comme suit :
     + Si vous souhaitez utiliser votre nom de projet pour le dossier ou le fichier ZIP de sortie de génération, ne renseignez pas le champ **Nom**. Sinon, entrez le nom. Par défaut, le nom d'un artefact est le nom du projet. Si vous souhaitez utiliser un autre nom, entrez-le dans la zone Nom des artefacts. Si vous souhaitez générer un fichier ZIP, incluez l'extension zip.
     + Pour **Nom du compartiment**, choisissez le nom du compartiment de sortie.
     + Si vous avez sélectionné **Insérer des commandes de génération** précédemment dans cette procédure, pour **Fichiers de sortie**, saisissez les emplacements des fichiers de la génération que vous souhaitez placer dans le dossier ou le fichier ZIP de sortie de génération. Pour plusieurs emplacements, séparez ceux-ci avec une virgule (par exemple, `appspec.yml, target/my-app.jar`). Pour de plus amples informations, consultez la description de `files` dans [Syntaxe d'un fichier buildspec](build-spec-ref.md#build-spec-ref-syntax).  
**Configuration supplémentaire**  
Développez **Additional configuration (Configuration supplémentaire)** et définissez les options dont vous avez besoin.

1. Choisissez **Créer un projet de génération**. Sur la page **Révision**, choisissez **Démarrer la génération** pour exécuter la génération.

## Étape 2 : Déclencher un build avec un webhook Bitbucket
<a name="sample-bitbucket-pull-request-trigger"></a>

Pour un projet qui utilise des webhooks Bitbucket, AWS CodeBuild crée une version lorsque le référentiel Bitbucket détecte une modification dans votre code source. 

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Dans le volet de navigation, choisissez **Projets de génération**, puis sélectionnez un projet associés à un référentiel Bitbucket avec webhooks. Pour plus d'informations sur la création d'un projet Webhook Bitbucket, consultez. [Étape 1 : créer un projet de build avec Bitbucket et activer les webhooks](#sample-bitbucket-pull-request-create) 

1. Modifiez le code du référentiel Bitbucket de votre projet. 

1. Créez une demande d'extraction sur votre référentiel Bitbucket. Pour de plus amples informations, veuillez consulter des informations sur la [création d'une demande d'extraction](https://www.atlassian.com/git/tutorials/making-a-pull-request). 

1. Dans la page des webhooks Bitbucket, choisissez **View request (Afficher la demande)** pour afficher la liste des événements récents. 

1. Choisissez **Afficher les détails** pour voir les détails de la réponse renvoyée par CodeBuild. Elle peut ressembler à ceci : 

   ```
   "response":"Webhook received and build started: https://us-east-1.console.aws.amazon.com/codebuild/home..."
   "statusCode":200
   ```

1. Accédez à la page de demande d'extraction Bitbucket pour voir le statut de la génération. 

# Exécutez l'exemple de serveur d' GitHub entreprise pour CodeBuild
<a name="sample-github-enterprise"></a>

AWS CodeBuild prend en charge GitHub Enterprise Server en tant que référentiel source. Cet exemple montre comment configurer vos CodeBuild projets lorsqu'un certificat est installé dans votre référentiel GitHub Enterprise Server. Il montre également comment activer les webhooks afin de CodeBuild recompiler le code source chaque fois qu'une modification de code est transmise à votre référentiel GitHub Enterprise Server.

**Topics**
+ [Conditions préalables](#sample-github-enterprise-prerequisites)
+ [Étape 1 : créer un projet de build avec GitHub Enterprise Server et activer les webhooks](#sample-github-enterprise-running)

## Conditions préalables
<a name="sample-github-enterprise-prerequisites"></a>

1. Générez un jeton d'accès personnel pour votre CodeBuild projet. Nous vous recommandons de créer un utilisateur GitHub Enterprise et de générer un jeton d'accès personnel pour cet utilisateur. Copiez-le dans votre presse-papiers afin de pouvoir l'utiliser lors de la création de votre CodeBuild projet. Pour plus d'informations, consultez la section [Création d'un jeton d'accès personnel pour la ligne de commande](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) sur le site Web d' GitHub aide.

   Lorsque vous créez le jeton d'accès personnel, incluez la portée du **référentiel** dans la définition.  
![\[La portée du dépôt dans la définition.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/scopes.png)

1. Téléchargez votre certificat depuis GitHub Enterprise Server. CodeBuild utilise le certificat pour établir une connexion SSL fiable avec le référentiel.

   **Clients Linux/macOS :**

   À partir d'une fenêtre de terminal , exécutez la commande suivante :

   ```
   echo -n | openssl s_client -connect HOST:PORTNUMBER \
       | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /folder/filename.pem
   ```

   Remplacez les espaces réservés de la commande par les valeurs suivantes :

   *HOST*. Adresse IP de votre référentiel GitHub Enterprise Server.

   *PORTNUMBER*. Le numéro de port que vous utilisez pour vous connecter (par exemple, 443).

   *folder*. Le dossier dans lequel vous avez téléchargé votre certificat.

   *filename*. Le nom de fichier de votre fichier de certificat.
**Important**  
Enregistrez le certificat en tant que fichier .pem.

   **Clients Windows:**

   Utilisez votre navigateur pour télécharger votre certificat depuis GitHub Enterprise Server. Pour afficher les détails de certificat du site, choisissez l'icône en forme de cadenas. Pour plus d'informations sur la manière d'exporter le certificat, consultez la documentation de votre navigateur.
**Important**  
Enregistrez le certificat en tant que fichier .pem.

1. Chargez votre fichier de certificat dans un compartiment S3. Pour de plus amples informations sur la façon de créer un compartiment S3, veuillez consulter [Comment créer un compartiment S3 ?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) Pour de plus amples informations sur le chargement d'objets dans un compartiment S3, veuillez consulter [Comment charger des fichiers ou dossiers vers un compartiment ?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)
**Note**  
Ce compartiment doit 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), le bucket doit se trouver dans la région USA Est (Ohio).

## Étape 1 : créer un projet de build avec GitHub Enterprise Server et activer les webhooks
<a name="sample-github-enterprise-running"></a>

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Si une page CodeBuild d'informations s'affiche, choisissez **Créer un projet de construction**. Sinon, dans le volet de navigation, développez **Build****, choisissez Build projects**, puis **Create build project**. 

1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération. Les noms des projets de construction doivent être uniques pour chaque AWS compte. Vous pouvez également inclure une description facultative du projet de construction pour aider les autres utilisateurs à comprendre à quoi sert ce projet.

1. Dans **Source**, dans **Source provider**, choisissez **GitHub Enterprise Server**.
   + Choisissez **Gérer les informations d'identification du compte**, puis sélectionnez **Jeton d'accès personnel**. Pour **Service**, choisissez **Secrets Manager (recommandé)** et configurez votre secret. Ensuite**, dans Jeton d'accès personnel GitHub Enterprise**, entrez votre jeton d'accès personnel et choisissez **Enregistrer**.
   + Dans **URL du référentiel**, saisissez le chemin d'accès à votre référentiel, y compris le nom du référentiel.
   + Développez **Additional configuration (Configuration supplémentaire)**.
   + Sélectionnez **Rebuild every time a code change is pushed to this repository (Regénérer chaque fois qu'une modification de code est transmise à ce référentiel)** pour regénérer chaque fois qu'une modification de code est transmise à ce référentiel.
   + Sélectionnez **Activer le protocole SSL non sécurisé** pour ignorer les avertissements SSL lorsque vous vous connectez au référentiel de votre projet GitHub Enterprise Server.
**Note**  
Nous vous recommandons d'utiliser **Insecure SSL (SSL non sécurisé)** uniquement pour les tests. Cette option ne doit pas être utilisée dans un environnement de production.  
![\[Configuration du référentiel du projet GitHub Enterprise Server.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/github-enterprise.png)

1. Dans **Environment (Environnement)** :

   Pour **Image d'environnement**, effectuez l'une des actions suivantes :
   + Pour utiliser une image Docker gérée par AWS CodeBuild, choisissez **Image gérée**, puis sélectionnez **Système d'exploitation**, **Runtime (s)**, **Image** et **Version de l'image**. Effectuez votre sélection pour **Type d'environnement** si cette option est disponible.
   + Pour utiliser une autre image Docker, choisissez **Image personnalisée**. Pour le **type d'environnement**, choisissez **ARM**, **Linux****, Linux GPU** ou **Windows**. Si vous choisissez **Other registry (Autre registre)**, pour **External registry URL (URL du registre externe)**, entrez le nom et la balise de l'image Docker dans Docker Hub au format `docker repository/docker image name`. Si vous choisissez **Amazon ECR**, utilisez le **référentiel Amazon ECR** et l'image **Amazon ECR pour choisir l'image** Docker dans votre compte. AWS 
   + Pour utiliser une image Docker privée, choisissez **Image personnalisée**. Pour le **type d'environnement**, choisissez **ARM**, **Linux****, Linux GPU** ou **Windows**. Pour **Image registry (Registre de l'image)**, choisissez **Other registry (Autre registre)** et entrez l'ARN des informations d'identification de votre image Docker privée. Les informations d'identification doivent être créées par Secrets Manager. Pour plus d'informations, consultez [Présentation de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) dans le *Guide de l'utilisateur AWS Secrets Manager *.

1. Dans **Rôle du service**, sélectionnez l'une des options suivantes :
   + Si vous n'avez pas de rôle CodeBuild de service, choisissez **Nouveau rôle de service**. Dans **Role name**, entrez un nom pour le nouveau rôle.
   + Si vous avez un rôle CodeBuild de service, choisissez **Rôle de service existant**. Dans **Role ARN**, choisissez le rôle de service.
**Note**  
Lorsque vous utilisez la console pour créer ou mettre à jour un projet de génération, vous pouvez créer un rôle de CodeBuild service en même temps. Par défaut, le rôle fonctionne avec ce projet de génération uniquement. Si vous utilisez la console pour associer ce rôle de service à un autre projet de génération, le rôle est mis à jour pour fonctionner avec l'autre projet de génération. Un rôle de service peut fonctionner avec 10 projets de génération maximum.

1. Développez **Additional configuration (Configuration supplémentaire)**.

   Si vous souhaitez CodeBuild travailler avec votre VPC :
   + Pour le **VPC**, choisissez l'ID du VPC qui utilise. CodeBuild 
   + Pour les sous-réseaux **VPC, choisissez les sous-réseaux** qui incluent les ressources qui utilisent. CodeBuild 
   + Pour les **groupes de sécurité VPC**, choisissez les groupes de sécurité CodeBuild utilisés pour autoriser l'accès aux ressources du. VPCs

   Pour de plus amples informations, veuillez consulter [Utilisation AWS CodeBuild avec Amazon Virtual Private Cloud](vpc-support.md).

1. Dans **Buildspec, effectuez** l'une des opérations suivantes :
   + Choisissez **Utiliser un fichier buildspec pour utiliser le fichier** buildspec.yml dans le répertoire racine du code source.
   + Choisissez **Insérer des commandes** de génération pour utiliser la console pour insérer des commandes de génération.

   Pour de plus amples informations, veuillez consulter [Référence des spécifications de génération](build-spec-ref.md).

1. Dans **Artefacts**, pour **Type**, effectuez l'une des actions suivantes :
   + Si vous ne souhaitez pas créer d'artefacts de sortie de génération, choisissez **Aucun artefact**.
   + Pour stocker le résultat du build dans un compartiment S3, choisissez **Amazon S3**, puis procédez comme suit :
     + Si vous souhaitez utiliser votre nom de projet pour le dossier ou le fichier ZIP de sortie de génération, ne renseignez pas le champ **Nom**. Sinon, entrez le nom. Par défaut, le nom d'un artefact est le nom du projet. Si vous souhaitez utiliser un autre nom, entrez-le dans la zone Nom des artefacts. Si vous souhaitez générer un fichier ZIP, incluez l'extension zip.
     + Pour **Nom du compartiment**, choisissez le nom du compartiment de sortie.
     + Si vous avez sélectionné **Insérer des commandes de génération** précédemment dans cette procédure, pour **Fichiers de sortie**, saisissez les emplacements des fichiers de la génération que vous souhaitez placer dans le dossier ou le fichier ZIP de sortie de génération. Pour plusieurs emplacements, séparez ceux-ci avec une virgule (par exemple, `appspec.yml, target/my-app.jar`). Pour de plus amples informations, consultez la description de `files` dans [Syntaxe d'un fichier buildspec](build-spec-ref.md#build-spec-ref-syntax).

1. Pour **Cache type (Type de cache)**, choisissez l'une des valeurs suivantes :
   + Si vous ne souhaitez pas utiliser un cache, choisissez **Aucun cache**.
   + Si vous souhaitez utiliser un cache Amazon S3, choisissez **Amazon S3**, puis procédez comme suit :
     + Pour **Compartiment**, choisissez le nom du compartiment S3 dans lequel le cache est stocké.
     + (Facultatif) Pour **le préfixe de chemin du cache**, entrez un préfixe de chemin Amazon S3. La valeur **Cache path prefix (Préfixe du chemin de cache)** est semblable à un nom de répertoire. Cela vous permet de stocker le cache sous le même répertoire au sein d'un compartiment. 
**Important**  
N'ajoutez pas de barre oblique de fin (/) à la fin du préfixe du chemin.
   +  Si vous souhaitez utiliser un cache local, choisissez **Local**, puis sélectionnez une ou plusieurs modes de cache local. 
**Note**  
Le mode de cache de couche Docker est disponible pour Linux uniquement. Si vous choisissez ce mode, votre projet doit être exécuté en mode privilégié. 

   L'utilisation d'un cache permet de gagner beaucoup de temps de génération, car les parties réutilisables de l'environnement de génération sont stockées dans le cache et utilisées d'une génération à l'autre. Pour de plus amples informations sur la spécification d'un cache dans le fichier de spécification de génération, consultez [Syntaxe d'un fichier buildspec](build-spec-ref.md#build-spec-ref-syntax). Pour plus d'informations sur la mise en cache, consultez [Des mises en cache pour améliorer les performances](build-caching.md). 

1. Choisissez **Créer un projet de génération**. Sur la page de projet de génération, choisissez **Démarrer la génération**.

# Exécutez l'exemple de GitHub pull request et de filtre webhook pour CodeBuild
<a name="sample-github-pull-request"></a>

AWS CodeBuild prend en charge les webhooks lorsque le référentiel source l'est GitHub. Cela signifie que pour un projet de CodeBuild compilation dont le code source est stocké dans un GitHub référentiel, les webhooks peuvent être utilisés pour reconstruire le code source chaque fois qu'une modification de code est envoyée au référentiel. Pour CodeBuild des exemples, voir [AWS CodeBuild Échantillons](https://github.com/aws-samples/aws-codebuild-samples).

**Note**  
Lors de l'utilisation de webhooks, il est possible pour un utilisateur de déclencher une compilation inattendue. Pour atténuer ce risque, voir[Bonnes pratiques d'utilisation des webhooks](webhooks.md#webhook-best-practices).

**Topics**
+ [Étape 1 : créer un projet de construction avec GitHub et activer les webhooks](#sample-github-pull-request-running)
+ [Étape 2 : Vérifiez que les webhooks sont activés](#verification-checks)

## Étape 1 : créer un projet de construction avec GitHub et activer les webhooks
<a name="sample-github-pull-request-running"></a>

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Si une page CodeBuild d'informations s'affiche, choisissez **Créer un projet de construction**. Sinon, dans le volet de navigation, développez **Build****, choisissez Build projects**, puis **Create build project**. 

1. Choisissez **Créer un projet de génération**. 

1. Dans **Configuration de projet** :  
**Nom du projet**  
Entrez un nom pour ce projet de construction. Les noms des projets de construction doivent être uniques pour chaque AWS compte. Vous pouvez également inclure une description facultative du projet de construction pour aider les autres utilisateurs à comprendre à quoi sert ce projet.

1. Dans **Source**:  
**Fournisseur de source**  
Sélectionnez **GitHub**. Suivez les instructions pour vous connecter (ou vous reconnecter) à, GitHub puis choisissez **Autoriser**.  
**Référentiel**  
Choisissez **Repository dans mon GitHub compte**.  
**GitHub référentiel**  
Entrez l'URL de votre GitHub dépôt.

1. Dans **Événements webhook de la source principale**, sélectionnez ce qui suit.
**Note**  
La section des **événements du webhook de la source principale** n'est visible que si vous avez choisi **Repository dans mon GitHub compte** à l'étape précédente.

   1. Sélectionnez **Rebuild every time a code change is pushed to this repository (Reconstruire à chaque fois qu'une modification de code est transférée dans ce référentiel)** lorsque vous créez votre projet. 

   1. Dans **Event type (Type d'événement)**, choisissez un ou plusieurs événements. 

   1. Pour filtrer le moment où un événement déclenche une génération, sous **Start a build under these conditions (Lancer une génération dans ces conditions)**, ajoutez un ou plusieurs filtres facultatifs. 

   1. Pour filtrer le moment où un événement n'est pas déclenché, sous **Don't start a build under these conditions (Ne pas lancer de génération dans ces conditions)**, ajoutez un ou plusieurs filtres facultatifs. 

   1. Choisissez **Ajouter un groupe de filtres** pour ajouter un autre groupe de filtres, si nécessaire. 

   Pour plus d'informations sur les types d'événements et les filtres GitHub Webhook, consultez[GitHub événements webhook](github-webhook.md).

1. Dans **Environment (Environnement)** :  
**Image de l'environnement**  
Sélectionnez l’une des méthodes suivantes :    
Pour utiliser une image Docker gérée par AWS CodeBuild :  
Choisissez **Image gérée**, puis sélectionnez **Système d'exploitation**, **Runtime (s)**, **Image** et **Version de l'image**. Effectuez votre sélection pour **Type d'environnement** si cette option est disponible.  
Pour utiliser une autre image Docker :  
Choisissez **Image personnalisée**. Pour le **type d'environnement**, choisissez **ARM**, **Linux****, Linux GPU** ou **Windows**. Si vous choisissez **Other registry (Autre registre)**, pour **External registry URL (URL du registre externe)**, entrez le nom et la balise de l'image Docker dans Docker Hub au format `docker repository/docker image name`. Si vous choisissez **Amazon ECR**, utilisez le **référentiel Amazon ECR** et l'image **Amazon ECR pour choisir l'image** Docker dans votre compte. AWS   
Pour utiliser une image Docker privée :  
Choisissez **Image personnalisée**. Pour le **type d'environnement**, choisissez **ARM**, **Linux****, Linux GPU** ou **Windows**. Pour **Image registry (Registre de l'image)**, choisissez **Other registry (Autre registre)** et entrez l'ARN des informations d'identification de votre image Docker privée. Les informations d'identification doivent être créées par Secrets Manager. Pour plus d'informations, voir [Qu'est-ce que c'est AWS Secrets Manager ?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) dans le *guide de AWS Secrets Manager l'utilisateur*.  
**Rôle de service**  
Sélectionnez l’une des méthodes suivantes :  
   + Si vous n'avez pas de rôle CodeBuild de service, choisissez **Nouveau rôle de service**. Dans **Role name**, entrez un nom pour le nouveau rôle.
   + Si vous avez un rôle CodeBuild de service, choisissez **Rôle de service existant**. Dans **Role ARN**, choisissez le rôle de service.
Lorsque vous utilisez la console pour créer ou mettre à jour un projet de génération, vous pouvez créer un rôle de CodeBuild service en même temps. Par défaut, le rôle fonctionne avec ce projet de génération uniquement. Si vous utilisez la console pour associer ce rôle de service à un autre projet de génération, le rôle est mis à jour pour fonctionner avec l'autre projet de génération. Un rôle de service peut fonctionner avec 10 projets de génération maximum.

1. Dans **Buildspec, effectuez** l'une des opérations suivantes :
   + Choisissez **Utiliser un fichier buildspec pour utiliser le fichier** buildspec.yml dans le répertoire racine du code source.
   + Choisissez **Insérer des commandes** de génération pour utiliser la console pour insérer des commandes de génération.

   Pour de plus amples informations, veuillez consulter [Référence des spécifications de génération](build-spec-ref.md).

1. Dans **Artefacts**:  
**Type**  
Sélectionnez l’une des méthodes suivantes :  
   + Si vous ne souhaitez pas créer d'artefacts de sortie de génération, choisissez **Aucun artefact**.
   + Pour stocker le résultat du build dans un compartiment S3, choisissez **Amazon S3**, puis procédez comme suit :
     + Si vous souhaitez utiliser votre nom de projet pour le dossier ou le fichier ZIP de sortie de génération, ne renseignez pas le champ **Nom**. Sinon, entrez le nom. Par défaut, le nom d'un artefact est le nom du projet. Si vous souhaitez utiliser un autre nom, entrez-le dans la zone Nom des artefacts. Si vous souhaitez générer un fichier ZIP, incluez l'extension zip.
     + Pour **Nom du compartiment**, choisissez le nom du compartiment de sortie.
     + Si vous avez sélectionné **Insérer des commandes de génération** précédemment dans cette procédure, pour **Fichiers de sortie**, saisissez les emplacements des fichiers de la génération que vous souhaitez placer dans le dossier ou le fichier ZIP de sortie de génération. Pour plusieurs emplacements, séparez ceux-ci avec une virgule (par exemple, `appspec.yml, target/my-app.jar`). Pour de plus amples informations, consultez la description de `files` dans [Syntaxe d'un fichier buildspec](build-spec-ref.md#build-spec-ref-syntax).  
**Configuration supplémentaire**  
Développez **Additional configuration (Configuration supplémentaire)** et définissez les options dont vous avez besoin.

1. Choisissez **Créer un projet de génération**. Sur la page **Révision**, choisissez **Démarrer la génération** pour exécuter la génération.

## Étape 2 : Vérifiez que les webhooks sont activés
<a name="verification-checks"></a>

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

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

1. Effectuez l’une des actions suivantes :
   + Cliquez sur le lien du projet de build avec des webhooks que vous souhaitez réviser, puis choisissez **Build details (Détails de build)**.
   + Cliquez sur le bouton à côté du projet de génération avec les webhooks que vous souhaitez vérifier, choisissez **Afficher les détails**, puis choisissez l'onglet **Détails de la construction**.

1. Dans **Événements du webhook de la source principale**, choisissez le lien URL du **webhook**. 

1. Dans votre GitHub dépôt, sur la page **Paramètres**, sous **Webhooks**, vérifiez que les **Pull Requests** et **Push sont sélectionnés**.

1. Dans les paramètres de votre GitHub profil, sous **Paramètres personnels**, **Applications**, ** OAuthApplications autorisées**, vous devriez voir que votre application a été autorisée à accéder à la AWS région que vous avez sélectionnée.

# Tutoriel : signature de code Apple avec Fastlane lors de CodeBuild l'utilisation de S3 pour le stockage de certificats
<a name="sample-fastlane"></a>

[fastlane](https://docs.fastlane.tools/) est un outil d'automatisation open source populaire qui permet d'automatiser les déploiements et les versions bêta de vos applications iOS et Android. Il gère toutes les tâches fastidieuses, comme la génération de captures d'écran, la signature de code et la publication de votre application.

## Conditions préalables
<a name="sample-fastlane-prerequisites"></a>

Pour terminer ce didacticiel, vous devez d'abord avoir configuré les éléments suivants :
+ Un Compte AWS
+ Un [compte Apple Developer](https://developer.apple.com/)
+ Un compartiment S3 pour le stockage des certificats
+ fastlane installé dans votre projet - [Guide](https://docs.fastlane.tools/getting-started/ios/setup/) d'installation de fastlane

## Étape 1 : configurer Fastlane Match avec S3 sur votre machine locale
<a name="sample-fastlane-S3"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) est l'un des [outils de Fastlane](https://fastlane.tools/). Il permet une configuration fluide pour la signature de code, à la fois dans votre environnement de développement local et ailleurs. CodeBuild Fastlane Match stocke tous vos certificats de signature de code et profils de provisionnement dans un stockage Git repository/S3 Bucket/Google Cloud, et télécharge et installe les certificats et profils nécessaires en cas de besoin.

Dans cet exemple de configuration, vous allez configurer et utiliser un compartiment Amazon S3 pour le stockage. 

****

1. Initialisez match dans votre projet :

   ```
   fastlane match init
   ```

1. Lorsque vous y êtes invité, choisissez S3 comme mode de stockage.

1. Mettez à jour votre « *Matchfile* » pour utiliser S3 :

   ```
   storage_mode("s3")
      s3_bucket("your-s3-bucket-name")
      s3_region("your-aws-region")
      type("appstore") # The default type, can be: appstore, adhoc, enterprise or development
   ```

## Étape 2 : Configurez votre Fastfile
<a name="sample-fastlane-S3-fastfile"></a>

Créez ou mettez à jour votre `Fastfile` avec la ligne suivante.

Activé CodeBuild, Fastlane Match devra être exécuté chaque fois que vous créez et signez votre application. Le moyen le plus simple de le faire est d'ajouter l'`match`action à la voie qui crée votre application.

```
default_platform(:ios)

platform :ios do
  before_all do
    setup_ci
  end
  
  desc "Build and sign the app"
  lane :build do
    match(type: "appstore", readonly: true)
    gym(
      scheme: "YourScheme",
      export_method: "app-store"
    )
  end
end
```

**Note**  
Assurez-vous d'ajouter des `setup_ci` éléments à la `before_all ` section `Fastfile` pour que l'action de match fonctionne correctement. Cela garantit qu'un trousseau Fastlane temporaire doté des autorisations appropriées est utilisé. Si vous ne l'utilisez pas, vous risquez de rencontrer des échecs de compilation ou des résultats incohérents. 



## Étape 3 : Exécutez la `fastlane match` commande pour générer les certificats et profils respectifs
<a name="sample-fastlane-S3-certificates"></a>

La commande fastlane match pour le type donné (par exemple, development, appstore, adhoc, enterprise) générera le certificat et le profil s'ils ne sont pas disponibles dans le magasin distant. Les certificats et les profils seront stockés dans S3 par fastlane.

```
bundle exec fastlane match appstore
```

L'exécution de la commande sera interactive et fastlane demandera de définir une phrase secrète pour déchiffrer les certificats.

## Étape 4 : Créez le dossier de candidature pour votre projet
<a name="sample-fastlane-S3-appfile"></a>

Créez ou ajoutez le fichier de candidature en fonction de votre projet.

****

1. Créez ou ajoutez le [Gymfile, Appfile](http://docs.fastlane.tools/actions/gym/#gymfile)[, Snapfile](http://docs.fastlane.tools/advanced/Appfile/)[, [Deliverfile](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile)](http://docs.fastlane.tools/actions/snapshot/#snapfile) en fonction des exigences de construction de votre projet.

1. Validez les modifications dans votre dépôt distant

## Étape 5 : Création de variables d'environnement dans Secrets Manager
<a name="sample-fastlane-S3-secrets"></a>

Créez deux secrets pour stocker le cookie de session Fastlane et le mot de passe correspondant. Pour plus d'informations sur la création de secrets dans Secrets Manager, voir [Création d'un AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

****

1. Accédez à votre cookie de session Fastlane comme suit.

   1. Clé secrète - `FASTLANE_SESSION`

   1. Valeur secrète : cookie de session généré par l'exécution de la commande suivante sur votre ordinateur local.
**Note**  
Cette valeur est disponible après authentification dans un fichier local :`~/.fastlane/spaceship/my_appleid_username/cookie`.

      ```
      fastlane spaceauth -u <apple account>
      ```

1. Phrase de passe Fastlane Match - Pour permettre à Fastlane Match de déchiffrer les certificats et les profils stockés dans le compartiment S3, il est nécessaire d'ajouter le mot de passe de chiffrement que vous avez configuré à l'étape de configuration de Match aux variables d'environnement du projet. CodeBuild

   1. Clé secrète - `MATCH_PASSWORD`

   1. Valeur secrète -*<match passphrase to decrypt certificates>*. Le mot de passe est défini lors de la génération des certificats à l'étape 3.

**Note**  
Lorsque vous créez les secrets ci-dessus dans Secrets Manager, n'oubliez pas de donner un nom au secret avec le préfixe suivant : `/CodeBuild/`

## Étape 6 : Création d'un parc informatique
<a name="sample-fastlane-S3-fleet"></a>

Créez le parc informatique pour votre projet.

****

1. Dans la console, accédez à CodeBuild et créez un nouveau parc informatique.

1. Choisissez « macOS » comme système d'exploitation et sélectionnez le type de calcul et l'image appropriés.

## Étape 7 : Création d'un projet dans CodeBuild
<a name="sample-fastlane-S3-project"></a>

Créez votre projet dans CodeBuild.



****

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Créez un projet de génération. Pour plus d’informations, consultez [Création d'un projet de génération (console)](create-project.md#create-project-console) et [Exécution d'une génération (console)](run-build-console.md).

1. Configurez votre fournisseur de source (tel que GitHub, CodeCommit). Il s'agit du référentiel des sources du projet iOS et non du référentiel de certificats.

1.  Dans **Environment (Environnement)** : 
   + Choisissez **Capacité réservée**.
   + Pour **Fleet**, sélectionnez la flotte créée ci-dessus.
   + Indiquez le nom du rôle de service qui CodeBuild sera créé pour vous.
   + Fournissez les variables d'environnement ci-dessous.
     + Nom :`MATCH_PASSWORD`, Valeur :*<secrets arn>*, Type : Secrets Manager (Secrets ARN créé à l'étape 5 pour MATCH\$1PASSWORD)
     + Nom :`FASTLANE_SESSION`, Valeur :*<secrets arn>*, Type : Secrets Manager (ARN de secrets créé à l'étape 5 pour FASTLANE\$1SESSION)

1. Dans **Buildspec**, ajoutez ce qui suit :

   ```
   version: 0.2
   
   phases:
     install:
       commands:
         - gem install bundler
         - bundle install
     build:
       commands:
         - echo "Building and signing the app..."
         - bundle exec fastlane build
     post_build:
       commands:
         - echo "Build completed on date"
   
   artifacts:
     files:
       - '*/.ipa'
     name: app-$(date +%Y-%m-%d)
   ```

## Étape 8 : Configuration du rôle IAM
<a name="sample-fastlane-S3-role"></a>

Une fois le projet créé, assurez-vous que le rôle de service de votre CodeBuild projet est autorisé à accéder au compartiment S3 contenant les certificats. Ajoutez la politique suivante au rôle :

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::your-s3-bucket-name"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::your-s3-bucket-name/*"
        }
    ]
}
```

------

## Étape 9 : Exécuter le build
<a name="sample-fastlane-S3-run"></a>

Exécutez la génération. Vous pouvez consulter l'état de la construction et vous connecter CodeBuild.

Une fois la tâche terminée, vous pourrez consulter le journal de la tâche.

## Résolution des problèmes
<a name="sample-fastlane-S3-troubleshooting"></a>
+ Si vous rencontrez des problèmes lors de l'extraction des certificats, assurez-vous que vos autorisations IAM sont correctement configurées pour l'accès S3.
+ Si vous rencontrez des problèmes lors du déchiffrement des certificats, assurez-vous de définir le mot de passe correct dans la variable d'environnement MATCH\$1PASSWORD.
+ Pour les problèmes de signature de code, vérifiez que votre compte Apple Developer possède les certificats et profils nécessaires, et que l'identifiant du bundle de votre projet Xcode correspond à celui de votre profil d'approvisionnement.

## Considérations sur la sécurité
<a name="sample-fastlane-considerations"></a>

Les considérations de sécurité suivantes concernent ce didacticiel.
+ Assurez-vous que votre compartiment S3 possède les paramètres de sécurité appropriés, y compris le chiffrement au repos. Assurez-vous en particulier que le bucket n'est pas accessible au public et limitez l'accès uniquement CodeBuild au système qui a besoin d'un accès.
+ Envisagez de l'utiliser AWS Secrets Manager pour stocker des informations sensibles telles que MATCH\$1PASSWORD et FASTLANE\$1SESSION.

Cet exemple fournit une configuration pour la signature de code iOS avec Fastlane lors de CodeBuild l'utilisation d'Amazon S3 pour le stockage de certificats. Vous devrez peut-être ajuster certaines étapes en fonction des exigences et de CodeBuild l'environnement spécifiques de votre projet. Cette approche tire parti des AWS services pour améliorer la sécurité et l'intégration au sein de l' AWS écosystème.

# Tutoriel : signature de code Apple avec Fastlane lors de CodeBuild l'utilisation GitHub pour le stockage de certificats
<a name="sample-fastlane-github"></a>

[fastlane](https://docs.fastlane.tools/) est un outil d'automatisation open source populaire qui permet d'automatiser les déploiements et les versions bêta de vos applications iOS et Android. Il gère toutes les tâches fastidieuses, comme la génération de captures d'écran, la signature de code et la publication de votre application.

Cet exemple montre comment configurer la signature de code Apple à l'aide de Fastlane dans un CodeBuild projet exécuté sur un parc Mac, en GitHub tant que stockage pour les certificats et les profils de provisionnement.

## Conditions préalables
<a name="sample-fastlane-github-prerequisites"></a>

Pour terminer ce didacticiel, vous devez d'abord avoir configuré les éléments suivants :
+ Un Compte AWS
+ Un [compte Apple Developer](https://developer.apple.com/)
+ Un GitHub référentiel privé pour le stockage des certificats
+ fastlane installé dans votre projet - [Guide](https://docs.fastlane.tools/getting-started/ios/setup/) d'installation de fastlane

## Étape 1 : Configurez Fastlane Match avec GitHub sur votre machine locale
<a name="sample-fastlane-github-certificates"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) est l'un des [outils de Fastlane](https://fastlane.tools/). Il permet une configuration fluide pour la signature de code, à la fois dans votre environnement de développement local et ailleurs. CodeBuild Fastlane Match stocke tous vos certificats de signature de code et profils de provisionnement dans un stockage Git repository/S3 Bucket/Google Cloud, et télécharge et installe les certificats et profils nécessaires en cas de besoin.

Dans cet exemple de configuration, nous allons configurer et utiliser un dépôt Git pour le stockage. 

****

1. Initialisez match dans votre projet :

   ```
   fastlane match init
   ```

1. Lorsque vous y êtes invité, choisissez GitHub le mode de stockage.

1. Mettez à jour votre « *Matchfile* » pour utiliser GitHub :

   ```
   git_url("https://github.com/your-username/your-certificate-repo.git")
   storage_mode("git")
   type("development") # The default type, can be: appstore, adhoc, enterprise or development
   ```

**Note**  
Assurez-vous de saisir l'URL HTTPS de votre dépôt Git pour que fastlane puisse s'authentifier et cloner avec succès. Dans le cas contraire, une erreur d'authentification peut s'afficher lorsque vous tentez d'utiliser Match.

## Étape 2 : Configurez votre Fastfile
<a name="sample-fastlane-github-fastfile"></a>

Créez ou mettez à jour votre `Fastfile` avec la ligne suivante.

Activé CodeBuild, Fastlane Match devra être exécuté chaque fois que vous créez et signez votre application. Le moyen le plus simple de le faire est d'ajouter l'`match`action à la voie qui crée votre application.

```
default_platform(:ios)

platform :ios do
  before_all do
    setup_ci
  end
  
  desc "Build and sign the app"
  lane :build do
    match(type: "appstore", readonly: true)
    gym(
      scheme: "YourScheme",
      export_method: "app-store"
    )
  end
end
```

**Note**  
Assurez-vous d'ajouter des `setup_ci` éléments à la `before_all ` section `Fastfile` pour que l'action de match fonctionne correctement. Cela garantit qu'un trousseau Fastlane temporaire doté des autorisations appropriées est utilisé. Si vous ne l'utilisez pas, vous risquez de rencontrer des échecs de compilation ou des résultats incohérents. 

## Étape 3 : Exécutez la `fastlane match` commande pour générer les certificats et profils respectifs
<a name="sample-fastlane-github-certificates"></a>

La commande fastlane match pour le type donné (c'est-à-dire development, appstore, adhoc, enterprise) générera le certificat et le profil s'ils ne sont pas disponibles dans le magasin distant. Les certificats et les profils seront stockés GitHub par Fastlane.

```
bundle exec fastlane match appstore
```

L'exécution de la commande sera interactive et fastlane demandera de définir une phrase secrète pour déchiffrer les certificats.

## Étape 4 : Créez le dossier de candidature pour votre projet
<a name="sample-fastlane-github-appfile"></a>

Créez ou ajoutez le fichier de candidature en fonction de votre projet.

****

1. Créez ou ajoutez le [Gymfile, Appfile](http://docs.fastlane.tools/actions/gym/#gymfile)[, Snapfile](http://docs.fastlane.tools/advanced/Appfile/)[, [Deliverfile](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile)](http://docs.fastlane.tools/actions/snapshot/#snapfile) en fonction des exigences de construction de votre projet.

1. Validez les modifications dans votre dépôt distant.

## Étape 5 : Création de variables d'environnement dans Secrets Manager
<a name="sample-fastlane-github-secrets"></a>

Créez trois secrets pour stocker le cookie de session Fastlane et le mot de passe correspondant. Pour plus d'informations sur la création de secrets dans Secrets Manager, voir [Création d'un AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

****

1. Accédez à votre cookie de session Fastlane comme suit.

   1. Clé secrète - `FASTLANE_SESSION`

   1. Valeur secrète : cookie de session généré par l'exécution de la commande suivante sur votre ordinateur local.
**Note**  
Cette valeur est disponible après authentification dans un fichier local :`~/.fastlane/spaceship/my_appleid_username/cookie`.

      ```
      fastlane spaceauth -u <Apple_account>
      ```

1. Phrase de passe Fastlane Match - Pour permettre à Fastlane Match de déchiffrer les certificats et les profils stockés dans le référentiel Git, il est nécessaire d'ajouter le mot de passe de chiffrement que vous avez configuré à l'étape de configuration de Match aux variables d'environnement du projet. CodeBuild 

   1. Clé secrète - `MATCH_PASSWORD`

   1. Valeur secrète -`<match passphrase to decrypt certificates>`. Le mot de passe est défini lors de la génération des certificats à l'étape 3.

1. *Fastlane `MATCH_GIT_BASIC_AUTHORIZATION` - définissez une autorisation de base pour le match :*

   1. Clé secrète : 

      `MATCH_GIT_BASIC_AUTHORIZATION`

   1. Valeur secrète - La valeur doit être une chaîne codée en base64 de votre nom d'utilisateur et de votre jeton d'accès personnel (PAT) au format`username:password`. Vous pouvez le générer à l'aide de la commande suivante :

      ```
      echo -n your_github_username:your_personal_access_token | base64
      ```

      Vous pouvez générer votre PAT sur la GitHub console dans **Votre profil > Paramètres > Paramètres des développeurs > Jeton d'accès personnel**. Pour plus d'informations, consultez le guide suivant : [https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing- your-personal-access-tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).

**Note**  
Lorsque vous créez les secrets ci-dessus dans Secrets Manager, n'oubliez pas de leur donner un nom avec le préfixe suivant : `/CodeBuild/`

## Étape 6 : Création d'un parc informatique
<a name="sample-fastlane-github-fleet"></a>

Créez le parc informatique pour votre projet.

****

1. Dans la console, accédez à CodeBuild et créez un nouveau parc informatique.

1. Choisissez `macOS` comme système d'exploitation et sélectionnez le type de calcul et l'image appropriés.

## Étape 7 : Création d'un projet dans CodeBuild
<a name="sample-fastlane-github-project"></a>

Créez votre projet dans CodeBuild.

****

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Créez un projet de génération. Pour plus d’informations, consultez [Création d'un projet de génération (console)](create-project.md#create-project-console) et [Exécution d'une génération (console)](run-build-console.md).

1. Configurez votre fournisseur de source (tel que GitHub, CodeCommit). Il s'agit du référentiel des sources du projet iOS et non du référentiel de certificats.

1.  Dans **Environment (Environnement)** : 
   + Choisissez **Capacité réservée**.
   + Pour **Fleet**, sélectionnez la flotte créée ci-dessus.
   + Indiquez le nom du rôle de service qui CodeBuild sera créé pour vous.
   + Fournissez les variables d'environnement ci-dessous.
     + Nom :`MATCH_PASSWORD`, Valeur :*<secrets arn>*, Type : Secrets Manager (Secrets ARN créé à l'étape 5 pour MATCH\$1PASSWORD)
     + Nom :`FASTLANE_SESSION`, Valeur :*<secrets arn>*, Type : Secrets Manager (ARN de secrets créé à l'étape 5 pour FASTLANE\$1SESSION)
     + Nom :`MATCH_GIT_BASIC_AUTHORIZATION`, Valeur :*<secrets ARN>*, Type : Secrets Manager Secrets ARN (créé à l'étape 5 pour`MATCH_GIT_BASIC_AUTHORIZATION`)

1. Dans **Buildspec**, ajoutez ce qui suit :

   ```
   version: 0.2
   
   phases:
     install:
       commands:
         - gem install bundler
         - bundle install
     build:
       commands:
         - echo "Building and signing the app..."
         - bundle exec fastlane build
     post_build:
       commands:
         - echo "Build completed on date"
   
   artifacts:
     files:
       - '*/.ipa'
     name: app-$(date +%Y-%m-%d)
   ```

## Étape 8 : Exécuter le build
<a name="sample-fastlane-github-run"></a>

Exécutez la génération. Vous pouvez consulter l'état de la construction et vous connecter CodeBuild.

Une fois la tâche terminée, vous pourrez consulter le journal de la tâche.

## Résolution des problèmes
<a name="sample-fastlane-github-troubleshooting"></a>
+ Si vous rencontrez des problèmes pour accéder au GitHub dépôt, vérifiez votre jeton d'accès personnel et la variable d'environnement MATCH\$1GIT\$1BASIC\$1AUTHORIZATION.
+ Si vous rencontrez des problèmes lors du déchiffrement des certificats, assurez-vous de définir le mot de passe correct dans la variable d'environnement MATCH\$1PASSWORD.
+ Pour les problèmes de signature de code, vérifiez que votre compte Apple Developer possède les certificats et profils nécessaires et que l'identifiant du bundle de votre projet Xcode correspond à celui de votre profil d'approvisionnement.

## Considérations sur la sécurité
<a name="sample-fastlane-github-considerations"></a>

Les considérations de sécurité suivantes concernent ce didacticiel.
+ Préservez la GitHub confidentialité de votre référentiel de certificats et contrôlez régulièrement l'accès.
+ Envisagez de l'utiliser AWS Secrets Manager pour stocker des informations sensibles telles que MATCH\$1PASSWORD et FASTLANE\$1SESSION.

Cet exemple fournit une configuration pour la signature de code iOS avec Fastlane lors de CodeBuild l'utilisation GitHub pour le stockage de certificats. Vous devrez peut-être ajuster certaines étapes en fonction des exigences et de CodeBuild l'environnement spécifiques de votre projet. Cette approche tire parti des AWS services pour améliorer la sécurité et l'intégration au sein de l' AWS écosystème.

# Définissez les noms des artefacts au moment de la construction à l'aide du versionnement sémantique
<a name="sample-buildspec-artifact-naming"></a>

 Cet exemple contient des exemples de fichiers buildspec qui montrent comment spécifier le nom d'un artefact qui est créé au moment de la génération. Un nom spécifié dans un fichier buildspec peut comprendre des commandes Shell et des variables d'environnement afin de le rendre unique. Un nom que vous spécifiez dans un fichier buildspec se substitue au nom que vous saisissez dans la console lorsque vous créez votre projet.

 Si vous procédez à plusieurs générations, le nom d'artefact spécifié dans le fichier buildspec permet de vous assurer que les noms de vos fichiers d'artefact de sortie sont uniques. Par exemple, vous pouvez utiliser une date et un horodatage inséré dans le nom d'un artefact au moment de la génération. 

Si vous souhaitez remplacer le nom de l'artefact que vous avez saisi dans la console par un nom dans le fichier buildspec, procédez comme suit :

1.  Configurez votre projet de génération afin de remplacer le nom de l'artefact par un nom du fichier buildspec. 
   +  Si vous utilisez la console pour créer votre projet de génération, sélectionnez **Activer la gestion sémantique des versions**. Pour de plus amples informations, veuillez consulter [Création d'un projet de génération (console)](create-project.md#create-project-console). 
   +  Si vous utilisez le AWS CLI, définissez le sur `overrideArtifactName` true dans le fichier au format JSON transmis à. `create-project` Pour de plus amples informations, veuillez consulter [Création d'un projet de génération (AWS CLI)](create-project.md#create-project-cli). 
   +  Si vous utilisez l' AWS CodeBuild API, placez l'`overrideArtifactName`indicateur sur l'`ProjectArtifacts`objet lorsqu'un projet est créé ou mis à jour ou qu'une construction est lancée. 

1.  Spécifiez un nom dans le fichier buildspec. Utilisez l'exemple de fichier buildspec suivant comme guide. 

 Cet exemple Linux vous montre comment spécifier un nom d'artefact qui comprend la date de création de la génération : 

```
version: 0.2         
phases:
  build:
    commands:
      - rspec HelloWorld_spec.rb
artifacts:
  files:
    - '**/*'
  name: myname-$(date +%Y-%m-%d)
```

 Cet exemple Linux vous montre comment spécifier un nom d'artefact qui utilise une variable d'environnement CodeBuild. Pour de plus amples informations, veuillez consulter [Variables d'environnement dans les environnements de génération](build-env-ref-env-vars.md). 

```
version: 0.2         
phases:
  build:
    commands:
      - rspec HelloWorld_spec.rb
artifacts:
  files:
    - '**/*'
  name: myname-$AWS_REGION
```

 Cet exemple Windows vous montre comment spécifier un nom d'artefact qui comprend la date et l'heure de création de la génération : 

```
version: 0.2
env:
  variables:
    TEST_ENV_VARIABLE: myArtifactName
phases:
  build:
    commands:
      - cd samples/helloworld
      - dotnet restore
      - dotnet run
artifacts:
  files:
    - '**/*'
  name: $Env:TEST_ENV_VARIABLE-$(Get-Date -UFormat "%Y%m%d-%H%M%S")
```

 Cet exemple Windows montre comment spécifier un nom d'artefact qui utilise une variable déclarée dans le fichier buildspec et une variable d'environnement. CodeBuild Pour de plus amples informations, veuillez consulter [Variables d'environnement dans les environnements de génération](build-env-ref-env-vars.md). 

```
version: 0.2
env:
  variables:
    TEST_ENV_VARIABLE: myArtifactName
phases:
  build:
    commands:
      - cd samples/helloworld
      - dotnet restore
      - dotnet run
artifacts:
  files:
    - '**/*'
  name: $Env:TEST_ENV_VARIABLE-$Env:AWS_REGION
```

 Pour de plus amples informations, veuillez consulter [Référence de spécification de construction pour CodeBuild](build-spec-ref.md). 