

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Versi runtime dalam contoh file buildspec untuk CodeBuild
<a name="sample-runtime-versions"></a>

Jika Anda menggunakan gambar standar Amazon Linux 2 (AL2) versi 1.0 atau yang lebih baru, atau gambar standar Ubuntu versi 2.0 atau yang lebih baru, Anda dapat menentukan satu atau beberapa runtime di `runtime-versions` bagian file buildspec Anda. Contoh berikut menunjukkan bagaimana Anda dapat mengubah runtime project, menentukan lebih dari satu runtime, dan menentukan runtime yang bergantung pada runtime lain. Untuk informasi tentang runtime yang didukung, lihat[Gambar Docker disediakan oleh CodeBuild](build-env-ref-available.md).

**catatan**  
Jika Anda menggunakan Docker di container build, build Anda harus berjalan dalam mode istimewa. Untuk informasi selengkapnya, lihat [Jalankan AWS CodeBuild build secara manual](run-build.md) dan [Buat proyek build di AWS CodeBuild](create-project.md). 

**Topics**
+ [Perbarui versi runtime dalam file buildspec](sample-runtime-update-version.md)
+ [Tentukan dua runtime](sample-runtime-two-major-version-runtimes.md)

# Perbarui versi runtime dalam file buildspec
<a name="sample-runtime-update-version"></a>

Anda dapat mengubah runtime yang digunakan oleh proyek Anda ke versi baru dengan memperbarui `runtime-versions` bagian file buildspec Anda. Contoh berikut menunjukkan cara menentukan java versi 8 dan 11.
+ `runtime-versions`Bagian yang menentukan versi 8 dari Java:

  ```
  phases:
    install:
      runtime-versions:
        java: corretto8
  ```
+ `runtime-versions`Bagian yang menentukan versi 11 dari Java:

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

Contoh berikut menunjukkan cara menentukan versi Python yang berbeda menggunakan gambar standar Ubuntu 5.0 atau gambar standar Amazon Linux 2 3.0:
+ `runtime-versions`Bagian yang menentukan Python versi 3.7: 

  ```
  phases:
    install:
      runtime-versions:
        python: 3.7
  ```
+ `runtime-versions`Bagian yang menentukan Python versi 3.8: 

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

Contoh ini menunjukkan proyek yang dimulai dengan runtime Java versi 8, dan kemudian diperbarui ke runtime Java versi 10. 

