

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

# Buat referensi spesifikasi untuk CodeBuild
<a name="build-spec-ref"></a>

Topik ini memberikan informasi referensi penting tentang file spesifikasi build (buildspec). *Buildspec* adalah kumpulan perintah build dan pengaturan terkait, dalam format YAMAL, yang CodeBuild digunakan untuk menjalankan build. Anda dapat menyertakan buildspec sebagai bagian dari kode sumber atau Anda dapat menentukan buildspec saat membuat proyek build. Untuk informasi tentang cara kerja spesifikasi build, lihat[Bagaimana cara CodeBuild kerja](concepts.md#concepts-how-it-works).

**Topics**
+ [Nama file Buildspec dan lokasi penyimpanan](#build-spec-ref-name-storage)
+ [Sintaks Buildspec](#build-spec-ref-syntax)
+ [Contoh Buildspec](#build-spec-ref-example)
+ [Versi Buildspec](#build-spec-ref-versions)
+ [Referensi buildspec build Batch](batch-build-buildspec.md)

## Nama file Buildspec dan lokasi penyimpanan
<a name="build-spec-ref-name-storage"></a>

Jika Anda menyertakan buildspec sebagai bagian dari kode sumber, secara default, file buildspec harus diberi nama `buildspec.yml` dan ditempatkan di root direktori sumber Anda.

Anda dapat mengganti nama dan lokasi file buildspec default. Misalnya, Anda dapat:
+ Gunakan file buildspec yang berbeda untuk build yang berbeda di repositori yang sama, seperti dan. `buildspec_debug.yml` `buildspec_release.yml`
+ Simpan file buildspec di tempat lain selain root direktori sumber Anda, seperti `config/buildspec.yml` atau di bucket S3. Bucket S3 harus berada di AWS Wilayah yang sama dengan proyek build Anda. Tentukan file buildspec menggunakan ARN (misalnya,). `arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml`

Anda hanya dapat menentukan satu buildspec untuk proyek build, terlepas dari nama file buildspec.

Untuk mengganti nama file buildspec default, lokasi, atau keduanya, lakukan salah satu hal berikut:
+ Jalankan `update-project` perintah AWS CLI `create-project` or, atur `buildspec` nilai ke jalur ke file buildspec alternatif relatif terhadap nilai variabel lingkungan bawaan. `CODEBUILD_SRC_DIR` Anda juga dapat melakukan hal yang setara dengan `create project` operasi di AWS SDKs. Untuk informasi selengkapnya, lihat [Buat proyek build](create-project.md) atau [Ubah pengaturan proyek build](change-project.md).
+ Jalankan AWS CLI `start-build` perintah, atur `buildspecOverride` nilai ke jalur ke file buildspec alternatif relatif terhadap nilai variabel lingkungan bawaan. `CODEBUILD_SRC_DIR` Anda juga dapat melakukan hal yang setara dengan `start build` operasi di AWS SDKs. Untuk informasi selengkapnya, lihat [Jalankan build secara manual](run-build.md).
+ Dalam AWS CloudFormation template, atur `BuildSpec` properti `Source` dalam sumber daya tipe `AWS::CodeBuild::Project` ke jalur ke file buildspec alternatif relatif terhadap nilai variabel lingkungan bawaan. `CODEBUILD_SRC_DIR` Untuk informasi selengkapnya, lihat BuildSpec properti di [sumber AWS CodeBuild proyek](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html) di *Panduan AWS CloudFormation Pengguna*.

## Sintaks Buildspec
<a name="build-spec-ref-syntax"></a>

[File buildspec harus diekspresikan dalam format YAMAL.](http://yaml.org/) 

Jika perintah berisi karakter, atau string karakter, yang tidak didukung oleh YAMM, Anda harus melampirkan perintah dalam tanda kutip (“”). Perintah berikut diapit tanda kutip karena titik dua (:) diikuti oleh spasi tidak diperbolehkan di YAMAL. Tanda kutip dalam perintah diloloskan (\$1”).

```
"export PACKAGE_NAME=$(cat package.json | grep name | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g')"
```

Buildspec memiliki sintaks berikut:

```
version: 0.2

run-as: Linux-user-name

env:
  shell: shell-tag
  variables:
    key: "value"
    key: "value"
  parameter-store:
    key: "value"
    key: "value"
  exported-variables:
    - variable
    - variable
  secrets-manager:
    key: secret-id:json-key:version-stage:version-id
  git-credential-helper: no | yes

proxy:
  upload-artifacts: no | yes
  logs: no | yes

batch:
  fast-fail: false | true
  # build-list:
  # build-matrix:
  # build-graph:
  # build-fanout:
        
phases:
  install:
    run-as: Linux-user-name
    on-failure: ABORT | CONTINUE | RETRY | RETRY-count | RETRY-regex | RETRY-count-regex
    runtime-versions:
      runtime: version
      runtime: version
    commands:
      - command
      - command
    finally:
      - command
      - command
    
  pre\$1build:
    run-as: Linux-user-name
    on-failure: ABORT | CONTINUE | RETRY | RETRY-count | RETRY-regex | RETRY-count-regex
    commands:
      - command
      - command
    finally:
      - command
      - command
    
  build:
    run-as: Linux-user-name
    on-failure: ABORT | CONTINUE | RETRY | RETRY-count | RETRY-regex | RETRY-count-regex
    commands:
      - command
      - command
    finally:
      - command
      - command
    
  post\$1build:
    run-as: Linux-user-name
    on-failure: ABORT | CONTINUE | RETRY | RETRY-count | RETRY-regex | RETRY-count-regex
    commands:
      - command
      - command
    finally:
      - command
      - command
    
reports:
  report-group-name-or-arn:
    files:
      - location
      - location
    base-directory: location
    discard-paths: no | yes
    file-format: report-format
artifacts:
  files:
    - location
    - location
  name: artifact-name
  discard-paths: no | yes
  base-directory: location
  exclude-paths: excluded paths
  enable-symlinks: no | yes
  s3-prefix: prefix
  secondary-artifacts:
    artifactIdentifier:
      files:
        - location
        - location
      name: secondary-artifact-name
      discard-paths: no | yes
      base-directory: location
    artifactIdentifier:
      files:
        - location
        - location
      discard-paths: no | yes
      base-directory: location
cache:
  key: key
  fallback-keys:
    - fallback-key
    - fallback-key
  action: restore | save
  paths:
    - path
    - path
```

Buildspec berisi berikut ini:

### versi
<a name="build-spec.version"></a>

Pemetaan yang diperlukan. Merupakan versi buildspec. Kami menyarankan Anda menggunakan`0.2`.

**catatan**  
Meskipun versi 0.1 masih didukung, kami sarankan Anda menggunakan versi 0.2 bila memungkinkan. Untuk informasi selengkapnya, lihat [Versi Buildspec](#build-spec-ref-versions).

### jalankan-sebagai
<a name="build-spec.run-as"></a>

Urutan opsional. Hanya tersedia untuk pengguna Linux. Menentukan pengguna Linux yang menjalankan perintah dalam file buildspec ini. `run-as`memberikan izin baca dan jalankan pengguna yang ditentukan. Saat Anda menentukan `run-as` di bagian atas file buildspec, itu berlaku secara global untuk semua perintah. Jika Anda tidak ingin menentukan pengguna untuk semua perintah file buildspec, Anda dapat menentukan satu untuk perintah dalam satu fase dengan menggunakan `run-as` di salah satu blok. `phases` Jika tidak `run-as` ditentukan, maka semua perintah berjalan sebagai pengguna root.

### env
<a name="build-spec.env"></a>

Urutan opsional. Merupakan informasi untuk satu atau lebih variabel lingkungan kustom.

**catatan**  
 Untuk melindungi informasi sensitif, berikut ini disembunyikan di CodeBuild log:   
 AWS kunci akses IDs. Untuk informasi selengkapnya, lihat [Mengelola Kunci Akses untuk Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) di *Panduan AWS Identity and Access Management Pengguna*. 
 String ditentukan menggunakan Parameter Store. Untuk informasi selengkapnya, lihat [Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html) dan [Systems Manager Parameter Store Console Walkthrough](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-walk.html#sysman-paramstore-console) di Panduan Pengguna *Amazon EC2 Systems* Manager. 
 String ditentukan menggunakan AWS Secrets Manager. Untuk informasi selengkapnya, lihat [Manajemen kunci](security-key-management.md). 

**env/cangkang**  <a name="build-spec.shell"></a>
Urutan opsional. Menentukan shell yang didukung untuk sistem operasi Linux atau Windows.   
Untuk sistem operasi Linux, tag shell yang didukung adalah:  
+ `bash`
+ `/bin/sh`
Untuk sistem operasi Windows, tag shell yang didukung adalah:  
+ `powershell.exe`
+ `cmd.exe`

**env/variabel**  <a name="build-spec.env.variables"></a>
Diperlukan jika `env` ditentukan, dan Anda ingin menentukan variabel lingkungan kustom dalam teks biasa. Berisi *key* *value* pemetaan/skalar, di mana setiap pemetaan mewakili variabel lingkungan kustom tunggal dalam teks biasa. *key*adalah nama variabel lingkungan kustom, dan *value* nilai variabel itu.  
Kami sangat tidak menyarankan penyimpanan nilai sensitif dalam variabel lingkungan. Variabel lingkungan dapat ditampilkan dalam teks biasa menggunakan alat seperti CodeBuild konsol dan AWS CLI. Untuk nilai sensitif, sebaiknya gunakan `parameter-store` atau `secrets-manager` pemetaan sebagai gantinya, seperti yang dijelaskan nanti di bagian ini.  
Setiap variabel lingkungan yang Anda tetapkan menggantikan variabel lingkungan yang ada. Misalnya, jika image Docker sudah berisi variabel lingkungan bernama `MY_VAR` dengan nilai`my_value`, dan Anda menetapkan variabel lingkungan bernama `MY_VAR` dengan nilai`other_value`, `my_value` maka diganti dengan`other_value`. Demikian pula, jika image Docker sudah berisi variabel lingkungan bernama `PATH` dengan nilai`/usr/local/sbin:/usr/local/bin`, dan Anda menetapkan variabel lingkungan bernama `PATH` dengan nilai`$PATH:/usr/share/ant/bin`, `/usr/local/sbin:/usr/local/bin` maka digantikan oleh nilai `$PATH:/usr/share/ant/bin` literal.  
Jangan mengatur variabel lingkungan apa pun dengan nama yang dimulai dengan`CODEBUILD_`. Awalan ini dicadangkan untuk penggunaan internal .  
Jika variabel lingkungan dengan nama yang sama didefinisikan di beberapa tempat, nilainya ditentukan sebagai berikut:  
+ Nilai dalam panggilan operasi start build lebih diutamakan. Anda dapat menambahkan atau mengganti variabel lingkungan saat membuat build. Untuk informasi selengkapnya, lihat [Jalankan AWS CodeBuild build secara manual](run-build.md). 
+ Nilai dalam definisi proyek build akan diutamakan berikutnya. Anda dapat menambahkan variabel lingkungan di tingkat proyek saat Anda membuat atau mengedit proyek. Untuk informasi selengkapnya, lihat [Buat proyek build di AWS CodeBuild](create-project.md) dan [Ubah pengaturan proyek build di AWS CodeBuild](change-project.md).
+ Nilai dalam deklarasi buildspec diutamakan paling rendah.

**env/parameter-toko**  <a name="build-spec.env.parameter-store"></a>
Diperlukan jika `env` ditentukan, dan Anda ingin mengambil variabel lingkungan kustom yang disimpan di Amazon EC2 Systems Manager Parameter Store. Berisi pemetaan*key*/*value*skalar, di mana setiap pemetaan mewakili variabel lingkungan kustom tunggal yang disimpan di Amazon EC2 Systems Manager Parameter Store. *key*adalah nama yang Anda gunakan nanti dalam perintah build untuk merujuk ke variabel lingkungan kustom ini, dan *value* merupakan nama variabel lingkungan kustom yang disimpan di Amazon EC2 Systems Manager Parameter Store. Untuk menyimpan nilai sensitif, lihat [Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html) and [Walkthrough: Membuat dan menguji parameter String (konsol)](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-console.html) di Panduan Pengguna *Amazon EC2 Systems* Manager.   
 CodeBuild Untuk memungkinkan mengambil variabel lingkungan kustom yang disimpan di Amazon EC2 Systems Manager Parameter Store, Anda harus menambahkan tindakan `ssm:GetParameters` ke peran layanan CodeBuild Anda. Untuk informasi selengkapnya, lihat [Memungkinkan CodeBuild untuk berinteraksi dengan AWS layanan lain](setting-up-service-role.md).  
Variabel lingkungan apa pun yang Anda ambil dari Amazon EC2 Systems Manager Parameter Store menggantikan variabel lingkungan yang ada. Misalnya, jika image Docker sudah berisi variabel lingkungan bernama `MY_VAR` dengan nilai`my_value`, dan Anda mengambil variabel lingkungan bernama `MY_VAR` dengan nilai`other_value`, maka `my_value` diganti dengan. `other_value` Demikian pula, jika image Docker sudah berisi variabel lingkungan bernama `PATH` dengan nilai`/usr/local/sbin:/usr/local/bin`, dan Anda mengambil variabel lingkungan bernama `PATH` dengan nilai`$PATH:/usr/share/ant/bin`, maka digantikan `/usr/local/sbin:/usr/local/bin` oleh nilai literal. `$PATH:/usr/share/ant/bin`  
Jangan menyimpan variabel lingkungan apa pun dengan nama yang dimulai dengan`CODEBUILD_`. Awalan ini dicadangkan untuk penggunaan internal .  
Jika variabel lingkungan dengan nama yang sama didefinisikan di beberapa tempat, nilainya ditentukan sebagai berikut:  
+ Nilai dalam panggilan operasi start build lebih diutamakan. Anda dapat menambahkan atau mengganti variabel lingkungan saat membuat build. Untuk informasi selengkapnya, lihat [Jalankan AWS CodeBuild build secara manual](run-build.md). 
+ Nilai dalam definisi proyek build akan diutamakan berikutnya. Anda dapat menambahkan variabel lingkungan di tingkat proyek saat Anda membuat atau mengedit proyek. Untuk informasi selengkapnya, lihat [Buat proyek build di AWS CodeBuild](create-project.md) dan [Ubah pengaturan proyek build di AWS CodeBuild](change-project.md).
+ Nilai dalam deklarasi buildspec diutamakan paling rendah.

**env/rahasia-manajer**  <a name="build-spec.env.secrets-manager"></a>
Diperlukan jika Anda ingin mengambil variabel lingkungan khusus yang disimpan di AWS Secrets Manager. Tentukan Secrets Manager `reference-key` menggunakan pola berikut:  
`<key>`: `<secret-id>:<json-key>:<version-stage>:<version-id>`    
*<key>*  
(Wajib) Nama variabel lingkungan lokal. Gunakan nama ini untuk mengakses variabel selama pembuatan.  
*<secret-id>*  
(Wajib) Nama atau Amazon Resource Name (ARN) yang berfungsi sebagai pengidentifikasi unik untuk rahasia tersebut. Untuk mengakses rahasia di AWS akun Anda, cukup tentukan nama rahasia. Untuk mengakses rahasia di AWS akun yang berbeda, tentukan rahasia ARN.   
*<json-key>*  
(Opsional) Menentukan nama kunci pasangan nilai kunci Secrets Manager yang nilainya ingin Anda ambil. Jika Anda tidak menentukan`json-key`, CodeBuild mengambil seluruh teks rahasia.   
*<version-stage>*  
(Opsional) Menentukan versi rahasia yang ingin Anda ambil dengan label pementasan yang dilampirkan ke versi. Label pementasan digunakan untuk melacak versi yang berbeda selama proses rotasi. Jika Anda menggunakan`version-stage`, jangan tentukan`version-id`. Jika Anda tidak menentukan tahap versi atau ID versi, defaultnya adalah mengambil versi dengan nilai tahap versi. `AWSCURRENT`   
*<version-id>*  
(Opsional) Menentukan identifier unik dari versi rahasia yang ingin Anda gunakan. Jika Anda menentukan `version-id`, jangan tentukan `version-stage`. Jika Anda tidak menentukan tahap versi atau ID versi, defaultnya adalah mengambil versi dengan nilai tahap versi. `AWSCURRENT` 
Dalam contoh berikut, `TestSecret` adalah nama pasangan kunci-nilai yang disimpan di Secrets Manager. Kuncinya `TestSecret` adalah`MY_SECRET_VAR`. Anda mengakses variabel selama pembuatan menggunakan `LOCAL_SECRET_VAR` nama.  

```
env:
  secrets-manager:
    LOCAL_SECRET_VAR: "TestSecret:MY_SECRET_VAR"
```
Untuk informasi selengkapnya, lihat [Apa itu AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) dalam * Panduan Pengguna AWS Secrets Manager *. 

**env/variabel yang diekspor**  <a name="build-spec.env.exported-variables"></a>
Pemetaan opsional. Digunakan untuk daftar variabel lingkungan yang ingin Anda ekspor. Tentukan nama setiap variabel yang ingin Anda ekspor pada baris terpisah di bawah`exported-variables`. Variabel yang ingin Anda ekspor harus tersedia di wadah Anda selama pembuatan. Variabel yang Anda ekspor dapat menjadi variabel lingkungan.  
Variabel lingkungan yang diekspor digunakan bersama dengan AWS CodePipeline untuk mengekspor variabel lingkungan dari tahap pembuatan saat ini ke tahap selanjutnya dalam pipeline. Untuk informasi selengkapnya, lihat [Bekerja dengan variabel](https://docs.aws.amazon.com//codepipeline/latest/userguide/actions-variables.html) di *Panduan AWS CodePipeline Pengguna*.  
Selama build, nilai variabel tersedia dimulai dengan `install` fase. Ini dapat diperbarui antara awal `install` fase dan akhir `post_build` fase. Setelah `post_build` fase berakhir, nilai variabel yang diekspor tidak dapat berubah.  
 Berikut ini tidak dapat diekspor:   
+  Rahasia Penyimpanan Parameter Amazon EC2 Systems Manager yang ditentukan dalam proyek build. 
+  Rahasia Secrets Manager yang ditentukan dalam proyek build 
+  Variabel lingkungan yang dimulai dengan`AWS_`. 

env/**git-credential-helper**  <a name="build-spec.env.git-credential-helper"></a>
Pemetaan opsional. Digunakan untuk menunjukkan jika CodeBuild menggunakan pembantu kredensi Git untuk memberikan kredensyal Git. `yes`jika digunakan. Jika tidak, `no` atau tidak ditentukan. Untuk informasi selengkapnya, lihat [gitcredentials](https://git-scm.com/docs/gitcredentials) di situs web Git.   
 `git-credential-helper`tidak didukung untuk build yang dipicu oleh webhook untuk repositori Git publik.

### proxy
<a name="build-spec.proxy"></a>

Urutan opsional. Digunakan untuk merepresentasikan setelan jika Anda menjalankan build di server proxy eksplisit. Untuk informasi selengkapnya, lihat [Jalankan CodeBuild di server proxy eksplisit](run-codebuild-in-explicit-proxy-server.md). 

**proxy/upload-artefak**  <a name="build-spec.proxy.upload-artifacts"></a>
Pemetaan opsional. Setel ke `yes` jika Anda ingin build di server proxy eksplisit untuk mengunggah artefak. Nilai default-nya `no`. 

**proksi/log**  <a name="build-spec.proxy.logs"></a>
Pemetaan opsional. Setel ke `yes` build Anda di server proxy eksplisit untuk membuat CloudWatch log. Nilai default-nya `no`. 

### fase
<a name="build-spec.phases"></a>

Urutan yang diperlukan. Merupakan perintah yang CodeBuild berjalan selama setiap fase build. 

**catatan**  
Di buildspec versi 0.1, CodeBuild jalankan setiap perintah dalam instance terpisah dari shell default di lingkungan build. Ini berarti bahwa setiap perintah berjalan secara terpisah dari semua perintah lainnya. Oleh karena itu, secara default, Anda tidak dapat menjalankan satu perintah yang bergantung pada status perintah sebelumnya (misalnya, mengubah direktori atau mengatur variabel lingkungan). Untuk mengatasi batasan ini, kami sarankan Anda menggunakan versi 0.2, yang memecahkan masalah ini. Jika Anda harus menggunakan buildspec versi 0.1, kami merekomendasikan pendekatannya di. [Shell dan perintah di lingkungan build](build-env-ref-cmd.md)

**fase/\$1/ run-as**  <a name="build-spec.phases.run-as"></a>
Urutan opsional. Gunakan dalam fase build untuk menentukan pengguna Linux yang menjalankan perintahnya. Jika juga `run-as` ditentukan secara global untuk semua perintah di bagian atas file buildspec, maka pengguna tingkat fase diutamakan. Misalnya, jika secara global `run-as` menentukan User-1, dan untuk `install` fase hanya `run-as` pernyataan yang menentukan User-2, maka semua perintah di kemudian file buildspec dijalankan sebagai User-1 *kecuali* perintah dalam fase, yang dijalankan sebagai User-2. `install`

**fase/\$1/kegagalan**  <a name="build-spec.phases.on-failure"></a>
Urutan opsional. Menentukan tindakan yang harus diambil jika kegagalan terjadi selama fase. Ini dapat berupa salah satu dari nilai berikut:  
+ `ABORT`- Batalkan bangunannya.
+ `CONTINUE`- Lanjutkan ke fase berikutnya.
+ `RETRY`- Coba lagi build hingga 3 kali dengan pesan kesalahan yang cocok dengan ekspresi `.*` reguler.
+ `RETRY-count`- Coba lagi build untuk beberapa kali tertentu, seperti yang diwakili oleh *count* dengan pesan kesalahan yang cocok dengan ekspresi `.*` reguler. Perhatikan bahwa *count* harus antara 0 dan 100. Misalnya, nilai yang valid termasuk `RETRY-4` dan`RETRY-8`.
+ `RETRY-regex`- Coba lagi build hingga 3 kali, dan gunakan *regex* untuk menyertakan ekspresi reguler untuk mencocokkan pesan kesalahan tertentu. Misalnya, nilai yang valid termasuk `Retry-.*Error: Unable to connect to database.*` dan`RETRY-invalid+`.
+ `RETRY-count-regex`- Coba lagi build untuk beberapa kali tertentu, seperti yang diwakili oleh*count*. Perhatikan bahwa *count* harus antara 0 dan 100. Anda juga dapat menggunakan *regex* untuk menyertakan ekspresi reguler untuk mencocokkan pesan kesalahan. Misalnya, nilai yang valid termasuk `Retry-3-.*connection timed out.*` dan`RETRY-8-invalid+`.
Jika properti ini tidak ditentukan, proses kegagalan mengikuti fase transisi seperti yang ditunjukkan pada[Bangun transisi fase](view-build-details-phases.md).  
`on-failure`Atribut tidak didukung saat menggunakan komputasi Lambda atau kapasitas cadangan. Atribut ini hanya berfungsi dengan gambar komputasi EC2 yang disediakan oleh. CodeBuild

**fase/\$1/ akhirnya**  <a name="build-spec.phases.finally"></a>
Blok opsional. Perintah yang ditentukan dalam `finally` blok dijalankan setelah perintah di `commands` blok. Perintah dalam `finally` blok dijalankan bahkan jika perintah di `commands` blok gagal. Misalnya, jika `commands` blok berisi tiga perintah dan yang pertama gagal, CodeBuild lewati dua perintah yang tersisa dan jalankan perintah apa pun di `finally` blok. Fase ini berhasil ketika semua perintah di `commands` dan `finally` blok berjalan dengan sukses. Jika ada perintah dalam fase gagal, fase gagal.

Nama fase build yang diizinkan adalah:

**fase/instal**  <a name="build-spec.phases.install"></a>
Urutan opsional. Merupakan perintah, jika ada, yang CodeBuild berjalan selama instalasi. Kami menyarankan Anda menggunakan `install` fase hanya untuk menginstal paket di lingkungan build. Misalnya, Anda mungkin menggunakan fase ini untuk menginstal kerangka pengujian kode seperti Mocha atau RSpec.    
**fase/instal/versi runtime**  
<a name="runtime-versions-in-build-spec"></a>Urutan opsional. Versi runtime didukung dengan Ubuntu standard image 5.0 atau yang lebih baru dan Amazon Linux 2 standard image 4.0 atau yang lebih baru. Jika ditentukan, setidaknya satu runtime harus disertakan dalam bagian ini. Tentukan runtime menggunakan versi tertentu, versi mayor diikuti oleh `.x` untuk menentukan yang CodeBuild menggunakan versi mayor tersebut dengan versi minor terbarunya, atau `latest` untuk menggunakan versi mayor dan minor terbaru (misalnya,, `ruby: 3.2``nodejs: 18.x`, atau`java: latest`). Anda dapat menentukan runtime menggunakan angka atau variabel lingkungan. Misalnya, jika Anda menggunakan Amazon Linux 2 image standar 4.0, maka berikut ini menentukan bahwa versi 17 dari Java, versi minor terbaru dari python versi 3, dan versi yang terkandung dalam variabel lingkungan Ruby diinstal. Untuk informasi selengkapnya, lihat [Gambar Docker disediakan oleh CodeBuild](build-env-ref-available.md).   

```
phases:
  install:
    runtime-versions:
      java: corretto8
      python: 3.x
      ruby: "$MY_RUBY_VAR"
```
Anda dapat menentukan satu atau beberapa runtime di `runtime-versions` bagian file buildspec Anda. Jika runtime Anda bergantung pada runtime lain, Anda juga dapat menentukan runtime dependennya dalam file buildspec. Jika Anda tidak menentukan runtime apa pun dalam file buildspec, CodeBuild pilih runtime default yang tersedia di gambar yang Anda gunakan. Jika Anda menentukan satu atau beberapa runtime, hanya CodeBuild menggunakan runtime tersebut. Jika runtime dependen tidak ditentukan, CodeBuild coba pilih runtime dependen untuk Anda.   
Jika versi runtime tidak ditentukan, CodeBuild gunakan versi default. Versi default dapat berubah ketika versi default sebelumnya mencapai akhir masa pakai (EOL). Untuk menghindari perubahan tak terduga pada lingkungan build, sebaiknya tentukan versi runtime dalam file buildspec.
Jika dua runtime yang ditentukan bertentangan, build gagal. Misalnya, `android: 29` dan `java: openjdk11` konflik, jadi jika keduanya ditentukan, build gagal.  
Untuk informasi selengkapnya tentang runtime yang tersedia, lihat[Runtime yang tersedia](available-runtimes.md).  
 Jika Anda menentukan `runtime-versions` bagian dan menggunakan gambar selain Ubuntu Standard Image 2.0 atau yang lebih baru, atau Amazon Linux 2 (AL2) image standar 1.0 atau yang lebih baru, build akan mengeluarkan peringatan, "`Skipping install of runtimes. Runtime version selection is not supported by this build image`.”   
**fase/instal/perintah**  
Urutan opsional. Berisi urutan skalar, di mana setiap skalar mewakili satu perintah yang CodeBuild berjalan selama instalasi. CodeBuild menjalankan setiap perintah, satu per satu, dalam urutan yang tercantum, dari awal hingga akhir.

**fase/pre\$1build**  <a name="build-spec.phases.pre_build"></a>
Urutan opsional. Merupakan perintah, jika ada, yang CodeBuild berjalan sebelum build. Misalnya, Anda dapat menggunakan fase ini untuk masuk ke Amazon ECR, atau Anda dapat menginstal dependensi npm.     
**fases/pre\$1build/ perintah**  
Urutan yang `pre_build` diperlukan jika ditentukan. Berisi urutan skalar, di mana setiap skalar mewakili satu perintah yang CodeBuild berjalan sebelum build. CodeBuildmenjalankan setiap perintah, satu per satu, dalam urutan yang tercantum, dari awal hingga akhir.

**fase/membangun**  <a name="build-spec.phases.build"></a>
Urutan opsional. Merupakan perintah, jika ada, yang CodeBuild berjalan selama pembuatan. Misalnya, Anda mungkin menggunakan fase ini untuk menjalankan Mocha, RSpec, atau sbt.    
**fase/build/ perintah**  
Diperlukan `build` jika ditentukan. Berisi urutan skalar, di mana setiap skalar mewakili satu perintah yang CodeBuild berjalan selama pembuatan. CodeBuild menjalankan setiap perintah, satu per satu, dalam urutan yang tercantum, dari awal hingga akhir.

**fase/post\$1build**  <a name="build-spec.phases.post_build"></a>
Urutan opsional. Merupakan perintah, jika ada, yang CodeBuild berjalan setelah build. Misalnya, Anda dapat menggunakan Maven untuk mengemas artefak build ke dalam file JAR atau WAR, atau Anda dapat mendorong image Docker ke Amazon ECR. Kemudian Anda dapat mengirim pemberitahuan build melalui Amazon SNS.    
**fases/post\$1build/ perintah**  
Diperlukan `post_build` jika ditentukan. Berisi urutan skalar, di mana setiap skalar mewakili satu perintah yang CodeBuild berjalan setelah build. CodeBuild menjalankan setiap perintah, satu per satu, dalam urutan yang tercantum, dari awal hingga akhir.<a name="reports-buildspec-file"></a>

### melaporkan
<a name="build-spec.reports"></a>

**report-group-name-or-arn**  <a name="build-spec.reports.report-name-or-arn"></a>
Urutan opsional. Menentukan grup laporan yang dikirimkan laporan. Sebuah proyek dapat memiliki maksimal lima kelompok laporan. Tentukan ARN dari grup laporan yang ada, atau nama grup laporan baru. Jika Anda menentukan nama, CodeBuild membuat grup laporan menggunakan nama proyek Anda dan nama yang Anda tentukan dalam format`<project-name>-<report-group-name>`. Nama grup laporan juga dapat diatur menggunakan variabel lingkungan dalam buildspec seperti. `$REPORT_GROUP_NAME` Untuk informasi selengkapnya, lihat [Laporkan penamaan grup](test-report-group-naming.md).

<report-group>**laporan// file**  <a name="build-spec.reports.files"></a>
Urutan yang diperlukan. Merupakan lokasi yang berisi data mentah hasil tes yang dihasilkan oleh laporan. Berisi urutan skalar, dengan setiap skalar mewakili lokasi terpisah di mana CodeBuild dapat menemukan file pengujian, relatif terhadap lokasi build asli atau, jika disetel, file. `base-directory` Lokasi dapat mencakup yang berikut:  
+ Satu file (misalnya,`my-test-report-file.json`).
+ Sebuah file tunggal dalam subdirektori (misalnya, `my-subdirectory/my-test-report-file.json` atau`my-parent-subdirectory/my-subdirectory/my-test-report-file.json`).
+ `'**/*'`mewakili semua file secara rekursif.
+ `my-subdirectory/*`mewakili semua file dalam subdirektori bernama*my-subdirectory*.
+ `my-subdirectory/**/*`mewakili semua file rekursif mulai dari subdirektori bernama. *my-subdirectory*

<report-group>**laporan// file-format**  <a name="build-spec.reports.file-format"></a>
Pemetaan opsional. Merupakan format file laporan. Jika tidak ditentukan, `JUNITXML` digunakan. Nilai ini tidak peka huruf besar/kecil. Kemungkinan nilainya adalah:  
**Laporan pengujian**    
 `CUCUMBERJSON`   
Mentimun JSON  
 `JUNITXML`   
JUnit XML-XM  
 `NUNITXML`   
NUnit XML-XM  
 `NUNIT3XML`   
NUnit 3 XML  
 `TESTNGXML`   
TestNG XML  
 `VISUALSTUDIOTRX`   
Studio Visual TRX
**Laporan cakupan kode**    
 `CLOVERXML`   
Clover XML  
 `COBERTURAXML`   
Cobertura XML  
 `JACOCOXML`   
JaCoCo XML-XM  
 `SIMPLECOV`   
SimpleCov JSON  
CodeBuild [menerima laporan cakupan kode JSON yang dihasilkan oleh [simplecov, bukan simplecov-json](https://github.com/simplecov-ruby/simplecov).](https://github.com/vicentllongo/simplecov-json)

<report-group>**laporan//direktori dasar**  <a name="build-spec.reports.base-directory"></a>
Pemetaan opsional. Merupakan satu atau beberapa direktori tingkat atas, relatif terhadap lokasi build asli, yang CodeBuild digunakan untuk menentukan tempat menemukan file pengujian mentah.

<report-group>**laporan// buangan-jalur**  <a name="build-spec.reports.discard-paths"></a>
Tidak wajib. Menentukan apakah direktori file laporan diratakan dalam output. Jika ini tidak ditentukan, atau berisi`no`, file laporan adalah output dengan struktur direktori mereka utuh. Jika ini berisi`yes`, semua file pengujian ditempatkan di direktori output yang sama. Misalnya, jika jalur ke hasil tes adalah`com/myapp/mytests/TestResult.xml`, menentukan `yes` akan menempatkan file ini di`/TestResult.xml`. <a name="artifacts-build-spec"></a>

### artefak
<a name="build-spec.artifacts"></a>

Urutan opsional. Merupakan informasi tentang di mana CodeBuild dapat menemukan output build dan bagaimana CodeBuild mempersiapkannya untuk diunggah ke bucket keluaran S3. Urutan ini tidak diperlukan jika, misalnya, Anda sedang membangun dan mendorong image Docker ke Amazon ECR, atau Anda menjalankan pengujian unit pada kode sumber Anda, tetapi tidak membangunnya.

**catatan**  
Metadata Amazon S3 memiliki CodeBuild header bernama yang berisi CodeBuild build `x-amz-meta-codebuild-buildarn` yang menerbitkan `buildArn` artefak ke Amazon S3. Ditambahkan untuk memungkinkan pelacakan sumber untuk notifikasi dan referensi dari mana artefak tersebut dihasilkan. `buildArn`

**artefak/file**  <a name="build-spec.artifacts.files"></a>
Urutan yang diperlukan. Merupakan lokasi yang berisi artefak keluaran build di lingkungan build. Berisi urutan skalar, dengan setiap skalar mewakili lokasi terpisah di mana CodeBuild dapat menemukan artefak keluaran build, relatif terhadap lokasi build asli atau, jika disetel, direktori dasar. Lokasi dapat mencakup yang berikut:  
+ Satu file (misalnya,`my-file.jar`).
+ Sebuah file tunggal dalam subdirektori (misalnya, `my-subdirectory/my-file.jar` atau`my-parent-subdirectory/my-subdirectory/my-file.jar`).
+ `'**/*'`mewakili semua file secara rekursif.
+ `my-subdirectory/*`mewakili semua file dalam subdirektori bernama*my-subdirectory*.
+ `my-subdirectory/**/*`mewakili semua file rekursif mulai dari subdirektori bernama. *my-subdirectory*
Bila Anda menentukan lokasi artefak keluaran build, CodeBuild dapat menemukan lokasi build asli di lingkungan build. Anda tidak perlu menambahkan lokasi keluaran artefak build Anda dengan jalur ke lokasi build asli atau menentukan `./` atau serupa. Jika Anda ingin mengetahui jalur ke lokasi ini, Anda dapat menjalankan perintah seperti `echo $CODEBUILD_SRC_DIR` selama pembuatan. Lokasi untuk setiap lingkungan bangunan mungkin sedikit berbeda. 

**artefak/nama**  <a name="build-spec.artifacts.name"></a>
Nama opsional. Menentukan nama untuk artefak build Anda. Nama ini digunakan ketika salah satu dari berikut ini benar.  
+ Anda menggunakan CodeBuild API untuk membuat build dan `overrideArtifactName` flag disetel pada `ProjectArtifacts` objek saat proyek diperbarui, proyek dibuat, atau build dimulai. 
+ Anda menggunakan CodeBuild konsol untuk membuat build, nama ditentukan dalam file buildspec, dan Anda memilih **Aktifkan versi semantik** saat membuat atau memperbarui proyek. Untuk informasi selengkapnya, lihat [Buat proyek build (konsol)](create-project.md#create-project-console). 
Anda dapat menentukan nama dalam file buildspec yang dihitung pada waktu pembuatan. Nama yang ditentukan dalam file buildspec menggunakan bahasa perintah Shell. Misalnya, Anda dapat menambahkan tanggal dan waktu untuk nama artefak Anda sehingga selalu unik. Nama artefak unik mencegah artefak ditimpa. Untuk informasi selengkapnya, lihat [Bahasa perintah Shell](http://pubs.opengroup.org/onlinepubs/9699919799/).   
+ Ini adalah contoh nama artefak yang ditambahkan dengan tanggal artefak dibuat. 

  ```
  version: 0.2
  phases:
    build:
      commands:
        - rspec HelloWorld_spec.rb
  artifacts:
    files:
      - '**/*'
    name: myname-$(date +%Y-%m-%d)
  ```
+ Ini adalah contoh nama artefak yang menggunakan variabel CodeBuild lingkungan. Untuk informasi selengkapnya, lihat [Variabel lingkungan di lingkungan build](build-env-ref-env-vars.md). 

  ```
  version: 0.2
  phases:
    build:
      commands:
        - rspec HelloWorld_spec.rb
  artifacts:
    files:
      - '**/*'
    name: myname-$AWS_REGION
  ```
+ Ini adalah contoh nama artefak yang menggunakan variabel CodeBuild lingkungan dengan tanggal pembuatan artefak ditambahkan padanya. 

  ```
  version: 0.2
  phases:
    build:
      commands:
        - rspec HelloWorld_spec.rb
  artifacts:
    files:
      - '**/*'
    name: $AWS_REGION-$(date +%Y-%m-%d)
  ```
Anda dapat menambahkan informasi jalur ke nama sehingga artefak bernama ditempatkan di direktori berdasarkan jalur dalam nama. Dalam contoh ini, artefak build ditempatkan di output di bawah`builds/<build number>/my-artifacts`.  

```
version: 0.2
phases:
  build:
    commands:
      - rspec HelloWorld_spec.rb
artifacts:
  files:
    - '**/*'
  name: builds/$CODEBUILD_BUILD_NUMBER/my-artifacts
```

**artefak/jalur buangan-**  <a name="build-spec.artifacts.discard-paths"></a>
Tidak wajib. Menentukan apakah direktori artefak build diratakan dalam output. Jika ini tidak ditentukan, atau berisi`no`, artefak build adalah keluaran dengan struktur direktorinya utuh. Jika ini berisi`yes`, semua artefak build ditempatkan di direktori keluaran yang sama. Misalnya, jika jalur ke file dalam artefak keluaran build adalah`com/mycompany/app/HelloWorld.java`, menentukan `yes` akan menempatkan file ini. `/HelloWorld.java` 

**artefak/direktori dasar**  <a name="build-spec.artifacts.base-directory"></a>
Pemetaan opsional. Merupakan satu atau beberapa direktori tingkat atas, relatif terhadap lokasi build asli, yang CodeBuild digunakan untuk menentukan file dan subdirektori mana yang akan disertakan dalam artefak keluaran build. Nilai yang valid meliputi:  
+ Sebuah direktori tingkat atas tunggal (misalnya,`my-directory`).
+ `'my-directory*'`mewakili semua direktori tingkat atas dengan nama yang dimulai dengan. `my-directory`
Direktori tingkat atas yang cocok tidak disertakan dalam artefak keluaran build, hanya file dan subdirektorinya.   
Anda dapat menggunakan `files` dan `discard-paths` untuk lebih membatasi file dan subdirektori mana yang disertakan. Misalnya, untuk struktur direktori berikut:   

```
.
├── my-build-1
│   └── my-file-1.txt
└── my-build-2
    ├── my-file-2.txt
    └── my-subdirectory
        └── my-file-3.txt
```
Dan untuk `artifacts` urutan berikut:  

```
artifacts:
  files:
    - '*/my-file-3.txt'
  base-directory: my-build-2
```
Subdirektori dan file berikut akan disertakan dalam artefak keluaran build:  

```
.
└── my-subdirectory
    └── my-file-3.txt
```
Sedangkan untuk `artifacts` urutan berikut:  

```
artifacts:
  files:
    - '**/*'
  base-directory: 'my-build*'
  discard-paths: yes
```
File-file berikut akan disertakan dalam artefak keluaran build:  

```
.
├── my-file-1.txt
├── my-file-2.txt
└── my-file-3.txt
```

**artefak/tidak termasuk jalur**  <a name="build-spec.artifacts.exclude-paths"></a>
Pemetaan opsional. Merupakan satu atau lebih jalur, relatif terhadap`base-directory`, yang CodeBuild akan dikecualikan dari artefak build. Karakter tanda bintang (`*`) cocok dengan karakter nol atau karakter lain dari komponen nama tanpa melintasi batas folder. Tanda bintang ganda (`**`) cocok dengan nol atau lebih karakter dari komponen nama di semua direktori.  
Contoh jalur pengecualian meliputi yang berikut:  
+ Untuk mengecualikan file dari semua direktori: `"**/file-name/**/*"`
+ Untuk mengecualikan semua folder titik: `"**/.*/**/*"`
+ Untuk mengecualikan semua file titik: `"**/.*"`

**artefak/aktifkan-symlink**  <a name="build-spec.artifacts.enable-symlinks"></a>
Tidak wajib. Jika jenis output`ZIP`, menentukan apakah link simbolik internal dipertahankan dalam file ZIP. Jika ini berisi`yes`, semua tautan simbolis internal di sumber akan disimpan dalam artefak file ZIP. 

**artefak/awalan s3**  <a name="build-spec.artifacts.s3-prefix"></a>
Tidak wajib. Menentukan awalan yang digunakan saat artefak dikeluarkan ke bucket Amazon S3 dan jenis namespace adalah. `BUILD_ID` Saat digunakan, jalur keluaran di ember adalah`<s3-prefix>/<build-id>/<name>.zip`.

**artefak/artefak sekunder**  <a name="build-spec.artifacts.secondary-artifacts"></a>
Urutan opsional. Merupakan satu atau lebih definisi artefak sebagai pemetaan antara pengidentifikasi artefak dan definisi artefak. Setiap pengidentifikasi artefak di blok ini harus cocok dengan artefak yang ditentukan dalam `secondaryArtifacts` atribut proyek Anda. Setiap definisi terpisah memiliki sintaks yang sama dengan `artifacts` blok di atas.   
[`artifacts/files`](#build-spec.artifacts.files)Urutan selalu diperlukan, bahkan ketika hanya ada artefak sekunder yang ditentukan.
Misalnya, jika proyek Anda memiliki struktur berikut:  

```
{
  "name": "sample-project",
  "secondaryArtifacts": [
    {
      "type": "S3",
      "location": "<output-bucket1>",
      "artifactIdentifier": "artifact1",
      "name": "secondary-artifact-name-1"
    },
    {
      "type": "S3",
      "location": "<output-bucket2>",
      "artifactIdentifier": "artifact2",
      "name": "secondary-artifact-name-2"
    }
  ]
}
```
Kemudian buildspec Anda terlihat seperti berikut:  

```
version: 0.2

phases:
build:
  commands:
    - echo Building...
artifacts:
  files:
    - '**/*'
  secondary-artifacts:
    artifact1:
      files:
        - directory/file1
      name: secondary-artifact-name-1
    artifact2:
      files:
        - directory/file2
      name: secondary-artifact-name-2
```

### cache
<a name="build-spec.cache"></a>

Urutan opsional. Merupakan informasi tentang di mana CodeBuild dapat menyiapkan file untuk mengunggah cache ke bucket cache S3. Urutan ini tidak diperlukan jika jenis cache proyek`No Cache`.

**cache/kunci**  <a name="build-spec.cache.key"></a>
Urutan opsional. Merupakan kunci utama yang digunakan saat mencari atau memulihkan cache. CodeBuild melakukan pencocokan yang tepat untuk kunci utama.  
Berikut adalah contoh untuk kuncinya:  

```
key: npm-key-$(codebuild-hash-files package-lock.json) }
```

**kunci cache/fallback**  <a name="build-spec.cache.fallback-keys"></a>
Urutan opsional. Merupakan daftar kunci fallback yang digunakan secara berurutan ketika cache tidak dapat ditemukan menggunakan kunci utama. Hingga lima tombol fallback didukung, dan masing-masing dicocokkan menggunakan pencarian awalan. Urutan ini akan diabaikan jika **kunci** tidak disediakan.  
Berikut adalah contoh untuk fallback-keys:  

```
fallback-keys:
    - npm-key-$(codebuild-hash-files package-lock.json) }
    - npm-key-
    - npm-
```

**cache/tindakan**  <a name="build-spec.cache.action"></a>
Urutan opsional. Menentukan tindakan untuk melakukan pada cache. Nilai yang valid meliputi:  
+ `restore`yang hanya mengembalikan cache tanpa menyimpan pembaruan.
+ `save`yang hanya menyimpan cache tanpa memulihkan versi sebelumnya.
Jika tidak ada nilai yang diberikan, CodeBuild default untuk melakukan pemulihan dan penyimpanan.

**cache/jalur**  <a name="build-spec.cache.paths"></a>
Urutan yang diperlukan. Merupakan lokasi cache. Berisi urutan skalar, dengan setiap skalar mewakili lokasi terpisah di mana CodeBuild dapat menemukan artefak keluaran build, relatif terhadap lokasi build asli atau, jika disetel, direktori dasar. Lokasi dapat mencakup yang berikut:  
+ Satu file (misalnya,`my-file.jar`).
+ Sebuah file tunggal dalam subdirektori (misalnya, `my-subdirectory/my-file.jar` atau`my-parent-subdirectory/my-subdirectory/my-file.jar`).
+ `'**/*'`mewakili semua file secara rekursif.
+ `my-subdirectory/*`mewakili semua file dalam subdirektori bernama*my-subdirectory*.
+ `my-subdirectory/**/*`mewakili semua file rekursif mulai dari subdirektori bernama. *my-subdirectory*

**penting**  
Karena deklarasi buildspec harus YAMM yang valid, spasi dalam deklarasi buildspec menjadi penting. Jika jumlah spasi dalam deklarasi buildspec Anda tidak valid, build mungkin akan segera gagal. Anda dapat menggunakan validator YAMM untuk menguji apakah deklarasi buildspec Anda adalah YAMAL yang valid.   
Jika Anda menggunakan AWS CLI, atau AWS SDKs untuk mendeklarasikan buildspec saat membuat atau memperbarui proyek build, buildspec harus berupa string tunggal yang diekspresikan dalam format YAMAL, bersama dengan spasi putih yang diperlukan dan karakter escape baris baru. Ada contoh di bagian selanjutnya.  
Jika Anda menggunakan CodeBuild atau AWS CodePipeline konsol alih-alih file buildspec.yl, Anda dapat menyisipkan perintah untuk fase saja. `build` Alih-alih menggunakan sintaks sebelumnya, Anda mencantumkan, dalam satu baris, semua perintah yang ingin Anda jalankan selama fase build. Untuk beberapa perintah, pisahkan setiap perintah dengan `&&` (misalnya,`mvn test && mvn package`).  
Anda dapat menggunakan CodeBuild atau CodePipeline konsol alih-alih file buildspec.ymluntuk menentukan lokasi artefak keluaran build di lingkungan build. Alih-alih menggunakan sintaks sebelumnya, Anda mencantumkan, dalam satu baris, semua lokasi. Untuk beberapa lokasi, pisahkan setiap lokasi dengan koma (misalnya,`buildspec.yml, target/my-app.jar`). 

## Contoh Buildspec
<a name="build-spec-ref-example"></a>

Berikut adalah contoh file buildspec.yml.

```
version: 0.2

env:
  variables:
    JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64"
  parameter-store:
    LOGIN_PASSWORD: /CodeBuild/dockerLoginPassword

phases:
  install:
    commands:
      - echo Entered the install phase...
      - apt-get update -y
      - apt-get install -y maven
    finally:
      - echo This always runs even if the update or install command fails 
  pre_build:
    commands:
      - echo Entered the pre_build phase...
      - docker login -u User -p $LOGIN_PASSWORD
    finally:
      - echo This always runs even if the login command fails 
  build:
    commands:
      - echo Entered the build phase...
      - echo Build started on `date`
      - mvn install
    finally:
      - echo This always runs even if the install command fails
  post_build:
    commands:
      - echo Entered the post_build phase...
      - echo Build completed on `date`

reports:
  arn:aws:codebuild:your-region:your-aws-account-id:report-group/report-group-name-1:
    files:
      - "**/*"
    base-directory: 'target/tests/reports'
    discard-paths: no
  reportGroupCucumberJson:
    files:
      - 'cucumber/target/cucumber-tests.xml'
    discard-paths: yes
    file-format: CUCUMBERJSON # default is JUNITXML
artifacts:
  files:
    - target/messageUtil-1.0.jar
  discard-paths: yes
  secondary-artifacts:
    artifact1:
      files:
        - target/artifact-1.0.jar
      discard-paths: yes
    artifact2:
      files:
        - target/artifact-2.0.jar
      discard-paths: yes
cache:
  paths:
    - '/root/.m2/**/*'
```

Berikut adalah contoh buildspec sebelumnya, dinyatakan sebagai string tunggal, untuk digunakan dengan, atau. AWS CLI AWS SDKs

```
"version: 0.2\n\nenv:\n  variables:\n    JAVA_HOME: \"/usr/lib/jvm/java-8-openjdk-amd64\\"\n  parameter-store:\n    LOGIN_PASSWORD: /CodeBuild/dockerLoginPassword\n  phases:\n\n  install:\n    commands:\n      - echo Entered the install phase...\n      - apt-get update -y\n      - apt-get install -y maven\n    finally:\n      - echo This always runs even if the update or install command fails \n  pre_build:\n    commands:\n      - echo Entered the pre_build phase...\n      - docker login -u User -p $LOGIN_PASSWORD\n    finally:\n      - echo This always runs even if the login command fails \n  build:\n    commands:\n      - echo Entered the build phase...\n      - echo Build started on `date`\n      - mvn install\n    finally:\n      - echo This always runs even if the install command fails\n  post_build:\n    commands:\n      - echo Entered the post_build phase...\n      - echo Build completed on `date`\n\n reports:\n  reportGroupJunitXml:\n    files:\n      - \"**/*\"\n    base-directory: 'target/tests/reports'\n    discard-paths: false\n  reportGroupCucumberJson:\n    files:\n      - 'cucumber/target/cucumber-tests.xml'\n    file-format: CUCUMBERJSON\n\nartifacts:\n  files:\n    - target/messageUtil-1.0.jar\n  discard-paths: yes\n  secondary-artifacts:\n    artifact1:\n      files:\n       - target/messageUtil-1.0.jar\n      discard-paths: yes\n    artifact2:\n      files:\n       - target/messageUtil-1.0.jar\n      discard-paths: yes\n cache:\n  paths:\n    - '/root/.m2/**/*'"
```

Berikut adalah contoh perintah dalam `build` fase, untuk digunakan dengan CodeBuild atau CodePipeline konsol.

```
echo Build started on `date` && mvn install
```

Dalam contoh ini:
+ Variabel lingkungan khusus, dalam teks biasa, dengan kunci `JAVA_HOME` dan nilai`/usr/lib/jvm/java-8-openjdk-amd64`, diatur.
+ Variabel lingkungan kustom bernama `dockerLoginPassword` Anda disimpan di Amazon EC2 Systems Manager Parameter Store direferensikan nanti dalam perintah build dengan menggunakan kunci. `LOGIN_PASSWORD`
+ Anda tidak dapat mengubah nama fase build ini. Perintah yang dijalankan dalam contoh ini adalah `apt-get update -y` dan `apt-get install -y maven` (untuk menginstal Apache Maven), `mvn install` (untuk mengkompilasi, menguji, dan mengemas kode sumber ke dalam artefak keluaran build dan menginstal artefak keluaran build di repositori internalnya), `docker login` (untuk masuk ke Docker dengan kata sandi yang sesuai dengan nilai variabel lingkungan khusus yang Anda tetapkan di Amazon `dockerLoginPassword` EC2 Systems Manager Parameter Store), dan beberapa perintah. `echo` `echo`Perintah disertakan di sini untuk menunjukkan bagaimana CodeBuild menjalankan perintah dan urutan di mana ia menjalankannya. 
+ `files`mewakili file yang akan diunggah ke lokasi keluaran build. Dalam contoh ini, CodeBuild upload file `messageUtil-1.0.jar` tunggal. `messageUtil-1.0.jar`File dapat ditemukan di direktori relatif bernama `target` di lingkungan build. Karena `discard-paths: yes` ditentukan, `messageUtil-1.0.jar` diunggah langsung (dan bukan ke `target` direktori perantara). Nama file `messageUtil-1.0.jar` dan nama direktori relatif `target` didasarkan pada cara Apache Maven membuat dan menyimpan artefak keluaran build untuk contoh ini saja. Dalam skenario Anda sendiri, nama file dan direktori ini akan berbeda. 
+ `reports`mewakili dua grup laporan yang menghasilkan laporan selama pembuatan:
  + `arn:aws:codebuild:your-region:your-aws-account-id:report-group/report-group-name-1`menentukan ARN dari grup laporan. Hasil pengujian yang dihasilkan oleh kerangka pengujian ada di `target/tests/reports` direktori. Format file `JunitXml` dan jalur tidak dihapus dari file yang berisi hasil pengujian.
  + `reportGroupCucumberJson`menentukan grup laporan baru. Jika nama proyek adalah`my-project`, grup laporan dengan nama akan `my-project-reportGroupCucumberJson` dibuat saat build dijalankan. Hasil pengujian yang dihasilkan oleh kerangka pengujian ada di`cucumber/target/cucumber-tests.xml`. Format file pengujian adalah `CucumberJson` dan jalur dihapus dari file yang berisi hasil pengujian.

## Versi Buildspec
<a name="build-spec-ref-versions"></a>

Tabel berikut mencantumkan versi buildspec dan perubahan antar versi.


| Versi | Perubahan | 
| --- | --- | 
| 0,2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/codebuild/latest/userguide/build-spec-ref.html)  | 
| 0.1 | Ini adalah definisi awal dari format spesifikasi build. | 

# Referensi buildspec build Batch
<a name="batch-build-buildspec"></a>

Topik ini berisi referensi buildspec untuk properti build batch.

## batch
<a name="build-spec.batch"></a>

Pemetaan opsional. Pengaturan pembuatan batch untuk proyek.

**batch/cepat-gagal**  
Tidak wajib. Menentukan perilaku build batch saat satu atau beberapa tugas build gagal.    
`false`  
Nilai default. Semua build yang berjalan akan selesai.   
`true`  
Semua build yang berjalan akan dihentikan ketika salah satu tugas build gagal.

Secara default, semua tugas build batch dijalankan dengan setelan build seperti `env` dan`phases`, yang ditentukan dalam file buildspec. Anda dapat mengganti setelan build default dengan menentukan `env` nilai yang berbeda atau file buildspec yang berbeda dalam parameter. `batch/<batch-type>/buildspec`

Isi `batch` properti bervariasi berdasarkan jenis build batch yang ditentukan. Jenis build batch yang mungkin adalah:
+ [`batch/build-graph`](#build-spec.batch.build-graph)
+ [`batch/build-list`](#build-spec.batch.build-list)
+ [`batch/build-matrix`](#build-spec.batch.build-matrix)
+ [`batch/build-fanout`](#build-spec.batch.build-fanout)

## `batch/build-graph`
<a name="build-spec.batch.build-graph"></a>

Mendefinisikan *grafik build*. Grafik build mendefinisikan sekumpulan tugas yang memiliki dependensi pada tugas lain dalam batch. Untuk informasi selengkapnya, lihat [Membangun grafik](batch-build.md#batch_build_graph).

Elemen ini berisi array tugas build. Setiap tugas build berisi properti berikut.

**pengenal**  
Wajib. Pengidentifikasi tugas.

**buildspec**  
Tidak wajib. Path dan nama file file buildspec yang akan digunakan untuk tugas ini. Jika parameter ini tidak ditentukan, file buildspec saat ini digunakan.

**debug sesi**  
Tidak wajib. Nilai Boolean yang menunjukkan apakah debugging sesi diaktifkan untuk build batch ini. Untuk informasi selengkapnya tentang debugging sesi, lihat[Debug dibangun dengan Session Manager](session-manager.md).    
`false`  
Debugging sesi dinonaktifkan.   
`true`  
Debugging sesi diaktifkan. 

**tergantung pada**  
Tidak wajib. Array pengidentifikasi tugas yang bergantung pada tugas ini. Tugas ini tidak akan berjalan sampai tugas-tugas ini selesai.

**env**  
Tidak wajib. Lingkungan build menggantikan tugas tersebut. Ini dapat berisi properti berikut:    
**tipe komputasi**  
Pengidentifikasi tipe komputasi yang akan digunakan untuk tugas tersebut. Lihat **ComputeType** untuk nilai yang mungkin[Bangun mode dan tipe komputasi lingkungan](build-env-ref-compute-types.md).  
**armada**  
Pengidentifikasi armada yang akan digunakan untuk tugas tersebut. Untuk informasi selengkapnya, lihat [Jalankan build di atas armada kapasitas cadangan](fleets.md).  
**gambar**  
Pengidentifikasi gambar yang akan digunakan untuk tugas tersebut. Lihat **Pengenal gambar** [Gambar Docker disediakan oleh CodeBuild](build-env-ref-available.md) untuk nilai yang mungkin.  
**mode istimewa**  
Nilai Boolean yang menunjukkan apakah akan menjalankan daemon Docker di dalam wadah Docker. Setel ke `true` hanya jika proyek build digunakan untuk membangun image Docker. Jika tidak, build yang mencoba berinteraksi dengan daemon Docker akan gagal. Pengaturan default-nya adalah `false`.  
**jenis**  
Pengidentifikasi jenis lingkungan yang akan digunakan untuk tugas tersebut. Lihat **Environment type** in [Bangun mode dan tipe komputasi lingkungan](build-env-ref-compute-types.md) untuk nilai yang mungkin.  
**variabel**  
Variabel lingkungan yang akan hadir di lingkungan build. Untuk informasi selengkapnya, lihat [env/variabel](build-spec-ref.md#build-spec.env.variables).
Perhatikan bahwa **tipe komputasi** dan **armada** tidak dapat disediakan dalam pengenal yang sama dari satu build.

**abaikan-kegagalan**  
Tidak wajib. Nilai Boolean yang menunjukkan jika kegagalan tugas build ini dapat diabaikan.    
`false`  
Nilai default. Jika tugas build ini gagal, build batch akan gagal.   
`true`  
Jika tugas build ini gagal, build batch masih bisa berhasil. 

Berikut ini adalah contoh entri buildspec grafik build:

```
batch:
  fast-fail: false
  build-graph:
    - identifier: build1
      env:
        variables:
          BUILD_ID: build1
      ignore-failure: false
    - identifier: build2
      buildspec: build2.yml
      env:
        variables:
          BUILD_ID: build2
      depend-on:
        - build1
    - identifier: build3
      env:
        variables:
          BUILD_ID: build3
      depend-on:
        - build2
    - identifier: build4
      env:
        compute-type: ARM_LAMBDA_1GB
    - identifier: build5
      env:
        fleet: fleet_name
```

## `batch/build-list`
<a name="build-spec.batch.build-list"></a>

Mendefinisikan *daftar build*. Daftar build digunakan untuk menentukan sejumlah tugas yang berjalan secara paralel. Untuk informasi selengkapnya, lihat [Membangun daftar](batch-build.md#batch_build_list).

Elemen ini berisi array tugas build. Setiap tugas build berisi properti berikut.

**pengenal**  
Wajib. Pengidentifikasi tugas.

**buildspec**  
Tidak wajib. Path dan nama file file buildspec yang akan digunakan untuk tugas ini. Jika parameter ini tidak ditentukan, file buildspec saat ini digunakan.

**debug sesi**  
Tidak wajib. Nilai Boolean yang menunjukkan apakah debugging sesi diaktifkan untuk build batch ini. Untuk informasi selengkapnya tentang debugging sesi, lihat[Debug dibangun dengan Session Manager](session-manager.md).    
`false`  
Debugging sesi dinonaktifkan.   
`true`  
Debugging sesi diaktifkan. 

**env**  
Tidak wajib. Lingkungan build menggantikan tugas tersebut. Ini dapat berisi properti berikut:    
**tipe komputasi**  
Pengidentifikasi tipe komputasi yang akan digunakan untuk tugas tersebut. Lihat **ComputeType** untuk nilai yang mungkin[Bangun mode dan tipe komputasi lingkungan](build-env-ref-compute-types.md).  
**armada**  
Pengidentifikasi armada yang akan digunakan untuk tugas tersebut. Untuk informasi selengkapnya, lihat [Jalankan build di atas armada kapasitas cadangan](fleets.md).  
**gambar**  
Pengidentifikasi gambar yang akan digunakan untuk tugas tersebut. Lihat **Pengenal gambar** [Gambar Docker disediakan oleh CodeBuild](build-env-ref-available.md) untuk nilai yang mungkin.  
**mode istimewa**  
Nilai Boolean yang menunjukkan apakah akan menjalankan daemon Docker di dalam wadah Docker. Setel ke `true` hanya jika proyek build digunakan untuk membangun image Docker. Jika tidak, build yang mencoba berinteraksi dengan daemon Docker akan gagal. Pengaturan default-nya adalah `false`.  
**jenis**  
Pengidentifikasi jenis lingkungan yang akan digunakan untuk tugas tersebut. Lihat **Environment type** in [Bangun mode dan tipe komputasi lingkungan](build-env-ref-compute-types.md) untuk nilai yang mungkin.  
**variabel**  
Variabel lingkungan yang akan hadir di lingkungan build. Untuk informasi selengkapnya, lihat [env/variabel](build-spec-ref.md#build-spec.env.variables).
Perhatikan bahwa **tipe komputasi** dan **armada** tidak dapat disediakan dalam pengenal yang sama dari satu build.

**abaikan-kegagalan**  
Tidak wajib. Nilai Boolean yang menunjukkan jika kegagalan tugas build ini dapat diabaikan.    
`false`  
Nilai default. Jika tugas build ini gagal, build batch akan gagal.   
`true`  
Jika tugas build ini gagal, build batch masih bisa berhasil. 

Berikut ini adalah contoh entri buildspec daftar build:

```
batch:
  fast-fail: false
  build-list:
    - identifier: build1
      env:
        variables:
          BUILD_ID: build1
      ignore-failure: false
    - identifier: build2
      buildspec: build2.yml
      env:
        variables:
          BUILD_ID: build2
      ignore-failure: true
    - identifier: build3
      env:
        compute-type: ARM_LAMBDA_1GB
    - identifier: build4
      env:
        fleet: fleet_name
    - identifier: build5
      env:
        compute-type: GENERAL_LINUX_XLAGRE
```

## `batch/build-matrix`
<a name="build-spec.batch.build-matrix"></a>

Mendefinisikan *matriks build*. Matriks build mendefinisikan tugas dengan konfigurasi berbeda yang berjalan secara paralel. CodeBuild membuat build terpisah untuk setiap kombinasi konfigurasi yang mungkin. Untuk informasi selengkapnya, lihat [Membangun matriks](batch-build.md#batch_build_matrix).

**statis**  
Properti statis berlaku untuk semua tugas build.    
**abaikan-kegagalan**  
Tidak wajib. Nilai Boolean yang menunjukkan jika kegagalan tugas build ini dapat diabaikan.    
`false`  
Nilai default. Jika tugas build ini gagal, build batch akan gagal.   
`true`  
Jika tugas build ini gagal, build batch masih bisa berhasil.   
**env**  
Tidak wajib. Lingkungan build menggantikan semua tugas.     
**mode istimewa**  
Nilai Boolean yang menunjukkan apakah akan menjalankan daemon Docker di dalam wadah Docker. Setel ke `true` hanya jika proyek build digunakan untuk membangun image Docker. Jika tidak, build yang mencoba berinteraksi dengan daemon Docker akan gagal. Pengaturan default-nya adalah `false`.  
**jenis**  
Pengidentifikasi jenis lingkungan yang akan digunakan untuk tugas tersebut. Lihat **Environment type** in [Bangun mode dan tipe komputasi lingkungan](build-env-ref-compute-types.md) untuk nilai yang mungkin.

**dinamis**  
Properti dinamis menentukan matriks build.    
**buildspec**  
Tidak wajib. Array yang berisi path dan nama file file buildspec yang akan digunakan untuk tugas-tugas ini. Jika parameter ini tidak ditentukan, file buildspec saat ini digunakan.   
**env**  
Tidak wajib. Lingkungan build menggantikan tugas-tugas ini.    
**tipe komputasi**  
Array yang berisi pengidentifikasi tipe komputasi yang akan digunakan untuk tugas-tugas ini. Lihat **ComputeType** untuk nilai yang mungkin[Bangun mode dan tipe komputasi lingkungan](build-env-ref-compute-types.md).  
**gambar**  
Array yang berisi pengidentifikasi gambar yang akan digunakan untuk tugas-tugas ini. Lihat **Pengenal gambar** [Gambar Docker disediakan oleh CodeBuild](build-env-ref-available.md) untuk nilai yang mungkin.  
**variabel**  
Array yang berisi variabel lingkungan yang akan hadir di lingkungan build untuk tugas-tugas ini. Untuk informasi selengkapnya, lihat [env/variabel](build-spec-ref.md#build-spec.env.variables).

Berikut ini adalah contoh entri buildspec matriks build:

```
batch:
  build-matrix:
    static:
      ignore-failure: false
    dynamic:
      buildspec: 
        - matrix1.yml
        - matrix2.yml
      env:
        variables:
          MY_VAR:
            - VALUE1
            - VALUE2
            - VALUE3
```

Untuk informasi selengkapnya, lihat [Membangun matriks](batch-build.md#batch_build_matrix).

## `batch/build-fanout`
<a name="build-spec.batch.build-fanout"></a>

Mendefinisikan *fanout build*. Fanout build digunakan untuk mendefinisikan tugas yang dibagi menjadi beberapa build yang berjalan secara paralel. Untuk informasi selengkapnya, lihat [Jalankan tes paralel dalam build batch](parallel-test.md).

Elemen ini berisi tugas build yang dapat dibagi menjadi beberapa build. `build-fanout`Bagian ini berisi properti berikut.

**paralelisme**  
Wajib. Jumlah build yang akan menjalankan tes secara paralel.

**abaikan-kegagalan**  
Tidak wajib. Nilai boolean yang menunjukkan jika kegagalan dalam salah satu tugas build fanout dapat diabaikan. Nilai **ignore-failure** ini akan diterapkan ke semua build fanout.    
**palsu**  
Nilai default. Jika ada tugas pembuatan fanout yang gagal, build batch akan gagal.  
**benar**  
Jika ada tugas pembuatan fanout yang gagal, build batch masih bisa berhasil.

Berikut ini adalah contoh entri buildspec fanout build:

```
version: 0.2

batch:
   fast-fail: false 
   build-fanout:
     parallelism: 5
     ignore-failure: false

phases:
  install:
    commands:
      - npm install
   build:
    commands:
      - mkdir -p test-results
      - cd test-results
      - |
        codebuild-tests-run \
         --test-command 'npx jest --runInBand --coverage' \
         --files-search "codebuild-glob-search '**/test/**/*.test.js'" \
         --sharding-strategy 'equal-distribution'
```

Untuk informasi selengkapnya, silakan lihat [Bangun fanout](batch-build.md#batch_build_fanout) dan [Gunakan perintah `codebuild-tests-run` CLI](parallel-test-tests-run.md).