

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Versiones en tiempo de ejecución en el ejemplo del archivo buildspec para CodeBuild
<a name="sample-runtime-versions"></a>

Si utilizas la imagen estándar de Amazon Linux 2 (AL2) versión 1.0 o posterior, o la imagen estándar de Ubuntu versión 2.0 o posterior, puedes especificar uno o más tiempos de ejecución en la `runtime-versions` sección de tu archivo buildspec. Los siguientes ejemplos muestran cómo puede cambiar el tiempo de ejecución de su proyecto, especificar más de uno y especificar un tiempo de ejecución que dependa de otro. Para obtener información sobre los runtimes compatibles, consulte [Imágenes de Docker proporcionadas por CodeBuild](build-env-ref-available.md).

**nota**  
Si utiliza Docker en el contenedor de compilación, la compilación debe ejecutarse en un modo con privilegios. Para obtener más información, consulte [Ejecute AWS CodeBuild compilaciones manualmente](run-build.md) y [Creación de un proyecto de compilación en AWS CodeBuild](create-project.md). 

**Topics**
+ [Actualización de la versión del tiempo de ejecución en el archivo de especificación de compilación](sample-runtime-update-version.md)
+ [Especificación de dos entornos de ejecución](sample-runtime-two-major-version-runtimes.md)

# Actualización de la versión del tiempo de ejecución en el archivo de especificación de compilación
<a name="sample-runtime-update-version"></a>

Puede modificar el entorno de tiempo de ejecución que utiliza su proyecto por una nueva versión actualizando la sección `runtime-versions` del archivo de especificación de compilación. Los siguientes ejemplos muestran cómo se especifican las versiones 8 y 11 de Java.
+ Una sección `runtime-versions` que especifica la versión 8 de Java:

  ```
  phases:
    install:
      runtime-versions:
        java: corretto8
  ```
+ Una sección `runtime-versions` que especifica la versión 11 de Java:

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

Los siguientes ejemplos muestran cómo especificar diferentes versiones de Python utilizando la imagen de Ubuntu estándar 5.0 o la imagen de Amazon Linux 2 estándar 3.0:
+ Una sección de `runtime-versions` que especifica Python versión 3.7: 

  ```
  phases:
    install:
      runtime-versions:
        python: 3.7
  ```
+ Una sección de `runtime-versions` que especifica Python versión 3.8: 

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

Esta muestra presenta un proyecto que comienza con el tiempo de ejecución de la versión 8 de Java y, a continuación, se actualiza al tiempo de ejecución de la versión 10 de Java. 