1. Unduh dan instal Maven. Untuk informasi, lihat [Mengunduh Apache Maven dan Menginstal Apache Maven](https://maven.apache.org/download.cgi) [di situs web Apache Maven](https://maven.apache.org/install.html).

1. Beralih ke direktori kosong di komputer atau instance lokal Anda, lalu jalankan perintah Maven ini.

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

   Jika berhasil, struktur direktori dan file ini dibuat.

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

1. Buat file bernama `buildspec.yml` dengan isi berikut ini. Simpan file di ` (root directory name)/my-web-app` direktori. 

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

   Dalam file buildspec: 
   + `runtime-versions`Bagian ini menentukan bahwa proyek menggunakan versi 8 dari runtime Java. 
   + `- java -version`Perintah menampilkan versi Java yang digunakan oleh proyek Anda saat dibangun. 

   Struktur file Anda sekarang akan terlihat seperti ini. 

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

1. Unggah isi `my-web-app` direktori ke bucket input S3 atau repositori CodeCommit, GitHub, atau Bitbucket. 
**penting**  
Jangan mengunggah `(root directory name)` atau`(root directory name)/my-web-app`, hanya direktori dan file di`(root directory name)/my-web-app`.   
Jika Anda menggunakan bucket input S3, pastikan untuk membuat file ZIP yang berisi struktur direktori dan file, lalu unggah ke bucket input. Jangan menambahkan `(root directory name)` atau `(root directory name)/my-web-app` ke file ZIP, hanya direktori dan file di`(root directory name)/my-web-app`.

1. Buka AWS CodeBuild konsol di [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Buat proyek build. Untuk informasi selengkapnya, lihat [Buat proyek build (konsol)](create-project.md#create-project-console) dan [Jalankan build (konsol)](run-build-console.md). Biarkan semua pengaturan pada nilai default mereka, kecuali untuk pengaturan ini.
   + Untuk **Lingkungan**:
     + Untuk **gambar Lingkungan**, pilih **Gambar terkelola**.
     + Untuk **sistem operasi**, pilih **Amazon Linux 2**. 
     +  Untuk **Runtime**, pilih **Standar**. 
     + Untuk **Gambar**, pilih **aws/codebuild/amazonlinux-x86\$164-standard:4.0**.

1. Pilih **Mulai membangun**. 

1. **Pada **konfigurasi Build**, terima default, lalu pilih Mulai build.** 

1. Setelah build selesai, lihat output build di tab **Build logs**. Anda akan melihat output yang serupa dengan yang berikut: 

   ```
   [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. Perbarui `runtime-versions` bagian dengan Java versi 11: 

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

1. Setelah Anda menyimpan perubahan, jalankan build Anda lagi dan lihat output build. Anda akan melihat bahwa versi Java yang diinstal adalah 11. Anda akan melihat output yang serupa dengan yang berikut: 

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

# Tentukan dua runtime
<a name="sample-runtime-two-major-version-runtimes"></a>

Anda dapat menentukan lebih dari satu runtime dalam proyek CodeBuild build yang sama. Proyek contoh ini menggunakan dua file sumber: satu yang menggunakan runtime Go dan satu yang menggunakan runtime Node.js. 

1. Membuat sebuah direktori bernama `my-source`. 

1. Di dalam `my-source` direktori, buat direktori bernama`golang-app`. 

1. Buat file bernama `hello.go` dengan isi berikut ini. Simpan file di `golang-app` direktori. 

   ```
   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. Di dalam `my-source` direktori, buat direktori bernama`nodejs-app`. Itu harus pada tingkat yang sama dengan `golang-app` direktori. 

1. Buat file bernama `index.js` dengan isi berikut ini. Simpan file di `nodejs-app` direktori. 

   ```
   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. Buat file bernama `package.json` dengan isi berikut ini. Simpan file di `nodejs-app` direktori. 

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

1. Buat file bernama `buildspec.yml` dengan isi berikut ini. Simpan file di `my-source` direktori, pada tingkat yang sama dengan `golang-app` direktori `nodejs-app` dan. `runtime-versions`Bagian ini menentukan runtime Node.js versi 12 dan Go versi 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. Struktur file Anda sekarang akan terlihat seperti ini. 

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

1. Unggah isi `my-source` direktori ke bucket input S3 atau repositori CodeCommit, GitHub, atau Bitbucket.
**penting**  
 Jika Anda menggunakan bucket input S3, pastikan untuk membuat file ZIP yang berisi struktur direktori dan file, lalu unggah ke bucket input. Jangan tambahkan `my-source` ke file ZIP, hanya direktori dan file di`my-source`.

1. Buka AWS CodeBuild konsol di [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Buat proyek build. Untuk informasi selengkapnya, lihat [Buat proyek build (konsol)](create-project.md#create-project-console) dan [Jalankan build (konsol)](run-build-console.md). Biarkan semua pengaturan pada nilai default mereka, kecuali untuk pengaturan ini.
   + Untuk **Lingkungan**:
     + Untuk **gambar Lingkungan**, pilih **Gambar terkelola**.
     + Untuk **sistem operasi**, pilih **Amazon Linux 2**.
     + Untuk **Runtime**, pilih **Standar**.
     + Untuk **Gambar**, pilih **aws/codebuild/amazonlinux-x86\$164-standard:4.0**.

1. Pilih **Buat proyek build**. 

1. Pilih **Mulai membangun**. 

1. **Pada **konfigurasi Build**, terima default, lalu pilih Mulai build.** 

1. Setelah build selesai, lihat output build di tab **Build logs**. Anda akan melihat output seperti yang berikut ini. Ini menunjukkan output dari runtime Go dan Node.js. Ini juga menunjukkan output dari aplikasi Go dan 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
   ```