

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.

# 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
   ```