1. Descargue e instale Maven. Para obtener información, consulte [Downloading Apache Maven](https://maven.apache.org/download.cgi) e [Installing Apache Maven](https://maven.apache.org/install.html) en el sitio web de Apache Maven.

1. Cambie a un directorio vacío del equipo o instancia local y, a continuación, ejecute este comando Maven.

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

   Si el comando se ejecuta correctamente, se creará esta estructura de directorios y archivos.

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

1. Cree un archivo denominado `buildspec.yml` con el siguiente contenido. Guarde el archivo en el directorio ` (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'
   ```

   En el archivo buildspec: 
   + La sección `runtime-versions` especifica que el proyecto utiliza la versión 8 del tiempo de ejecución de Java. 
   + El comando `- java -version` muestra la versión de Java que utiliza su proyecto cuando se compila. 

   La estructura de archivos debe ser como la siguiente. 

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

1. Sube el contenido del `my-web-app` directorio a un depósito de entrada de S3 o a un repositorio de CodeCommit GitHub Bitbucket. 
**importante**  
No cargue `(root directory name)` o `(root directory name)/my-web-app`, solo los directorios y archivos incluidos en `(root directory name)/my-web-app`.   
Si utiliza un bucket de entrada de S3, no olvide crear un archivo ZIP que contenga la estructura de directorios y los archivos para cargarlo después en el bucket de entrada. No añada `(root directory name)` o `(root directory name)/my-web-app` al archivo ZIP, solo los directorios y archivos incluidos en `(root directory name)/my-web-app`.

1. Abre la AWS CodeBuild consola en [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Cree un proyecto de compilación. Para obtener más información, consulte [Creación de un proyecto de compilación (consola)](create-project.md#create-project-console) y [Ejecutar una compilación (consola)](run-build-console.md). Deje todas las opciones con sus valores predeterminados, excepto las siguientes opciones.
   + Para **Environment (Entorno)**:
     + En **Environment image (Imagen de entorno)**, elija **Managed image (Imagen administrada)**.
     + En **Operating system (Sistema operativo)**, elija **Amazon Linux 2**. 
     +  En **Runtime(s) (Tiempo de ejecución)**, elija **Standard (Estándar)**. 
     + **En **Imagen, elija -x86\$164-standard:4.0**. aws/codebuild/amazonlinux**

1. Seleccione **Iniciar la compilación**. 

1. En **Build configuration (Configuración de la compilación)**, acepte los valores predeterminados y elija **Start build (Comenzar compilación)**. 

1. Una vez finalizada la compilación, consulte la salida de compilación en la pestaña **Build logs (Registros de compilación)**. Debería ver una salida similar a esta: 

   ```
   [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. Actualice la sección `runtime-versions` con la versión 11 de Java: 

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

1. Después de guardar el cambio, ejecute la compilación de nuevo y consulte la salida de compilación. Debería ver que la versión instalada de Java es la 11. Debería ver una salida similar a esta: 

   ```
   [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/*;
   ```

# Especificación de dos entornos de ejecución
<a name="sample-runtime-two-major-version-runtimes"></a>

Puedes especificar más de un tiempo de ejecución en el mismo proyecto de compilación. CodeBuild Este proyecto de muestra utiliza dos archivos de código fuente: uno que utiliza el tiempo de ejecución de Go y otro que utiliza el tiempo de ejecución de Node.js. 

1. Cree un directorio llamado `my-source`. 

1. En el directorio `my-source`, cree un directorio llamado `golang-app`. 

1. Cree un archivo denominado `hello.go` con el siguiente contenido. Guarde el archivo en el directorio `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. En el directorio `my-source`, cree un directorio llamado `nodejs-app`. Debe estar al mismo nivel que el directorio `golang-app`. 

1. Cree un archivo denominado `index.js` con el siguiente contenido. Guarde el archivo en el directorio `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. Cree un archivo denominado `package.json` con el siguiente contenido. Guarde el archivo en el directorio `nodejs-app`. 

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

1. Cree un archivo denominado `buildspec.yml` con el siguiente contenido. Guarde el archivo en el directorio `my-source`, al mismo nivel que los directorios `nodejs-app` y `golang-app`. La sección `runtime-versions` especifica los tiempos de ejecución de la versión 12 de Node.js y la versión 1.13 de Go. 

   ```
   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 estructura de archivos debe ser como la siguiente. 

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

1. Sube el contenido del `my-source` directorio a un depósito de entrada de S3 o a un CodeCommit repositorio de Bitbucket. GitHub
**importante**  
 Si utiliza un bucket de entrada de S3, no olvide crear un archivo ZIP que contenga la estructura de directorios y los archivos para cargarlo después en el bucket de entrada. No añada `my-source` al archivo ZIP, solo los directorios y archivos incluidos en `my-source`.

1. Abre la AWS CodeBuild consola en [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Cree un proyecto de compilación. Para obtener más información, consulte [Creación de un proyecto de compilación (consola)](create-project.md#create-project-console) y [Ejecutar una compilación (consola)](run-build-console.md). Deje todas las opciones con sus valores predeterminados, excepto las siguientes opciones.
   + Para **Environment (Entorno)**:
     + En **Environment image (Imagen de entorno)**, elija **Managed image (Imagen administrada)**.
     + En **Operating system (Sistema operativo)**, elija **Amazon Linux 2**.
     + En **Runtime(s) (Tiempo de ejecución)**, elija **Standard (Estándar)**.
     + **En **Imagen, elija -x86\$164-standard:4.0**. aws/codebuild/amazonlinux**

1. Elija **Crear el proyecto de compilación**. 

1. Seleccione **Iniciar la compilación**. 

1. En **Build configuration (Configuración de la compilación)**, acepte los valores predeterminados y elija **Start build (Comenzar compilación)**. 

1. Una vez finalizada la compilación, consulte la salida de compilación en la pestaña **Build logs (Registros de compilación)**. Debería ver un resultado similar a este. Muestra la salida de los tiempos de ejecución de Go y Node.js. También muestra la salida de las aplicaciones de Go y 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
   ```