

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

# Gunakan sampel berbasis kasus untuk CodeBuild
<a name="use-case-based-samples"></a>

Anda dapat menggunakan sampel berbasis kasus penggunaan ini untuk bereksperimen dengan: AWS CodeBuild

[Sampel lintas layanan](cross-service-samples.md)  
Daftar sampel lintas layanan untuk bereksperimen AWS CodeBuild.

[Membangun sampel lencana](sample-build-badges.md)  
Menunjukkan cara mengatur CodeBuild dengan lencana build.

[Sampel laporan uji](sample-test-report-cli.md)  
Menggunakan AWS CLI untuk membuat, menjalankan, dan melihat hasil laporan pengujian.

[Sampel Docker untuk CodeBuild](sample-docker-section.md)  
Menunjukkan cara menggunakan gambar Docker khusus, mempublikasikan gambar Docker ke repositori di Amazon ECR, dan menggunakan gambar Docker di registri pribadi.

[Host build output dalam bucket S3 ](sample-disable-artifact-encryption.md)  
Menunjukkan cara membuat situs web statis di bucket S3 menggunakan artefak build yang tidak terenkripsi.

[ Beberapa input dan output sampel ](sample-multi-in-out.md)  
Menunjukkan cara menggunakan beberapa sumber input dan beberapa artefak keluaran dalam proyek build.

[ Sampel eksekusi uji paralel ](sample-parallel-test.md)  
Menunjukkan cara menggunakan perintah `codebuild-tests-run` CLI untuk membagi dan menjalankan tes di seluruh lingkungan eksekusi paralel.

[ Versi runtime dalam contoh file buildspec ](sample-runtime-versions.md)  
Menunjukkan cara menentukan runtime dan versinya di file buildspec.

[Contoh versi sumber](sample-source-version.md)  
Menunjukkan cara menggunakan versi tertentu dari sumber Anda dalam proyek CodeBuild build.

[Sampel repositori sumber pihak ketiga untuk CodeBuild](sample-third-party-source.md)  
Menunjukkan cara membuat BitBucket, Server GitHub Perusahaan, dan GitHub menarik permintaan dengan webhook menggunakan. CodeBuild

[Tetapkan nama artefak pada waktu pembuatan menggunakan versi semantik](sample-buildspec-artifact-naming.md)  
Menunjukkan cara menggunakan versi semantik untuk membuat nama artefak pada waktu pembuatan.

# Sampel lintas layanan untuk CodeBuild
<a name="cross-service-samples"></a>

Anda dapat menggunakan sampel lintas layanan ini untuk bereksperimen dengan AWS CodeBuild:

[Sampel Amazon ECR](sample-ecr.md)  
Menggunakan image Docker di repositori Amazon ECR untuk menggunakan Apache Maven untuk menghasilkan satu file JAR. Petunjuk sampel akan menunjukkan kepada Anda cara membuat dan mendorong gambar Docker ke Amazon ECR, membuat proyek Go, membangun proyek, menjalankan proyek, dan menyiapkan izin untuk memungkinkan terhubung CodeBuild ke Amazon ECR.

[Sampel Amazon EFS](sample-efs.md)  
Menunjukkan cara mengonfigurasi file buildspec sehingga CodeBuild proyek dipasang dan dibangun di sistem file Amazon EFS. Petunjuk sampel akan menunjukkan kepada Anda cara membuat VPC Amazon, membuat sistem file di VPC Amazon, membuat dan membangun proyek yang menggunakan VPC Amazon, dan kemudian meninjau file dan variabel proyek yang dihasilkan. 

[AWS CodePipeline sampel](sample-codepipeline.md)  
Menunjukkan cara menggunakan AWS CodePipeline untuk membuat build dengan build batch serta beberapa sumber input dan beberapa artefak keluaran. Termasuk dalam bagian ini adalah contoh file JSON yang menunjukkan struktur pipa yang membuat build batch dengan artefak terpisah, dan artefak gabungan. Sampel JSON tambahan disediakan yang menunjukkan struktur pipa dengan beberapa sumber input dan beberapa artefak keluaran.

[AWS Config sampel](how-to-integrate-config.md)  
Menunjukkan cara mengatur AWS Config. Daftar CodeBuild sumber daya mana yang dilacak dan menjelaskan cara mencari CodeBuild proyek. AWS Config Instruksi sampel akan menunjukkan kepada Anda prasyarat untuk diintegrasikan, langkah-langkah untuk menyiapkan AWS Config AWS Config, dan langkah-langkah untuk mencari proyek dan data di dalamnya. CodeBuild AWS Config

[Buat contoh notifikasi](sample-build-notifications.md)  
Menggunakan Apache Maven untuk menghasilkan satu file JAR. Mengirim pemberitahuan build ke pelanggan topik Amazon SNS. Petunjuk contoh menunjukkan kepada Anda cara mengatur izin sehingga CodeBuild dapat berkomunikasi dengan Amazon SNS CloudWatch dan, cara membuat dan CodeBuild mengidentifikasi topik di Amazon SNS, cara berlangganan penerima topik, dan cara mengatur aturan. CloudWatch

# Sampel Amazon ECR untuk CodeBuild
<a name="sample-ecr"></a>

Contoh ini menggunakan image Docker di repositori image Amazon Elastic Container Registry (Amazon ECR) Registry ECR) untuk membuat proyek Go sampel.

**penting**  
Menjalankan sampel ini dapat mengakibatkan biaya ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk AWS CodeBuild dan untuk AWS sumber daya dan tindakan yang terkait dengan Amazon S3,, CloudWatch Log AWS KMS, dan Amazon ECR. Untuk informasi selengkapnya, lihat [CodeBuild harga, harga](https://aws.amazon.com/codebuild/pricing) [Amazon S3, harga, [AWS Key Management Service harga](https://aws.amazon.com/kms/pricing)](https://aws.amazon.com/s3/pricing) Amazon, dan [ CloudWatch harga Amazon](https://aws.amazon.com/cloudwatch/pricing) [Elastic Container Registry](https://aws.amazon.com/ecr/pricing).

**Topics**
+ [

## Jalankan sampel Amazon ECR
](#sample-ecr-running)

## Jalankan sampel Amazon ECR
<a name="sample-ecr-running"></a>

Gunakan petunjuk berikut untuk menjalankan sampel Amazon ECR. CodeBuild

**Untuk menjalankan sampel ini**

1. Untuk membuat dan mendorong gambar Docker ke repositori gambar Anda di Amazon ECR, selesaikan langkah-langkah di bagian[Jalankan sampel 'Publikasikan gambar Docker ke Amazon ECR'](sample-docker.md#sample-docker-running). [Sampel 'Publikasikan gambar Docker ke Amazon ECR'](sample-docker.md)

1. Buat proyek Go: 

   1. Buat file seperti yang dijelaskan di [Pergi file proyek](#sample-ecr-go-project-files) bagian [Struktur proyek Go](#ecr-sample-go-project-file-structure) dan topik ini, lalu unggah ke bucket input S3 atau repositori AWS CodeCommit GitHub, atau Bitbucket. 
**penting**  
Jangan mengunggah`(root directory name)`, hanya file di dalamnya`(root directory name)`.   
Jika Anda menggunakan bucket input S3, pastikan untuk membuat file ZIP yang berisi file, lalu unggah ke bucket input. Jangan tambahkan `(root directory name)` ke file ZIP, hanya file di dalamnya`(root directory name)`.

   1. Buat proyek build, jalankan build, dan lihat informasi build terkait.

      Jika Anda menggunakan AWS CLI untuk membuat proyek build, input berformat JSON ke `create-project` perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.)

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

   1. Untuk mendapatkan artefak keluaran build, buka bucket keluaran S3 Anda.

   1. Unduh `GoOutputArtifact.zip` file ke komputer atau instance lokal Anda, lalu ekstrak konten file tersebut. Dalam konten yang diekstraksi, dapatkan `hello` file. 

1.  Jika salah satu dari berikut ini benar, Anda harus menambahkan izin ke repositori gambar Anda di Amazon ECR sehingga AWS CodeBuild dapat menarik image Docker-nya ke lingkungan build. 
   +  Proyek Anda menggunakan CodeBuild kredensi untuk menarik gambar Amazon ECR. Ini dilambangkan dengan nilai `CODEBUILD` dalam `imagePullCredentialsType` atribut Anda. `ProjectEnvironment` 
   +  Proyek Anda menggunakan gambar ECR Amazon lintas akun. Dalam hal ini, proyek Anda harus menggunakan peran layanannya untuk menarik gambar Amazon ECR. Untuk mengaktifkan perilaku ini, setel `imagePullCredentialsType` atribut Anda `ProjectEnvironment` ke`SERVICE_ROLE`. 

   1. Buka konsol Amazon ECR di [https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/).

   1. Dalam daftar nama repositori, pilih nama repositori yang Anda buat atau pilih.

   1. Dari panel navigasi, pilih **Izin**, pilih **Edit**, lalu pilih **Tambah** pernyataan.

   1. Untuk **nama Pernyataan**, masukkan pengenal (misalnya,**CodeBuildAccess**).

   1. Untuk **Efek**, biarkan **Izinkan** dipilih. Ini menunjukkan bahwa Anda ingin mengizinkan akses ke AWS akun lain.

   1. Untuk **Principal**, lakukan salah satu hal berikut:
      + Jika project Anda menggunakan CodeBuild kredensi untuk menarik image Amazon ECR, di **Prinsipal layanan**, masukkan. **codebuild.amazonaws.com** 
      + Jika proyek Anda menggunakan gambar ECR Amazon lintas akun, untuk **AWS akun IDs**, masukkan IDs AWS akun yang ingin Anda berikan akses.

   1. Lewati daftar **Semua entitas IAM**.

   1. **Untuk **Tindakan**, pilih tindakan khusus tarik: ecr:, **ecr: GetDownloadUrlForLayer**, dan **ecr: BatchGetImage**. BatchCheckLayerAvailability**

   1. Untuk **Ketentuan**, tambahkan yang berikut ini:

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

   1. Pilih **Simpan**.

      Kebijakan ini ditampilkan di **Izin**. Kepala sekolah adalah apa yang Anda masukkan untuk **Principal** pada langkah 3 dari prosedur ini:
      + **Jika project Anda menggunakan CodeBuild kredensi untuk menarik image Amazon ECR, `"codebuild.amazonaws.com"` muncul di bawah Prinsipal layanan.**
      + **Jika project Anda menggunakan image Amazon ECR lintas akun, ID AWS akun yang ingin Anda berikan akses akan muncul di bawah AWS Akun. IDs**

        Kebijakan contoh berikut menggunakan CodeBuild kredensi dan gambar ECR Amazon lintas akun.

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

****  

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

------
      + Jika proyek Anda menggunakan CodeBuild kredensi dan Anda ingin CodeBuild proyek Anda memiliki akses terbuka ke repositori Amazon ECR, Anda dapat menghilangkan `Condition` kunci dan menambahkan kebijakan sampel berikut.

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

****  

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

------

1. Buat proyek build, jalankan build, dan lihat informasi build.

   Jika Anda menggunakan AWS CLI untuk membuat proyek build, input berformat JSON ke `create-project` perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.)

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

1. Untuk mendapatkan artefak keluaran build, buka bucket keluaran S3 Anda.

1. Unduh `GoOutputArtifact.zip` file ke komputer atau instance lokal Anda, lalu ekstrak konten `GoOutputArtifact.zip` file tersebut. Dalam konten yang diekstraksi, dapatkan `hello` file.

### Struktur proyek Go
<a name="ecr-sample-go-project-file-structure"></a>

Sampel ini mengasumsikan struktur direktori ini.

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

### Pergi file proyek
<a name="sample-ecr-go-project-files"></a>

Sampel ini menggunakan file-file ini.

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

```
version: 0.2

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

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

```
package main
import "fmt"

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

# Sampel Amazon Elastic File System untuk AWS CodeBuild
<a name="sample-efs"></a>

 Anda mungkin ingin membuat AWS CodeBuild build di Amazon Elastic File System, layanan file bersama yang dapat diskalakan untuk instans Amazon EC2. Kapasitas penyimpanan dengan Amazon EFS elastis, sehingga tumbuh atau menyusut saat file ditambahkan dan dihapus. Ini memiliki antarmuka layanan web sederhana yang dapat Anda gunakan untuk membuat dan mengkonfigurasi sistem file. Ini juga mengelola semua infrastruktur penyimpanan file untuk Anda, jadi Anda tidak perlu khawatir tentang menyebarkan, menambal, atau memelihara konfigurasi sistem file. Untuk informasi selengkapnya, lihat [Apa itu Amazon Elastic File System?](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) di *Panduan Pengguna Amazon Elastic File System*. 

 Contoh ini menunjukkan kepada Anda cara mengonfigurasi CodeBuild proyek sehingga dipasang dan kemudian membangun aplikasi Java ke sistem file Amazon EFS. Sebelum memulai, Anda harus memiliki aplikasi Java yang siap dibangun yang diunggah ke bucket input S3 atau, GitHub Enterprise Server AWS CodeCommit GitHub, atau repositori Bitbucket. 

Data dalam perjalanan untuk sistem file Anda dienkripsi. Untuk mengenkripsi data dalam perjalanan menggunakan gambar yang berbeda, lihat [Mengenkripsi data](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) dalam perjalanan. 

**Topics**
+ [

## Gunakan AWS CodeBuild dengan Amazon Elastic File System
](#sample-efs-high-level-steps)
+ [

# Memecahkan masalah integrasi Amazon EFS
](sample-efs-troubleshooting.md)

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

Sampel mencakup empat langkah tingkat tinggi yang diperlukan untuk menggunakan Amazon EFS dengan AWS CodeBuild. File tersebut adalah: 

1. Buat virtual private cloud (VPC) di akun Anda AWS . 

1. Buat sistem file yang menggunakan VPC ini. 

1. Buat dan bangun CodeBuild proyek yang menggunakan VPC. CodeBuild Proyek ini menggunakan yang berikut ini untuk mengidentifikasi sistem file:
   +  Pengidentifikasi sistem file yang unik. Anda memilih pengenal saat menentukan sistem file dalam proyek build Anda.
   + ID sistem file. ID ditampilkan saat Anda melihat sistem file di konsol Amazon EFS.
   +  Titik pemasangan. Ini adalah direktori di wadah Docker Anda yang memasang sistem file. 
   + Opsi pemasangan. Ini termasuk rincian tentang cara me-mount sistem file.

1. Tinjau proyek build untuk memastikan bahwa file dan variabel proyek yang benar dihasilkan.

**catatan**  
 Sistem file yang dibuat di Amazon EFS hanya didukung pada platform Linux. 

 

**Topics**
+ [

### Langkah 1: Buat VPC menggunakan CloudFormation
](#sample-efs-create-vpc)
+ [

### Langkah 2: Buat sistem file Amazon Elastic File System dengan VPC Anda
](#sample-efs-create-efs)
+ [

### Langkah 3: Buat CodeBuild proyek untuk digunakan dengan Amazon EFS
](#sample-efs-create-acb)
+ [

### Langkah 4: Tinjau proyek pembangunan
](#sample-efs-summary)

### Langkah 1: Buat VPC menggunakan CloudFormation
<a name="sample-efs-create-vpc"></a>

 Buat VPC Anda dengan template. CloudFormation 

1.  Ikuti petunjuk yang digunakan [CloudFormation Templat VPC](cloudformation-vpc-template.md) CloudFormation untuk membuat VPC. 
**catatan**  
 VPC yang dibuat oleh CloudFormation template ini memiliki dua subnet pribadi dan dua subnet publik. Anda hanya boleh menggunakan subnet pribadi ketika Anda menggunakan AWS CodeBuild untuk me-mount sistem file yang Anda buat di Amazon EFS. Jika Anda menggunakan salah satu subnet publik, build gagal. 

1. Masuk ke Konsol Manajemen AWS dan buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1.  Pilih VPC yang Anda buat dengan. CloudFormation

1. Pada tab **Deskripsi**, catat nama VPC Anda dan ID-nya. Keduanya diperlukan saat Anda membuat AWS CodeBuild proyek nanti dalam sampel ini. 

### Langkah 2: Buat sistem file Amazon Elastic File System dengan VPC Anda
<a name="sample-efs-create-efs"></a>

 Buat sistem file Amazon EFS sederhana untuk sampel ini menggunakan VPC yang Anda buat sebelumnya. 

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon EFS di [ https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/).

1.  Pilih **Buat sistem file**. 

1.  Dari **VPC**, pilih nama VPC yang Anda catat sebelumnya dalam sampel ini. 

1.  Biarkan Availability Zones yang terkait dengan subnet Anda dipilih. 

1.  Pilih **Langkah Selanjutnya.** 

1.  Di **Tambahkan tag**, untuk kunci **Nama** default, di **Nilai**, masukkan nama sistem file Amazon EFS Anda. 

1.  Tetap pilih **Bursting** dan **Tujuan Umum** sebagai mode kinerja dan throughput default Anda, lalu pilih Langkah **Berikutnya**. 

1. Untuk **Konfigurasi akses klien**, pilih **Langkah Berikutnya**.

1.  Pilih **Buat Sistem File**. 

1.  (Opsional) Sebaiknya tambahkan kebijakan ke sistem file Amazon EFS Anda yang memberlakukan enkripsi data dalam perjalanan. **Di konsol Amazon EFS, pilih **Kebijakan sistem file**, pilih **Edit**, pilih kotak berlabel **Terapkan enkripsi dalam perjalanan untuk semua klien**, lalu pilih Simpan.**

### Langkah 3: Buat CodeBuild proyek untuk digunakan dengan Amazon EFS
<a name="sample-efs-create-acb"></a>

 Buat AWS CodeBuild proyek yang menggunakan VPC yang Anda buat sebelumnya dalam contoh ini. Saat build dijalankan, ia memasang sistem file Amazon EFS yang dibuat sebelumnya. Selanjutnya, ia menyimpan file.jar yang dibuat oleh aplikasi Java Anda di direktori mount point sistem file Anda.

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

1.  Dari panel navigasi, pilih **Build projects**, lalu pilih **Create build project**. 

1.  Dalam **Nama proyek**, masukkan nama untuk proyek Anda. 

1.  Dari **penyedia Sumber**, pilih repositori yang berisi aplikasi Java yang ingin Anda bangun. 

1.  Masukkan informasi, seperti URL repositori, yang CodeBuild digunakan untuk menemukan aplikasi Anda. Pilihannya berbeda untuk setiap penyedia sumber. Untuk informasi selengkapnya, lihat [Choose source provider](create-project.md#create-project-source-provider). 

1.  Dari **gambar Lingkungan**, pilih **Gambar terkelola**. 

1.  Dari **Sistem operasi**, pilih **Amazon Linux 2**. 

1. Dari **Runtime (s)**, pilih **Standard**. 

1.  Dari **Gambar**, pilih **aws/codebuild/amazonlinux-x86\$164-standard:4.0**. 

1.  Dari **jenis Lingkungan**, pilih **Linux**. 

1.  Di bawah **Peran layanan**, pilih **Peran layanan baru**. Di **Nama peran**, masukkan nama untuk peran yang CodeBuild dibuat untuk Anda. 

1. Perluas **Additional configuration** (Konfigurasi tambahan).

1.  Pilih **Aktifkan bendera ini jika Anda ingin membuat gambar Docker atau ingin build Anda mendapatkan hak istimewa yang lebih tinggi**.
**catatan**  
Secara default, daemon Docker diaktifkan untuk build non-VPC. Jika Anda ingin menggunakan kontainer Docker untuk build VPC, [lihat Runtime Privilege dan Kemampuan Linux di situs web Docker Docs dan](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) aktifkan mode istimewa. Juga, Windows tidak mendukung mode istimewa.

1.  Dari **VPC**, pilih ID VPC. 

1.  Dari **Subnet**, pilih satu atau beberapa subnet pribadi yang terkait dengan VPC Anda. Anda harus menggunakan subnet pribadi dalam build yang memasang sistem file Amazon EFS. Jika Anda menggunakan subnet publik, build gagal. 

1.  Dari **Grup Keamanan**, pilih grup keamanan default.

1.  Dalam **sistem File**, masukkan informasi berikut:
   + Untuk **Identifier**, masukkan pengenal sistem file unik. Itu harus kurang dari 129 karakter dan hanya berisi karakter alfanumerik dan garis bawah. CodeBuild menggunakan pengenal ini untuk membuat variabel lingkungan yang mengidentifikasi sistem file elastis. Format variabel lingkungan `CODEBUILD_<file_system_identifier>` dalam huruf kapital. Misalnya, jika Anda masuk`my_efs`, variabel lingkungan adalah`CODEBUILD_MY_EFS`. 
   + Untuk **ID**, pilih ID sistem file. 
   + (Opsional) Masukkan direktori dalam sistem file. CodeBuild memasang direktori ini. Jika Anda membiarkan **jalur Direktori** kosong, CodeBuild pasang seluruh sistem file. Path relatif terhadap root sistem file. 
   + Untuk **Mount point**, masukkan path absolut direktori di container build tempat sistem file dipasang. Jika direktori ini tidak ada, CodeBuild buat selama pembuatan. 
   + (Opsional) Masukkan opsi pemasangan. Jika Anda membiarkan **opsi Mount** kosong, CodeBuild gunakan opsi pemasangan defaultnya:

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

     Untuk informasi selengkapnya, lihat [Opsi Pemasangan NFS yang Disarankan](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-nfs-mount-settings.html) di *Panduan Pengguna Amazon Elastic File System*. 

1.  Untuk **spesifikasi Build**, pilih **Insert build command**, lalu pilih **Switch to editor**. 

1.  Masukkan perintah spesifikasi build berikut ke dalam editor. Ganti `<file_system_identifier>` dengan pengenal yang Anda masukkan pada langkah 17. Gunakan huruf kapital (misalnya,`CODEBUILD_MY_EFS`).

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

1.  Gunakan nilai default untuk semua pengaturan lainnya, lalu pilih **Buat proyek build**. Ketika build Anda selesai, halaman konsol untuk project Anda akan ditampilkan. 

1.  Pilih **Mulai membangun**. 

### Langkah 4: Tinjau proyek pembangunan
<a name="sample-efs-summary"></a>



 Setelah AWS CodeBuild proyek Anda dibangun: 
+  Anda memiliki file.jar yang dibuat oleh aplikasi Java Anda yang dibangun ke sistem file Amazon EFS Anda di bawah direktori mount point Anda. 
+  Variabel lingkungan yang mengidentifikasi sistem file Anda dibuat menggunakan pengenal sistem file yang Anda masukkan saat Anda membuat proyek. 

 Untuk informasi selengkapnya, lihat [Memasang sistem file](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html) di *Panduan Pengguna Amazon Elastic File System*. 

# Memecahkan masalah integrasi Amazon EFS
<a name="sample-efs-troubleshooting"></a>

Berikut ini adalah kesalahan yang mungkin Anda temui saat menyiapkan Amazon EFS dengan CodeBuild.

**Topics**
+ [

## CLIENT\$1ERROR: pemasangan '127.0.0.1: /' gagal. izin ditolak
](#sample-efs-troubleshooting.permission-denied)
+ [

## CLIENT\$1ERROR: pemasangan '127.0.0.1: /' gagal. koneksi diatur ulang oleh rekan
](#sample-efs-troubleshooting.connection-reset)
+ [

## VPC\$1CLIENT\$1ERROR: Kesalahan EC2 yang tidak terduga: UnauthorizedOperation
](#sample-efs-troubleshooting.unauthorized-operation)

## CLIENT\$1ERROR: pemasangan '127.0.0.1: /' gagal. izin ditolak
<a name="sample-efs-troubleshooting.permission-denied"></a>

Otorisasi IAM tidak didukung untuk memasang Amazon EFS dengan. CodeBuild Jika Anda menggunakan kebijakan sistem file Amazon EFS khusus, Anda harus memberikan akses baca dan tulis ke semua prinsip IAM. Contoh:

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

## CLIENT\$1ERROR: pemasangan '127.0.0.1: /' gagal. koneksi diatur ulang oleh rekan
<a name="sample-efs-troubleshooting.connection-reset"></a>

Ada dua kemungkinan penyebab kesalahan ini:
+ Subnet CodeBuild VPC berada di zona ketersediaan yang berbeda dari target pemasangan Amazon EFS. Anda dapat mengatasinya dengan menambahkan subnet VPC di zona ketersediaan yang sama dengan target pemasangan Amazon EFS.
+ Grup keamanan tidak memiliki izin untuk berkomunikasi dengan Amazon EFS. Anda dapat mengatasinya dengan menambahkan aturan masuk untuk mengizinkan semua lalu lintas dari VPC (tambahkan blok CIDR utama untuk VPC Anda), atau grup keamanan itu sendiri.

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

Kesalahan ini terjadi ketika semua subnet dalam konfigurasi VPC Anda untuk CodeBuild proyek adalah subnet publik. Anda harus memiliki setidaknya satu subnet pribadi di VPC untuk memastikan konektivitas jaringan. 

# AWS CodePipeline sampel untuk CodeBuild
<a name="sample-codepipeline"></a>

Bagian ini menjelaskan integrasi sampel antara CodePipeline dan CodeBuild.


| Sampel | Deskripsi | 
| --- | --- | 
|  [Sampel CodePipeline/CodeBuild integrasi dan pembuatan batch](#sample-pipeline-batch)  |  Sampel ini mendemonstrasikan cara menggunakan AWS CodePipeline untuk membuat proyek build yang menggunakan build batch.  | 
|  [Contoh CodePipeline/CodeBuild integrasi dengan beberapa sumber input dan artefak keluaran](#sample-pipeline-multi-input-output)  |  Contoh ini menunjukkan cara menggunakan AWS CodePipeline untuk membuat proyek build yang menggunakan beberapa sumber input untuk membuat beberapa artefak keluaran.  | 

## Sampel CodePipeline/CodeBuild integrasi dan pembuatan batch
<a name="sample-pipeline-batch"></a>

AWS CodeBuild mendukung pembuatan batch. Contoh berikut menunjukkan cara menggunakan AWS CodePipeline untuk membuat proyek build yang menggunakan build batch.

Anda dapat menggunakan file berformat JSON yang mendefinisikan struktur pipeline Anda, dan kemudian menggunakannya dengan file untuk membuat pipeline. AWS CLI Untuk informasi selengkapnya, lihat [Referensi struktur AWS CodePipeline pipa](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html) di *Panduan AWS CodePipeline Pengguna*.

### Batch build dengan artefak individual
<a name="sample-pipeline-batch.separate-artifacts"></a>

Gunakan file JSON berikut sebagai contoh struktur pipeline yang membuat batch build dengan artefak terpisah. Untuk mengaktifkan batch build in CodePipeline, atur `BatchEnabled` parameter `configuration` objek ke`true`.

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

Berikut ini adalah contoh file CodeBuild buildspec yang akan bekerja dengan konfigurasi pipeline ini.

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

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

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

Nama artefak keluaran yang ditentukan dalam file JSON pipeline harus cocok dengan pengenal build dan artefak yang ditentukan dalam file buildspec Anda. Sintaksnya adalah *buildIdentifier* untuk artefak primer, dan *buildIdentifier* \$1 *artifactIdentifier* untuk artefak sekunder.

Misalnya, untuk nama artefak keluaran`build1`, CodeBuild akan mengunggah artefak utama `build1` ke lokasi. `build1` Untuk nama output`build1_artifact1`, CodeBuild akan mengunggah `artifact1` artefak sekunder `build1` ke lokasi`build1_artifact1`, dan sebagainya. Jika hanya satu lokasi output yang ditentukan, nama seharusnya *buildIdentifier* hanya.

Setelah Anda membuat file JSON, Anda dapat membuat pipeline Anda. Gunakan AWS CLI untuk menjalankan perintah **create-pipeline** dan meneruskan file ke parameter. `--cli-input-json` Untuk informasi selengkapnya, lihat [Membuat pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) di *AWS CodePipeline Panduan Pengguna*. 

### Batch build dengan artefak gabungan
<a name="sample-pipeline-batch.combined-artifacts"></a>

Gunakan file JSON berikut sebagai contoh struktur pipeline yang membuat batch build dengan artefak gabungan. Untuk mengaktifkan batch build in CodePipeline, atur `BatchEnabled` parameter `configuration` objek ke`true`. Untuk menggabungkan artefak build ke lokasi yang sama, atur `CombineArtifacts` parameter `configuration` objek ke`true`.

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

Berikut ini adalah contoh file CodeBuild buildspec yang akan bekerja dengan konfigurasi pipeline ini.

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

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

artifacts:
  files:
    - output_file
```

Jika artefak gabungan diaktifkan untuk pembuatan batch, hanya ada satu output yang diizinkan. CodeBuild akan menggabungkan artefak utama dari semua build menjadi satu file ZIP tunggal.

Setelah Anda membuat file JSON, Anda dapat membuat pipeline Anda. Gunakan AWS CLI untuk menjalankan perintah **create-pipeline** dan meneruskan file ke parameter. `--cli-input-json` Untuk informasi selengkapnya, lihat [Membuat pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) di *AWS CodePipeline Panduan Pengguna*. 

## Contoh CodePipeline/CodeBuild integrasi dengan beberapa sumber input dan artefak keluaran
<a name="sample-pipeline-multi-input-output"></a>

Sebuah AWS CodeBuild proyek dapat mengambil lebih dari satu sumber input. Itu juga dapat membuat lebih dari satu artefak keluaran. Contoh ini menunjukkan cara menggunakan AWS CodePipeline untuk membuat proyek build yang menggunakan beberapa sumber input untuk membuat beberapa artefak keluaran. Untuk informasi selengkapnya, lihat [Beberapa sumber input dan sampel artefak keluaran](sample-multi-in-out.md).

Anda dapat menggunakan file berformat JSON yang mendefinisikan struktur pipeline Anda, dan kemudian menggunakannya dengan file untuk membuat pipeline. AWS CLI Gunakan file JSON berikut sebagai contoh struktur pipa yang membuat build dengan lebih dari satu sumber input dan lebih dari satu artefak keluaran. Kemudian dalam contoh ini Anda melihat bagaimana file ini menentukan beberapa input dan output. Untuk informasi selengkapnya, lihat [referensi struktur CodePipeline pipa](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html) di *Panduan AWS CodePipeline Pengguna*.

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

 Dalam file JSON ini: 
+ Salah satu sumber input Anda harus ditunjuk`PrimarySource`. Sumber ini adalah direktori tempat CodeBuild mencari dan menjalankan file buildspec Anda. Kata kunci `PrimarySource` digunakan untuk menentukan sumber utama di `configuration` bagian CodeBuild tahap dalam file JSON. 
+ Setiap sumber input dipasang di direktorinya sendiri. Direktori ini disimpan dalam variabel lingkungan bawaan `$CODEBUILD_SRC_DIR` untuk sumber utama dan `$CODEBUILD_SRC_DIR_yourInputArtifactName` untuk semua sumber lainnya. Untuk pipeline dalam sampel ini, dua direktori sumber input adalah `$CODEBUILD_SRC_DIR` dan`$CODEBUILD_SRC_DIR_source2`. Untuk informasi selengkapnya, lihat [Variabel lingkungan di lingkungan build](build-env-ref-env-vars.md). 
+ Nama artefak keluaran yang ditentukan dalam file JSON pipeline harus cocok dengan nama artefak sekunder yang ditentukan dalam file buildspec Anda. Pipeline ini menggunakan file buildspec berikut. Untuk informasi selengkapnya, lihat [Sintaks Buildspec](build-spec-ref.md#build-spec-ref-syntax). 

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

 Setelah Anda membuat file JSON, Anda dapat membuat pipeline Anda. Gunakan AWS CLI untuk menjalankan perintah **create-pipeline** dan meneruskan file ke parameter. `--cli-input-json` Untuk informasi selengkapnya, lihat [Membuat pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) di *AWS CodePipeline Panduan Pengguna*. 

# AWS Config sampel dengan CodeBuild
<a name="how-to-integrate-config"></a>

AWS Config menyediakan inventaris sumber AWS daya Anda dan riwayat perubahan konfigurasi pada sumber daya ini. AWS Config sekarang mendukung AWS CodeBuild sebagai AWS sumber daya, yang berarti layanan dapat melacak CodeBuild proyek Anda. Untuk informasi lebih lanjut tentang AWS Config, lihat [Apa itu AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) di *Panduan AWS Config Pengembang*.

Anda dapat melihat informasi berikut tentang CodeBuild sumber daya di halaman **Inventaris Sumber Daya** di AWS Config konsol:
+ Garis waktu CodeBuild konfigurasi Anda berubah.
+ Detail konfigurasi untuk setiap CodeBuild proyek.
+ Hubungan dengan AWS sumber daya lain.
+ Daftar perubahan pada CodeBuild proyek Anda.

**Topics**
+ [

## Gunakan CodeBuild dengan AWS Config
](#how-to-integrate-config-run)
+ [

## Langkah 3: Lihat AWS CodeBuild data di AWS Config konsol
](#viewing-config-details)

## Gunakan CodeBuild dengan AWS Config
<a name="how-to-integrate-config-run"></a>

Prosedur dalam topik ini menunjukkan kepada Anda cara mengatur AWS Config dan mencari CodeBuild proyek.

**Topics**
+ [

### Prasyarat
](#how-to-create-a-build-project)
+ [

### Langkah 1: Mengatur AWS Config
](#setup-config)
+ [

### Langkah 2: Cari AWS CodeBuild proyek
](#lookup-projects)

### Prasyarat
<a name="how-to-create-a-build-project"></a>

Buat AWS CodeBuild proyek Anda. Untuk petunjuk, lihat [Buat proyek build](create-project.md).

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

**catatan**  
Setelah Anda menyelesaikan penyiapan, mungkin diperlukan waktu hingga 10 menit sebelum Anda dapat melihat AWS CodeBuild proyek di AWS Config konsol.

### Langkah 2: Cari AWS CodeBuild proyek
<a name="lookup-projects"></a>

1. Masuk ke AWS Management Console dan buka AWS Config konsol di [https://console.aws.amazon.com/config](https://console.aws.amazon.com/config). 

1. Pada halaman **Inventaris sumber daya**, pilih **AWS CodeBuild Proyek** di bawah **Jenis sumber daya**. Gulir ke bawah dan pilih kotak centang **CodeBuildproyek**.

1. Pilih **Lihat**.

1. Setelah daftar CodeBuild proyek ditambahkan, pilih tautan nama CodeBuild proyek di kolom **timeline Config**.

## Langkah 3: Lihat AWS CodeBuild data di AWS Config konsol
<a name="viewing-config-details"></a>

Saat Anda mencari sumber daya di halaman **inventaris Sumber Daya**, Anda dapat memilih AWS Config garis waktu untuk melihat detail tentang CodeBuild proyek Anda. Halaman detail untuk sumber daya menyediakan informasi tentang konfigurasi, hubungan, dan jumlah perubahan yang dilakukan pada sumber daya tersebut. 

Blok di bagian atas halaman secara kolektif disebut timeline. Garis waktu menunjukkan tanggal dan waktu rekaman itu dibuat.

Untuk informasi selengkapnya, lihat [Melihat detail konfigurasi di AWS Config konsol](https://docs.aws.amazon.com/config/latest/developerguide/view-manage-resource-console.html) di *Panduan AWS Config Pengembang*.

# Buat contoh notifikasi untuk CodeBuild
<a name="sample-build-notifications"></a>

Amazon CloudWatch Events memiliki dukungan bawaan untuk AWS CodeBuild. CloudWatch Acara adalah aliran peristiwa sistem yang menjelaskan perubahan dalam AWS sumber daya Anda. Dengan CloudWatch Acara, Anda menulis aturan deklaratif untuk mengaitkan peristiwa yang menarik dengan tindakan otomatis yang akan diambil. Contoh ini menggunakan Amazon CloudWatch Events dan Amazon Simple Notification Service (Amazon SNS) untuk mengirim notifikasi build ke pelanggan setiap kali build berhasil, gagal, berpindah dari satu fase build ke fase build lainnya, atau kombinasi dari event ini.

**penting**  
Menjalankan sampel ini dapat mengakibatkan biaya ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk CodeBuild dan untuk AWS sumber daya dan tindakan yang terkait dengan Amazon CloudWatch dan Amazon SNS. Untuk informasi selengkapnya, lihat [CodeBuild harga](https://aws.amazon.com/codebuild/pricing), [ CloudWatchharga Amazon](https://aws.amazon.com/cloudwatch/pricing), dan harga [Amazon SNS](https://aws.amazon.com/sns/pricing).

**Topics**
+ [

## Jalankan contoh notifikasi build
](#sample-build-notifications-running)
+ [

# Buat referensi format masukan pemberitahuan
](sample-build-notifications-ref.md)

## Jalankan contoh notifikasi build
<a name="sample-build-notifications-running"></a>

Gunakan prosedur berikut untuk menjalankan contoh pemberitahuan build.

**Untuk menjalankan sampel ini**

1. Jika Anda sudah memiliki topik yang disiapkan dan berlangganan di Amazon SNS yang ingin Anda gunakan untuk sampel ini, lanjutkan ke langkah 4. Jika tidak, jika Anda menggunakan pengguna IAM alih-alih akun AWS root atau pengguna administrator untuk bekerja dengan Amazon SNS, tambahkan pernyataan berikut (*\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1*antara *\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1* dan) ke pengguna (atau grup IAM yang terkait dengan pengguna). Menggunakan akun AWS root tidak disarankan. Pernyataan ini memungkinkan melihat, membuat, berlangganan, dan menguji pengiriman notifikasi ke topik di Amazon SNS. Ellipses (`...`) digunakan untuk singkatnya dan untuk membantu Anda menemukan tempat untuk menambahkan pernyataan. Jangan menghapus pernyataan apa pun, dan jangan ketik elips ini ke dalam kebijakan yang ada.

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

****  

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

------
**catatan**  
Entitas IAM yang memodifikasi kebijakan ini harus memiliki izin di IAM untuk memodifikasi kebijakan.  
Untuk informasi selengkapnya, lihat [Mengedit kebijakan terkelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) atau bagian “Mengedit atau menghapus kebijakan sebaris untuk grup, pengguna, atau peran” di [Bekerja dengan kebijakan sebaris (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) di Panduan Pengguna *IAM*.

1. Buat atau identifikasi topik di Amazon SNS. AWS CodeBuild menggunakan CloudWatch Acara untuk mengirim pemberitahuan build ke topik ini melalui Amazon SNS. 

   Untuk membuat topik:

   1. [Buka konsol Amazon SNS di https://console.aws.amazon.com /sns.](https://console.aws.amazon.com/sns)

   1. Pilih **Buat topik**. 

   1. Di **Buat topik baru**, untuk **nama Topik**, masukkan nama untuk topik (misalnya,**CodeBuildDemoTopic**). (Jika Anda memilih nama yang berbeda, gantilah di seluruh sampel ini.) 

   1. Pilih **Buat topik**.

   1. Pada CodeBuildDemoTopic halaman **Detail topik:**, salin nilai **Topik ARN**. Anda memerlukan nilai ini untuk langkah berikutnya. 

        
![\[Nilai Topik ARN.\]](http://docs.aws.amazon.com/id_id/codebuild/latest/userguide/images/topic-arn.png)

      

   Untuk informasi selengkapnya, lihat [Membuat topik](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) di Panduan *Pengembang Amazon SNS*.

1. Berlangganan satu atau beberapa penerima ke topik untuk menerima pemberitahuan email. 

   Untuk berlangganan penerima ke suatu topik:

   1. **Dengan konsol Amazon SNS terbuka dari langkah sebelumnya, di panel navigasi, pilih Langganan, lalu pilih Buat **langganan**.**

   1. Di **Buat langganan**, untuk **Topik ARN**, tempel topik ARN yang Anda salin dari langkah sebelumnya.

   1. Untuk **Protokol**, pilih **Email**.

   1. Untuk **Endpoint**, masukkan alamat email lengkap penerima. 

        
![\[Konfigurasi berlangganan.\]](http://docs.aws.amazon.com/id_id/codebuild/latest/userguide/images/create-subscription.png)

      

   1. Pilih **Buat Langganan**.

   1. Amazon SNS mengirimkan email konfirmasi berlangganan ke penerima. Untuk mulai menerima pemberitahuan email, penerima harus memilih tautan **Konfirmasi langganan** di email konfirmasi langganan. Setelah penerima mengklik tautan, jika berhasil berlangganan, Amazon SNS menampilkan pesan konfirmasi di browser web penerima.

   Untuk informasi selengkapnya, lihat [Berlangganan topik](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html) di Panduan *Pengembang Amazon SNS*.

1. Jika Anda menggunakan pengguna alih-alih akun AWS root atau pengguna administrator untuk bekerja dengan CloudWatch Acara, tambahkan pernyataan berikut (antara *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* dan*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) ke pengguna (atau grup IAM yang terkait dengan pengguna). Menggunakan akun AWS root tidak disarankan. Pernyataan ini digunakan untuk memungkinkan pengguna untuk bekerja dengan CloudWatch Events. Ellipses (`...`) digunakan untuk singkatnya dan untuk membantu Anda menemukan tempat untuk menambahkan pernyataan. Jangan menghapus pernyataan apa pun, dan jangan ketik elips ini ke dalam kebijakan yang ada.

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

****  

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

------
**catatan**  
Entitas IAM yang memodifikasi kebijakan ini harus memiliki izin di IAM untuk memodifikasi kebijakan.  
Untuk informasi selengkapnya, lihat [Mengedit kebijakan terkelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) atau bagian “Mengedit atau menghapus kebijakan sebaris untuk grup, pengguna, atau peran” di [Bekerja dengan kebijakan sebaris (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) di Panduan Pengguna *IAM*.

1. Buat aturan di CloudWatch Acara. Untuk melakukan ini, buka CloudWatch konsol, di [https://console.aws.amazon.com/cloudwatch](https://console.aws.amazon.com/cloudwatch).

1. Di panel navigasi, di bawah **Acara**, pilih **Aturan**, lalu pilih **Buat aturan**. 

1. Pada **Langkah 1: Buat halaman aturan**, **Pola Acara dan Pola** **acara Build untuk mencocokkan peristiwa berdasarkan layanan** harus sudah dipilih. 

1. Untuk **Nama Layanan**, pilih **CodeBuild**. Untuk **Jenis Acara**, **Semua Acara** seharusnya sudah dipilih.

1. Kode berikut harus ditampilkan di **Pratinjau Pola Acara**:

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

1. Pilih **Edit** dan ganti kode di **Pratinjau Pola Acara** dengan salah satu dari dua pola aturan berikut.

   Pola aturan pertama ini memicu peristiwa saat build dimulai atau diselesaikan untuk proyek build yang ditentukan di. AWS CodeBuild

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

   Pada aturan sebelumnya, buat perubahan kode berikut sesuai kebutuhan.
   + Untuk memicu peristiwa saat build dimulai atau selesai, tinggalkan semua nilai seperti yang ditunjukkan dalam `build-status` array, atau hapus array sama sekali. `build-status` 
   + Untuk memicu peristiwa hanya ketika build selesai, hapus `IN_PROGRESS` dari `build-status` array. 
   + Untuk memicu peristiwa hanya ketika build dimulai, hapus semua nilai kecuali `IN_PROGRESS` dari `build-status` array.
   + Untuk memicu peristiwa untuk semua proyek build, hapus `project-name` array sama sekali.
   + Untuk memicu peristiwa hanya untuk proyek build individual, tentukan nama setiap proyek build dalam `project-name` array. 

   Pola aturan kedua ini memicu peristiwa setiap kali build berpindah dari satu fase build ke fase build lainnya untuk proyek build yang ditentukan di AWS CodeBuild.

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

   Pada aturan sebelumnya, buat perubahan kode berikut sesuai kebutuhan.
   + Untuk memicu peristiwa untuk setiap perubahan fase build (yang mungkin mengirim hingga sembilan notifikasi untuk setiap build), tinggalkan semua nilai seperti yang ditunjukkan dalam `completed-phase` array, atau hapus `completed-phase` array sama sekali.
   + Untuk memicu peristiwa hanya untuk perubahan fase build individual, hapus nama setiap fase build dalam `completed-phase` array yang tidak ingin Anda picu event.
   + Untuk memicu peristiwa untuk setiap perubahan status fase build, tinggalkan semua nilai seperti yang ditunjukkan dalam `completed-phase-status` array, atau hapus `completed-phase-status` array sama sekali.
   + Untuk memicu peristiwa hanya untuk perubahan status fase build individual, hapus nama setiap status fase build dalam `completed-phase-status` array yang tidak ingin memicu peristiwa.
   + Untuk memicu peristiwa untuk semua proyek build, hapus `project-name` array.
   + Untuk memicu peristiwa untuk proyek build individual, tentukan nama setiap proyek build dalam `project-name` array. 

   Untuk informasi selengkapnya tentang pola peristiwa, lihat [Pola Peristiwa](https://docs.aws.amazon.com/eventbridge/latest/userguide/filtering-examples-structure.html) di Panduan EventBridge Pengguna Amazon.

   Untuk informasi selengkapnya tentang pemfilteran dengan pola peristiwa, lihat [Pemfilteran Berbasis Konten dengan Pola Peristiwa di Panduan](https://docs.aws.amazon.com/eventbridge/latest/userguide/content-filtering-with-event-patterns.html) Pengguna Amazon. EventBridge 
**catatan**  
Jika Anda ingin memicu peristiwa untuk perubahan status build dan perubahan fase build, Anda harus membuat dua aturan terpisah: satu untuk perubahan status build dan satu lagi untuk perubahan fase build. Jika Anda mencoba menggabungkan kedua aturan menjadi satu aturan, aturan gabungan mungkin menghasilkan hasil yang tidak terduga atau berhenti bekerja sama sekali.

   Setelah selesai mengganti kode, pilih **Simpan**.

1. Untuk **Targets** (Target), pilih **Add target** (Tambahkan target). 

1. Dalam daftar target, pilih **topik SNS**. 

1. Untuk **Topik**, pilih topik yang Anda identifikasi atau buat sebelumnya. 

1. Perluas **Konfigurasi input**, lalu pilih **Input Transformer**. 

1. Dalam kotak **Input Path**, masukkan salah satu jalur input berikut.

   Untuk aturan dengan `detail-type` nilai`CodeBuild Build State Change`, masukkan yang berikut ini.

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

   Untuk aturan dengan `detail-type` nilai`CodeBuild Build Phase Change`, masukkan yang berikut ini.

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

   Untuk mendapatkan jenis informasi lain, lihat[Buat referensi format masukan pemberitahuan](sample-build-notifications-ref.md).

1. Dalam kotak **Template Input**, masukkan salah satu template input berikut.

   Untuk aturan dengan `detail-type` nilai`CodeBuild Build State Change`, masukkan yang berikut ini.

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

   Untuk aturan dengan `detail-type` nilai`CodeBuild Build Phase Change`, masukkan yang berikut ini.

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

1. Pilih **Konfigurasikan detail**.

1. Pada **Langkah 2: Konfigurasikan halaman detail aturan**, masukkan nama dan deskripsi opsional. Untuk **Status**, biarkan **Diaktifkan** dipilih.

1. Pilih **Buat aturan**. 

1. Buat proyek build, jalankan build, dan lihat informasi build.

1. Konfirmasikan bahwa CodeBuild sekarang berhasil mengirim pemberitahuan build. Misalnya, periksa untuk melihat apakah email pemberitahuan build sekarang ada di kotak masuk Anda.

Untuk mengubah perilaku aturan, di CloudWatch konsol, pilih aturan yang ingin diubah, pilih **Tindakan**, lalu pilih **Edit**. Buat perubahan pada aturan, pilih **Konfigurasikan detail**, lalu pilih **Perbarui aturan**.

Untuk berhenti menggunakan aturan untuk mengirim pemberitahuan build, di CloudWatch konsol, pilih aturan yang ingin Anda hentikan, pilih **Tindakan**, lalu pilih **Nonaktifkan**.

Untuk menghapus aturan sama sekali, di CloudWatch konsol, pilih aturan yang ingin Anda hapus, pilih **Tindakan**, lalu pilih **Hapus**.

# Buat referensi format masukan pemberitahuan
<a name="sample-build-notifications-ref"></a>

CloudWatch memberikan pemberitahuan dalam format JSON.

Pemberitahuan perubahan status build menggunakan format berikut:

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

Pemberitahuan perubahan fase build menggunakan format berikut:

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

# Buat sampel lencana dengan CodeBuild
<a name="sample-build-badges"></a>

AWS CodeBuild sekarang mendukung penggunaan lencana build, yang menyediakan gambar (*lencana*) yang dapat disematkan dan dihasilkan secara dinamis yang menampilkan status build terbaru untuk sebuah proyek. Gambar ini dapat diakses melalui URL yang tersedia untuk umum yang dihasilkan untuk CodeBuild proyek Anda. Ini memungkinkan siapa saja untuk melihat status CodeBuild proyek. Build badge tidak mengandung informasi keamanan apa pun, sehingga tidak memerlukan otentikasi.

**Topics**
+ [

## Buat proyek build dengan lencana build
](#sample-build-badges-request-running)
+ [

# Akses lencana AWS CodeBuild build
](access-badges.md)
+ [

# Publikasikan lencana CodeBuild build
](publish-badges.md)
+ [

# CodeBuild status lencana
](badge-statuses.md)

## Buat proyek build dengan lencana build
<a name="sample-build-badges-request-running"></a>

Gunakan salah satu prosedur berikut ini untuk membuat proyek build dengan lencana build diaktifkan. Anda dapat menggunakan AWS CLI atau Konsol Manajemen AWS.

**Untuk membuat proyek build dengan badge build enabled ()AWS CLI**
+ Untuk informasi tentang membuat proyek build, lihat[Buat proyek build (AWS CLI)](create-project.md#create-project-cli). Untuk menyertakan lencana build dengan AWS CodeBuild proyek Anda, Anda harus menentukan *badgeEnabled* dengan nilai. `true`

**Untuk membuat proyek build dengan lencana build diaktifkan (konsol)**

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

1.  Jika halaman CodeBuild informasi ditampilkan, pilih **Buat proyek build**. Jika tidak, pada panel navigasi, perluas **Build**, pilih **Build projects**, lalu pilih **Create build project**. 

1. Di **Nama proyek**, masukkan nama untuk proyek pembangunan ini. Membangun nama proyek harus unik di setiap AWS akun. Anda juga dapat menyertakan deskripsi opsional proyek build untuk membantu pengguna lain memahami tujuan proyek ini.

1. Di **Sumber**, untuk **penyedia Sumber**, pilih jenis penyedia kode sumber, lalu lakukan salah satu hal berikut:
**catatan**  
 CodeBuild tidak mendukung lencana build dengan penyedia sumber Amazon S3. Karena AWS CodePipeline menggunakan Amazon S3 untuk transfer artefak, lencana build tidak didukung untuk proyek build yang merupakan bagian dari pipeline yang dibuat. CodePipeline 
   + Jika Anda memilih **CodeCommit**, maka untuk **Repositori**, pilih nama repositori. Pilih **Aktifkan lencana build** untuk membuat status build project Anda terlihat dan dapat disematkan.
   + Jika Anda memilih **GitHub**, ikuti petunjuk untuk menghubungkan (atau menyambung kembali) dengan GitHub. Pada halaman GitHub **Otorisasi aplikasi**, untuk **akses Organisasi**, pilih **Minta akses** di sebelah setiap repositori yang AWS CodeBuild ingin Anda akses. Setelah Anda memilih **Otorisasi aplikasi**, kembali ke AWS CodeBuild konsol, untuk **Repositori**, pilih nama repositori yang berisi kode sumber. Pilih **Aktifkan lencana build** untuk membuat status build project Anda terlihat dan dapat disematkan.
   + Jika Anda memilih **Bitbucket**, ikuti petunjuk untuk menghubungkan (atau menyambung kembali) dengan Bitbucket. Pada Bitbucket **Konfirmasi akses ke halaman akun Anda**, untuk **akses Organisasi**, pilih **Berikan akses**. Setelah Anda memilih **Grant access**, kembali ke AWS CodeBuild konsol, untuk **Repository**, pilih nama repositori yang berisi kode sumber. Pilih **Aktifkan lencana build** untuk membuat status build project Anda terlihat dan dapat disematkan.
**penting**  
Memperbarui sumber proyek Anda dapat memengaruhi keakuratan lencana pembuatan proyek.

1. Di **Lingkungan**:

   Untuk **citra Lingkungan**, lakukan salah satu hal berikut:
   + **Untuk menggunakan image Docker yang dikelola oleh AWS CodeBuild, pilih **Managed image**, lalu buat pilihan dari **Sistem operasi**, **Runtime, **Image, dan versi Image****.** Buat pilihan dari **jenis Lingkungan** jika tersedia.
   + Untuk menggunakan gambar Docker lain, pilih **Custom image**. Untuk **jenis Lingkungan**, pilih **ARM**, **Linux**, **GPU Linux**, atau **Windows**. Jika Anda memilih **Registri lain**, untuk **URL registri eksternal**, masukkan nama dan tag gambar Docker di Docker Hub, menggunakan format. `docker repository/docker image name` Jika Anda memilih **Amazon ECR**, gunakan **repositori Amazon ECR** dan gambar **Amazon ECR** untuk memilih gambar Docker di akun Anda. AWS 
   + Untuk menggunakan image Docker pribadi, pilih **Custom image**. Untuk **jenis Lingkungan**, pilih **ARM**, **Linux**, **GPU Linux**, atau **Windows**. Untuk **registri Gambar**, pilih **Registri lain**, lalu masukkan ARN kredensi untuk gambar Docker pribadi Anda. Kredensialnya harus dibuat oleh Secrets Manager. Untuk informasi lebih lanjut, lihat [Apa itu AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) di *Panduan Pengguna AWS Secrets Manager *.

1. Dalam **peran Layanan**, lakukan salah satu hal berikut:
   + Jika Anda tidak memiliki peran CodeBuild layanan, pilih **Peran layanan baru**. Di **Nama peran**, masukkan nama untuk peran baru.
   + Jika Anda memiliki peran CodeBuild layanan, pilih **Peran layanan yang ada**. Di **Peran ARN**, pilih peran layanan.
**catatan**  
Saat menggunakan konsol untuk membuat atau memperbarui proyek build, Anda dapat membuat peran CodeBuild layanan secara bersamaan. Secara default, peran hanya berfungsi dengan proyek build tersebut. Jika Anda menggunakan konsol untuk mengaitkan peran layanan ini dengan proyek build lain, peran akan diperbarui agar berfungsi dengan proyek build lainnya. Peran layanan dapat bekerja dengan hingga 10 proyek pembangunan.

1. Di **Buildspec**, lakukan salah satu hal berikut:
   + Pilih **Gunakan file buildspec untuk menggunakan file** buildspec.ymldi direktori root kode sumber.
   + Pilih **Sisipkan perintah build** untuk menggunakan konsol untuk menyisipkan perintah build.

   Untuk informasi selengkapnya, lihat [Referensi Buildspec](build-spec-ref.md).

1. Di **Artefak**, untuk **Jenis**, lakukan salah satu hal berikut:
   + Jika Anda tidak ingin membuat artefak keluaran build, pilih **Tidak ada artefak**.
   + Untuk menyimpan output build dalam bucket S3, pilih **Amazon** S3, lalu lakukan hal berikut:
     + Jika Anda ingin menggunakan nama proyek Anda untuk file atau folder ZIP keluaran build, biarkan **Nama** kosong. Jika tidak, masukkan nama. Secara default, nama artefak adalah nama proyek. Jika Anda ingin menggunakan nama yang berbeda, masukkan di kotak nama artefak. Jika Anda ingin mengeluarkan file ZIP, sertakan ekstensi zip.
     + Untuk **nama Bucket**, pilih nama bucket keluaran.
     + Jika Anda memilih **Sisipkan perintah build** sebelumnya dalam prosedur ini, untuk **file Output**, masukkan lokasi file dari build yang ingin Anda masukkan ke dalam file atau folder ZIP keluaran build. Untuk beberapa lokasi, pisahkan setiap lokasi dengan koma (misalnya,`appspec.yml, target/my-app.jar`). Untuk informasi lebih lanjut, lihat deskripsi `files` di[Sintaks Buildspec](build-spec-ref.md#build-spec-ref-syntax).

1. Perluas **Konfigurasi tambahan** dan pilih opsi yang sesuai.

1. Pilih **Buat proyek build**. Pada halaman **Review**, pilih **Start build** untuk menjalankan build.

# Akses lencana AWS CodeBuild build
<a name="access-badges"></a>

Anda dapat menggunakan AWS CodeBuild konsol atau AWS CLI untuk mengakses lencana build.
+ Di CodeBuild konsol, dalam daftar proyek build, di kolom **Name**, pilih tautan yang sesuai dengan proyek build. Pada *project-name* halaman **Build project:**, di **Configuration**, pilih **Salin URL lencana**. Untuk informasi selengkapnya, lihat [Melihat detail proyek build (konsol)](view-project-details.md#view-project-details-console).
+ Di AWS CLI, jalankan `batch-get-projects` perintah. URL lencana build disertakan dalam bagian detail lingkungan proyek pada output. Untuk informasi selengkapnya, lihat [Lihat detail proyek build (AWS CLI)](view-project-details.md#view-project-details-cli).

URL permintaan lencana build dibuat dengan cabang default umum, tetapi Anda dapat menentukan cabang apa pun di repositori sumber yang telah Anda gunakan untuk menjalankan build. Contoh:

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

Anda juga dapat menentukan tag dari repositori sumber Anda dengan mengganti `branch` parameter dengan `tag` parameter di URL lencana. Contoh: 

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

# Publikasikan lencana CodeBuild build
<a name="publish-badges"></a>

Anda dapat menampilkan status build terbaru dalam file penurunan harga menggunakan URL lencana build Anda dalam gambar penurunan harga. Ini berguna untuk menampilkan status build terbaru di file readme.md di repositori sumber Anda (misalnya, atau). GitHub CodeCommit Contoh:

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

# CodeBuild status lencana
<a name="badge-statuses"></a>

Lencana CodeBuild build dapat memiliki salah satu status berikut.
+ **PASSING** Build terbaru di cabang yang diberikan lulus. 
+ **GAGAL** Build terbaru di cabang tertentu kehabisan waktu, gagal, salah, atau dihentikan.
+ **IN\$1PROGRESS** Build terbaru di cabang yang diberikan sedang berlangsung.
+ **TIDAK DIKETAHUI** Proyek belum menjalankan build untuk cabang yang diberikan atau sama sekali. Selain itu, fitur lencana build mungkin telah dinonaktifkan.

# 'Uji laporan menggunakan AWS CLI'sampel
<a name="sample-test-report-cli"></a>

Pengujian yang Anda tentukan dalam file buildspec dijalankan selama build. Sampel ini menunjukkan cara menggunakan tes AWS CLI untuk menggabungkan pengujian ke dalam build in CodeBuild. Anda dapat menggunakan JUnit untuk membuat pengujian unit, atau Anda dapat menggunakan alat lain untuk membuat pengujian konfigurasi. Anda kemudian dapat mengevaluasi hasil tes untuk memperbaiki masalah atau mengoptimalkan aplikasi Anda. 

Anda dapat menggunakan CodeBuild API atau AWS CodeBuild konsol untuk mengakses hasil pengujian. Contoh ini menunjukkan cara mengonfigurasi laporan agar hasil pengujiannya diekspor ke bucket S3. 

**Topics**
+ [

## Jalankan sampel laporan pengujian
](#sample-test-report-cli-run)

## Jalankan sampel laporan pengujian
<a name="sample-test-report-cli-run"></a>

Gunakan langkah-langkah berikut untuk menjalankan sampel laporan trest.

**Topics**
+ [

### Prasyarat
](#sample-test-report-cli-prerequisites)
+ [

### Langkah 1: Buat grup laporan
](#sample-test-report-cli-create-report)
+ [

### Langkah 2: Konfigurasikan proyek dengan grup laporan
](#sample-test-report-cli-create-project-with-report)
+ [

### Langkah 3: Jalankan dan lihat hasil laporan
](#sample-test-report-cli-run-and-view-report-results)

### Prasyarat
<a name="sample-test-report-cli-prerequisites"></a>
+ Buat kasus uji Anda. Sampel ini ditulis dengan asumsi bahwa Anda memiliki kasus uji untuk dimasukkan dalam laporan pengujian sampel Anda. Anda menentukan lokasi file pengujian Anda dalam file buildspec. 

  Format file laporan pengujian berikut didukung:
  + Mentimun JSON (.json)
  + JUnit XML (.xml)
  + NUnit XML (.xml)
  + NUnit3 XML (.xml)
  + TestNG XML (.xml)
  + Studio Visual TRX (.trx)
  + Studio Visual TRX XML (.xml)

  Buat kasus pengujian Anda dengan kerangka pengujian apa pun yang dapat membuat file laporan dalam salah satu format ini (misalnya, JUnit plugin Surefire, TestNG, atau Mentimun).
+ Buat ember S3 dan catat namanya. Untuk informasi selengkapnya, lihat [Bagaimana cara membuat bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html) di *Panduan Pengguna Amazon S3*. 
+ Buat peran IAM dan catat ARN-nya. Anda memerlukan ARN saat membuat proyek build Anda. 
+ Jika peran Anda tidak memiliki izin berikut, tambahkan. 

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

   Untuk informasi selengkapnya, lihat [Izin untuk operasi pelaporan pengujian](test-permissions.md#test-permissions-related-to-reporting). 

### Langkah 1: Buat grup laporan
<a name="sample-test-report-cli-create-report"></a>

1. Buat file bernama `CreateReportGroupInput.json`. 

1. Buat folder di bucket S3 tempat hasil pengujian Anda diekspor. 

1. Salin yang berikut ini ke dalam`CreateReportGroupInput.json`. Untuk`<bucket-name>`, gunakan nama bucket S3. Untuk`<path-to-folder>`, masukkan path ke folder di bucket S3 Anda. 

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

1. Jalankan perintah berikut di direktori yang berisi`CreateReportGroupInput.json`.

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

   Output-nya akan terlihat seperti berikut. Buat catatan ARN untuk. `reportGroup` Anda menggunakannya saat membuat proyek yang menggunakan grup laporan ini.

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

### Langkah 2: Konfigurasikan proyek dengan grup laporan
<a name="sample-test-report-cli-create-project-with-report"></a>

Untuk menjalankan laporan, pertama-tama Anda membuat proyek CodeBuild build yang dikonfigurasi dengan grup laporan Anda. Kasus uji yang ditentukan untuk grup laporan dijalankan saat Anda menjalankan build. 

1. Buat file buildspec bernama. `buildspec.yml` 

1. Gunakan YAMAL berikut sebagai template untuk `buildspec.yml` file Anda. Pastikan untuk menyertakan perintah yang menjalankan pengujian Anda. Di `reports` bagian ini, tentukan file yang berisi hasil kasus uji Anda. File-file ini menyimpan hasil tes yang dapat Anda akses CodeBuild. Mereka kedaluwarsa 30 hari setelah dibuat. File-file ini berbeda dari file hasil kasus uji mentah yang Anda ekspor ke bucket S3.

   ```
   version: 0.2
       phases:
       install:
           runtime-versions:
               java: openjdk8
       build:
         commands:
           - echo Running tests 
           - <enter commands to run your tests>
           
       reports:
         <report-name-or-arn>: #test file information
         files:
           - '<test-result-files>'
         base-directory: '<optional-base-directory>'
         discard-paths: false #do not remove file paths from test result files
   ```
**catatan**  
Alih-alih ARN dari grup laporan yang ada, Anda juga dapat menentukan nama untuk grup laporan yang belum dibuat. Jika Anda menentukan nama, bukan ARN, CodeBuild buat grup laporan saat menjalankan build. Namanya berisi nama proyek Anda dan nama yang Anda tentukan dalam file buildspec, dalam format ini:. `project-name-report-group-name` Untuk informasi selengkapnya, lihat [Buat laporan pengujian](report-create.md) dan [Laporkan penamaan grup](test-report-group-naming.md). 

1. Buat file bernama `project.json`. File ini berisi input untuk **create-project** perintah. 

1. Salin JSON berikut ke dalam`project.json`. Untuk`source`, masukkan jenis dan lokasi repositori yang berisi file sumber Anda. Untuk`serviceRole`, tentukan ARN dari peran yang Anda gunakan. 

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

1. Jalankan perintah berikut di direktori yang berisi`project.json`. Ini menciptakan proyek bernama`test-project`. 

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

### Langkah 3: Jalankan dan lihat hasil laporan
<a name="sample-test-report-cli-run-and-view-report-results"></a>

Di bagian ini, Anda menjalankan build proyek yang Anda buat sebelumnya. Selama proses pembuatan, CodeBuild buat laporan dengan hasil kasus uji. Laporan tersebut terdapat dalam grup laporan yang Anda tentukan. 

1. Untuk memulai build, jalankan perintah berikut. `test-report-project`adalah nama proyek build yang dibuat di atas. Catat ID build yang muncul di output. 

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

1. Jalankan perintah berikut untuk mendapatkan informasi tentang build Anda, termasuk ARN laporan Anda. Untuk`<build-id>`, tentukan ID build Anda. Catat laporan ARN di `reportArns` properti output. 

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

1. Jalankan perintah berikut untuk mendapatkan detail tentang laporan Anda. Untuk`<report-arn>`, tentukan laporan ARN Anda. 

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

   Output-nya akan terlihat seperti berikut. Output sampel ini menunjukkan berapa banyak pengujian yang berhasil, gagal, dilewati, menghasilkan kesalahan, atau mengembalikan status yang tidak diketahui.

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

1. Jalankan perintah berikut untuk mencantumkan informasi tentang kasus uji untuk laporan Anda. Untuk`<report-arn>`, tentukan ARN laporan Anda. Untuk `--filter` parameter opsional, Anda dapat menentukan satu hasil status (`SUCCEEDED`,`FAILED`,`SKIPPED`,`ERROR`, atau`UNKNOWN`). 

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

    Output-nya akan terlihat seperti berikut. 

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

# Sampel Docker untuk CodeBuild
<a name="sample-docker-section"></a>

Bagian ini menjelaskan contoh integrasi antara Docker dan. AWS CodeBuild


| Sampel | Deskripsi | 
| --- | --- | 
|  [Docker dalam sampel gambar khusus untuk CodeBuild](sample-docker-custom-image.md)  |  Sampel ini membangun dan menjalankan image Docker dengan menggunakan CodeBuild dan image build Docker kustom (`docker:dind`di Docker Hub).   | 
|  [Contoh server build image Docker untuk CodeBuild](sample-docker-server.md)  |  Contoh ini membongkar build Docker Anda ke server build image terkelola.   | 
|  [Windows Docker membuat sampel untuk CodeBuild](sample-windows-docker-custom-image.md)  |  Contoh ini membangun dan menjalankan image Windows Docker dengan menggunakan. CodeBuild  | 
|  [Contoh 'Publikasikan gambar Docker ke repositori gambar Amazon ECR' untuk CodeBuild](sample-docker.md)  |  Sampel ini menghasilkan image Docker sebagai output build dan kemudian mendorong image Docker ke repositori image Amazon Elastic Container Registry (Amazon ECR).   | 
|  [Registri pribadi dengan AWS Secrets Manager sampel untuk CodeBuild](sample-private-registry.md)  |  Contoh ini menunjukkan cara menggunakan image Docker yang disimpan dalam registri pribadi sebagai lingkungan CodeBuild runtime Anda.  | 

# Docker dalam sampel gambar khusus untuk CodeBuild
<a name="sample-docker-custom-image"></a>

Contoh berikut membangun dan menjalankan image Docker dengan menggunakan AWS CodeBuild dan image build Docker kustom (`docker:dind`di Docker Hub). 

Untuk mempelajari cara membuat image Docker dengan menggunakan image build yang disediakan oleh CodeBuild dukungan Docker, lihat. [Sampel 'Publikasikan gambar Docker ke Amazon ECR'](sample-docker.md)

**penting**  
Menjalankan sampel ini dapat mengakibatkan biaya ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk CodeBuild dan untuk AWS sumber daya dan tindakan yang terkait dengan Amazon S3, AWS KMS, dan CloudWatch Log. Untuk informasi selengkapnya, lihat [CodeBuild harga, harga](https://aws.amazon.com/codebuild/pricing) [Amazon S3, [AWS Key Management Service harga](https://aws.amazon.com/kms/pricing)](https://aws.amazon.com/s3/pricing), dan harga [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing).

**Topics**
+ [

## Jalankan Docker dalam sampel gambar khusus
](#sample-docker-custom-image-running)

## Jalankan Docker dalam sampel gambar khusus
<a name="sample-docker-custom-image-running"></a>

Gunakan prosedur berikut untuk menjalankan Docker dalam sampel gambar khusus. Untuk informasi lebih lanjut tentang sampel ini, lihat[Docker dalam sampel gambar khusus untuk CodeBuild](#sample-docker-custom-image).

**Untuk menjalankan Docker dalam sampel gambar khusus**

1. Buat file seperti yang dijelaskan di [Berkas](#sample-docker-custom-image-files) bagian [Struktur direktori](#sample-docker-custom-image-dir) dan topik ini, lalu unggah ke bucket input S3 atau repositori AWS CodeCommit GitHub, atau Bitbucket. 
**penting**  
Jangan mengunggah`(root directory name)`, hanya file di dalamnya`(root directory name)`.   
Jika Anda menggunakan bucket input S3, pastikan untuk membuat file ZIP yang berisi file, lalu unggah ke bucket input. Jangan tambahkan `(root directory name)` ke file ZIP, hanya file di dalamnya`(root directory name)`.

1. Buat proyek build, jalankan build, dan lihat informasi build terkait.

   Jika Anda menggunakan AWS CLI untuk membuat proyek build, input berformat JSON ke `create-project` perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.)

   ```
   {
     "name": "sample-docker-custom-image-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/DockerCustomImageSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "docker:dind",
       "computeType": "BUILD_GENERAL1_SMALL",
       "privilegedMode": false
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```
**catatan**  
Secara default, daemon Docker diaktifkan untuk build non-VPC. Jika Anda ingin menggunakan kontainer Docker untuk build VPC, [lihat Runtime Privilege dan Kemampuan Linux di situs web Docker Docs dan](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) aktifkan mode istimewa. Juga, Windows tidak mendukung mode istimewa.

1. Untuk melihat hasil build, lihat di log build untuk string`Hello, World!`. Untuk informasi selengkapnya, lihat [Lihat detail build](view-build-details.md).

### Struktur direktori
<a name="sample-docker-custom-image-dir"></a>

Sampel ini mengasumsikan struktur direktori ini.

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

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

Gambar dasar dari sistem operasi yang digunakan dalam sampel ini adalah Ubuntu. Sampel menggunakan file-file ini.

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

```
version: 0.2

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

`Dockerfile`(dalam`(root directory name)`)

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

# Contoh server build image Docker untuk CodeBuild
<a name="sample-docker-server"></a>

Contoh berikut membongkar build Docker Anda ke server build image terkelola. Anda dapat menyesuaikan sampel ini untuk menyediakan server build image Docker khusus dan terkelola dalam konfigurasi CodeBuild proyek Anda. Perhatikan bahwa instance yang disediakan aktif saat build dijalankan secara aktif untuk proyek, dan instance dihentikan saat build tidak berjalan. Instans yang disediakan disimpan hingga satu bulan sebelum didaur ulang. Untuk informasi selengkapnya, lihat [Kemampuan Server CodeBuild Docker](https://aws.amazon.com/blogs//aws/accelerate-ci-cd-pipelines-with-the-new-aws-codebuild-docker-server-capability).

**penting**  
Menjalankan sampel ini dapat mengakibatkan biaya ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk CodeBuild dan untuk AWS sumber daya dan tindakan yang terkait dengan Amazon S3, AWS KMS, dan CloudWatch Log. Untuk informasi selengkapnya, lihat [CodeBuild harga, harga](https://aws.amazon.com/codebuild/pricing) [Amazon S3, [AWS Key Management Service harga](https://aws.amazon.com/kms/pricing)](https://aws.amazon.com/s3/pricing), dan harga [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing).

**Topics**
+ [

## Konfigurasikan server Docker
](#sample-docker-server-running)

## Konfigurasikan server Docker
<a name="sample-docker-server-running"></a>

Gunakan prosedur berikut untuk menyediakan lingkungan komputasi khusus untuk CodeBuild proyek yang mengelola beban kerja Docker dan menyimpan lapisan gambar Docker. 

**Untuk mengkonfigurasi server Docker**

1. Buat file seperti yang dijelaskan di [Berkas](#sample-docker-server-files) bagian [Struktur direktori](#sample-docker-server-dir) dan topik ini, lalu unggah ke bucket input S3 atau repositori AWS CodeCommit GitHub, atau Bitbucket. 
**penting**  
Jangan mengunggah`(root directory name)`, hanya file di dalamnya`(root directory name)`.   
Jika Anda menggunakan bucket input S3, pastikan untuk membuat file ZIP yang berisi file, lalu unggah ke bucket input. Jangan tambahkan `(root directory name)` ke file ZIP, hanya file di dalamnya`(root directory name)`.

1. Buat proyek build, jalankan build, dan lihat informasi build terkait:

   1. Di bagian **Lingkungan** konsol, pilih **Konfigurasi tambahan, navigasikan ke konfigurasi** **server Docker**, lalu pilih **Aktifkan server docker untuk** proyek ini. Anda kemudian dapat memilih **jenis komputasi server Docker** dan menyediakan kredensi **Registry**.

   1. Jika Anda menggunakan AWS CLI untuk membuat proyek build, input berformat JSON ke `create-project` perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.)

      ```
      {
        "name": "sample-docker-custom-image-project",
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/DockerServerSample.zip"
        },
        "artifacts": {
          "type": "NO_ARTIFACTS"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/amazonlinux-x86_64-standard:5.0",
          "computeType": "BUILD_GENERAL1_LARGE",
          "dockerServer": [ 
               { 
                  "computeType": "BUILD_GENERAL1_LARGE",
                  "securityGroupIds": [ "security-groups-ID" ]
               }
            ]
        },
        "serviceRole": "arn:aws:iam::account-ID:role/role-name"
      }
      ```
**catatan**  
Grup keamanan yang dikonfigurasi untuk server Docker harus mengizinkan lalu lintas jaringan masuk dari VPC yang dikonfigurasi dalam proyek. Mereka harus memungkinkan masuknya pada port 9876.

1. Untuk melihat hasil build, lihat di log build untuk string`Hello, World!`. Untuk informasi selengkapnya, lihat [Lihat detail build](view-build-details.md).

### Struktur direktori
<a name="sample-docker-server-dir"></a>

Sampel ini mengasumsikan struktur direktori ini.

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

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

Gambar dasar dari sistem operasi yang digunakan dalam sampel ini adalah Ubuntu. Sampel menggunakan file-file ini.

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

```
version: 0.2

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

`Dockerfile`(dalam`(root directory name)`)

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

# Windows Docker membuat sampel untuk CodeBuild
<a name="sample-windows-docker-custom-image"></a>

Contoh berikut membangun dan menjalankan image Windows Docker dengan menggunakan. CodeBuild

**Topics**
+ [

## Jalankan sampel build Windows Docker
](#sample-windows-docker-build-running)

## Jalankan sampel build Windows Docker
<a name="sample-windows-docker-build-running"></a>

Gunakan prosedur berikut untuk menjalankan build Windows Docker.

**Untuk menjalankan Windows Docker membangun sampel**

1. Buat file seperti yang dijelaskan di [Berkas](#sample-windows-docker-custom-image-files) bagian [Struktur direktori](#sample-windows-docker-custom-image-dir) dan topik ini, lalu unggah ke bucket input S3 atau repositori AWS CodeCommit GitHub, atau Bitbucket. 
**penting**  
Jangan mengunggah`(root directory name)`, hanya file di dalamnya`(root directory name)`.   
Jika Anda menggunakan bucket input S3, pastikan untuk membuat file ZIP yang berisi file, lalu unggah ke bucket input. Jangan tambahkan `(root directory name)` ke file ZIP, hanya file di dalamnya`(root directory name)`.

1. Buat `WINDOWS_EC2` armada.

   Jika Anda menggunakan AWS CLI untuk membuat armada, input berformat JSON ke `create-fleet` perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.)

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

1. Buat proyek build, jalankan build, dan lihat informasi build terkait.

   Jika Anda menggunakan AWS CLI untuk membuat proyek build, input berformat JSON ke `create-project` perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.)

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

1. Untuk melihat hasil build, lihat di log build untuk string`Hello, World!`. Untuk informasi selengkapnya, lihat [Lihat detail build](view-build-details.md).

### Struktur direktori
<a name="sample-windows-docker-custom-image-dir"></a>

Sampel ini mengasumsikan struktur direktori ini.

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

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

Gambar dasar dari sistem operasi yang digunakan dalam sampel ini adalah`mcr.microsoft.com/windows/servercore:ltsc2022`. Sampel menggunakan file-file ini.

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

```
version: 0.2

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

`Dockerfile`(dalam`(root directory name)`)

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

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

# Contoh 'Publikasikan gambar Docker ke repositori gambar Amazon ECR' untuk CodeBuild
<a name="sample-docker"></a>

Sampel ini menghasilkan image Docker sebagai output build dan kemudian mendorong image Docker ke repositori image Amazon Elastic Container Registry (Amazon ECR). Anda dapat mengadaptasi sampel ini untuk mendorong image Docker ke Docker Hub. Untuk informasi selengkapnya, lihat [Sesuaikan sampel 'Publikasikan gambar Docker ke Amazon ECR' untuk mendorong ke Docker Hub](sample-docker-docker-hub.md).

Untuk mempelajari cara membuat image Docker dengan menggunakan image build Docker kustom (`docker:dind`di Docker Hub), lihat. [Docker dalam sampel gambar khusus](sample-docker-custom-image.md)

Sampel ini diuji referensi`golang:1.12`.

Sampel ini menggunakan fitur build Docker multi-tahap baru, yang menghasilkan image Docker sebagai output build. Kemudian mendorong gambar Docker ke repositori gambar Amazon ECR. Pembuatan gambar Docker multi-tahap membantu mengurangi ukuran gambar Docker akhir. Untuk informasi selengkapnya, lihat [Menggunakan build multi-tahap dengan Docker](https://docs.docker.com/engine/userguide/eng-image/multistage-build/).

**penting**  
Menjalankan sampel ini dapat mengakibatkan biaya ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk AWS CodeBuild dan untuk AWS sumber daya dan tindakan yang terkait dengan Amazon S3,, CloudWatch Log AWS KMS, dan Amazon ECR. Untuk informasi selengkapnya, lihat [CodeBuild harga, harga](https://aws.amazon.com/codebuild/pricing) [Amazon S3, harga, [AWS Key Management Service harga](https://aws.amazon.com/kms/pricing)](https://aws.amazon.com/s3/pricing) Amazon, dan [ CloudWatch harga Amazon](https://aws.amazon.com/cloudwatch/pricing) [Elastic Container Registry](https://aws.amazon.com/ecr/pricing).

**Topics**
+ [

## Jalankan sampel 'Publikasikan gambar Docker ke Amazon ECR'
](#sample-docker-running)
+ [

# Sesuaikan sampel 'Publikasikan gambar Docker ke Amazon ECR' untuk mendorong ke Docker Hub
](sample-docker-docker-hub.md)

## Jalankan sampel 'Publikasikan gambar Docker ke Amazon ECR'
<a name="sample-docker-running"></a>

Gunakan prosedur berikut untuk menjalankan sampel yang menerbitkan image Docker ke Amazon ECR. Untuk informasi lebih lanjut tentang sampel ini, lihat. [Contoh 'Publikasikan gambar Docker ke repositori gambar Amazon ECR' untuk CodeBuild](#sample-docker)

**Untuk menjalankan sampel ini**

1. Jika Anda sudah memiliki repositori gambar di Amazon ECR yang ingin Anda gunakan, lewati ke langkah 3. Jika tidak, jika Anda menggunakan pengguna alih-alih akun AWS root atau pengguna administrator untuk bekerja dengan Amazon ECR, tambahkan pernyataan ini (antara *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* dan*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) ke pengguna (atau grup IAM yang terkait dengan pengguna). Menggunakan akun AWS root tidak dianjurkan.Pernyataan ini memungkinkan pembuatan repositori Amazon ECR untuk menyimpan gambar Docker. Ellipses (`...`) digunakan untuk singkatnya dan untuk membantu Anda menemukan tempat untuk menambahkan pernyataan. Jangan menghapus pernyataan apa pun, dan jangan ketik elips ini ke dalam kebijakan. Untuk informasi selengkapnya, lihat [Bekerja dengan kebijakan sebaris menggunakan Konsol Manajemen AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) dalam *Panduan pengguna*. 

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

****  

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

------
**catatan**  
Entitas IAM yang memodifikasi kebijakan ini harus memiliki izin di IAM untuk memodifikasi kebijakan.

1. Buat repositori gambar di Amazon ECR. Pastikan untuk membuat repositori di AWS Wilayah yang sama tempat Anda membuat lingkungan build dan menjalankan build. Untuk informasi selengkapnya, lihat [Membuat repositori](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) di Panduan Pengguna *Amazon ECR*. Nama repositori ini harus cocok dengan nama repositori yang Anda tentukan nanti dalam prosedur ini, diwakili oleh variabel lingkungan. `IMAGE_REPO_NAME` Pastikan kebijakan repositori Amazon ECR memberikan akses push image untuk peran IAM layanan Anda CodeBuild. 

1. Tambahkan pernyataan ini (antara *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* dan*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) ke kebijakan yang Anda lampirkan ke peran AWS CodeBuild layanan Anda. Pernyataan ini memungkinkan CodeBuild untuk mengunggah gambar Docker ke repositori Amazon ECR. Ellipses (`...`) digunakan untuk singkatnya dan untuk membantu Anda menemukan tempat untuk menambahkan pernyataan. Jangan menghapus pernyataan apa pun, dan jangan ketik elips ini ke dalam kebijakan. 

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

****  

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

------
**catatan**  
Entitas IAM yang memodifikasi kebijakan ini harus memiliki izin di IAM untuk memodifikasi kebijakan.

1. Buat file seperti yang dijelaskan di [Berkas](#sample-docker-files) bagian [Struktur direktori](#sample-docker-dir) dan topik ini, lalu unggah ke bucket input S3 atau repositori AWS CodeCommit GitHub, atau Bitbucket. Untuk informasi selengkapnya, lihat [Referensi file definisi gambar](https://docs.aws.amazon.com/codepipeline/latest/userguide/file-reference.html) di *Panduan AWS CodePipeline Pengguna*.
**penting**  
Jangan mengunggah`(root directory name)`, hanya file di dalamnya`(root directory name)`.   
Jika Anda menggunakan bucket input S3, pastikan untuk membuat file ZIP yang berisi file, lalu unggah ke bucket input. Jangan tambahkan `(root directory name)` ke file ZIP, hanya file di dalamnya`(root directory name)`.

1. Buat proyek build, jalankan build, dan lihat informasi build.

    Jika Anda menggunakan konsol untuk membuat proyek Anda:

   1.  Untuk **Sistem operasi**, pilih **Ubuntu**. 

   1.  Untuk **Waktu aktif**, pilih **Standar**. 

   1.  **Untuk **Gambar**, pilih:5.0aws/codebuild/standard.** 

   1.  Tambahkan variabel lingkungan berikut: 
      +  AWS\$1DEFAULT\$1REGION dengan nilai *region-ID* 
      +  AWS\$1ACCOUNT\$1ID dengan nilai *account-ID* 
      +  IMAGE\$1TAG dengan nilai Terbaru 
      +  IMAGE\$1REPO\$1NAME dengan nilai *Amazon-ECR-repo-name* 

   Jika Anda menggunakan AWS CLI untuk membuat proyek build, input berformat JSON ke `create-project` perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.)

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

1. Konfirmasikan bahwa CodeBuild berhasil mendorong image Docker ke repositori:

   1. Buka konsol Amazon ECR di [https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/).

   1. Pilih nama repositori. Gambar harus dicantumkan di kolom **tag Gambar**.

### Struktur direktori
<a name="sample-docker-dir"></a>

Sampel ini mengasumsikan struktur direktori ini.

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

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

Sampel ini menggunakan file-file ini.

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

```
version: 0.2

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

`Dockerfile`(dalam`(root directory name)`)

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

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

**catatan**  
CodeBuild mengganti `ENTRYPOINT` untuk gambar Docker khusus.

# Sesuaikan sampel 'Publikasikan gambar Docker ke Amazon ECR' untuk mendorong ke Docker Hub
<a name="sample-docker-docker-hub"></a>

Untuk mengadaptasi sampel 'Publikasikan gambar Docker ke Amazon ECR' sehingga gambar Docker didorong ke Docker Hub alih-alih Amazon ECR, edit kode sampel. Untuk informasi lebih lanjut tentang sampel, lihat [Contoh 'Publikasikan gambar Docker ke repositori gambar Amazon ECR' untuk CodeBuild](sample-docker.md) dan[Jalankan sampel 'Publikasikan gambar Docker ke Amazon ECR'](sample-docker.md#sample-docker-running).
**catatan**  
Jika Anda menggunakan versi Docker lebih awal dari 17.06, hapus opsi. `--no-include-email`

1. Ganti baris kode khusus Amazon ECR ini dalam file: `buildspec.yml`

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

   Dengan baris kode khusus Docker Hub ini:

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

1. Unggah kode yang diedit ke bucket input S3 atau repositori AWS CodeCommit, GitHub, atau Bitbucket. 
**penting**  
Jangan mengunggah`(root directory name)`, hanya file di dalamnya`(root directory name)`.   
Jika Anda menggunakan bucket input S3, pastikan untuk membuat file ZIP yang berisi file, lalu unggah ke bucket input. Jangan tambahkan `(root directory name)` ke file ZIP, hanya file di dalamnya`(root directory name)`.

1. Ganti baris kode ini dari input berformat JSON ke perintah: `create-project`

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

   Dengan baris kode ini:

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

1. Buat lingkungan build, jalankan build, dan lihat informasi build terkait.

1. Konfirmasikan bahwa AWS CodeBuild berhasil mendorong image Docker ke repositori. **Masuk ke Docker Hub, buka repositori, dan pilih tab Tag.** `latest`Tag harus berisi nilai **Terakhir Diperbarui** yang sangat baru.

# Registri pribadi dengan AWS Secrets Manager sampel untuk CodeBuild
<a name="sample-private-registry"></a>

 Contoh ini menunjukkan cara menggunakan image Docker yang disimpan dalam registri pribadi sebagai lingkungan AWS CodeBuild runtime Anda. Kredensi untuk registri pribadi disimpan di. AWS Secrets Manager Registri pribadi apa pun berfungsi dengan CodeBuild. Contoh ini menggunakan Docker Hub. 

**catatan**  
Rahasia terlihat oleh tindakan dan tidak disamarkan saat ditulis ke file.

**Topics**
+ [

## Persyaratan sampel registri pribadi
](#sample-private-registry-requirements)
+ [

# Buat CodeBuild proyek dengan registri pribadi
](private-registry-sample-create-project.md)
+ [

# Konfigurasikan kredenal registri pribadi untuk pelari yang dihosting sendiri
](private-registry-sample-configure-runners.md)

## Persyaratan sampel registri pribadi
<a name="sample-private-registry-requirements"></a>

 Untuk menggunakan registri pribadi dengan AWS CodeBuild, Anda harus memiliki yang berikut: 
+  Rahasia Secrets Manager yang menyimpan kredensi Docker Hub Anda. Kredensialnya digunakan untuk mengakses repositori pribadi Anda. 
**catatan**  
Anda akan dikenakan biaya untuk rahasia yang Anda buat.
+  Repositori atau akun pribadi. 
+  Kebijakan IAM peran CodeBuild layanan yang memberikan akses ke rahasia Secrets Manager Anda. 

 Ikuti langkah-langkah ini untuk membuat sumber daya ini dan kemudian membuat proyek CodeBuild build menggunakan gambar Docker yang disimpan di registri pribadi Anda. 

# Buat CodeBuild proyek dengan registri pribadi
<a name="private-registry-sample-create-project"></a>

1. Untuk informasi tentang cara membuat repositori pribadi gratis, lihat [Repositori](https://docs.docker.com/docker-hub/repos/) di Docker Hub. Anda juga dapat menjalankan perintah berikut di terminal untuk menarik gambar, mendapatkan ID-nya, dan mendorongnya ke repositori baru. 

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

1.  Ikuti langkah-langkah di [Buat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) di *Panduan AWS Secrets Manager Pengguna*.

   

   1.  Pada langkah 3, di **Pilih tipe rahasia**, pilih **Jenis rahasia lainnya**. 

   1. Pada pasangan **kunci/nilai, buat satu pasangan** nilai kunci untuk nama pengguna Docker Hub Anda dan satu pasangan nilai kunci untuk kata sandi Docker Hub Anda. 

   1.  Lanjutkan mengikuti langkah-langkah di [Buat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). 

   1.  Pada langkah 5, pada halaman **Konfigurasi rotasi otomatis**, matikan karena kunci sesuai dengan kredenal Docker Hub Anda. 

   1.  Selesai mengikuti langkah-langkah di [Buat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). 

    Untuk informasi selengkapnya, lihat [Apa itu AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) 

1.  Saat Anda membuat AWS CodeBuild proyek di konsol, CodeBuild lampirkan izin yang diperlukan untuk Anda. Jika Anda menggunakan AWS KMS kunci selain`DefaultEncryptionKey`, Anda harus menambahkannya ke peran layanan. Untuk informasi selengkapnya, lihat [Memodifikasi peran (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html#roles-managingrole-editing-console) di *Panduan Pengguna IAM*. 

    Agar peran layanan Anda berfungsi dengan Secrets Manager, setidaknya harus memiliki `secretsmanager:GetSecretValue` izin.   
![\[Konfigurasi peran layanan.\]](http://docs.aws.amazon.com/id_id/codebuild/latest/userguide/images/private-registry-sample-iam.png)

1.  Untuk menggunakan konsol untuk membuat proyek dengan lingkungan yang disimpan dalam registri pribadi, lakukan hal berikut saat Anda membuat proyek. Untuk informasi, lihat [Buat proyek build (konsol)](create-project.md#create-project-console). 
**catatan**  
 Jika registri pribadi Anda ada di VPC Anda, itu harus memiliki akses internet publik. CodeBuild tidak dapat menarik gambar dari alamat IP pribadi di VPC. 

   1.  Dalam **gambar Lingkungan**, pilih **Gambar kustom**. 

   1.  Untuk **jenis Lingkungan**, pilih **Linux** atau **Windows**. 

   1.  Untuk **registri Gambar**, pilih **Registri lain**. 

   1.  Di **URL registri Eksternal**, masukkan lokasi gambar dan **kredensi Registri - opsional** masukkan ARN atau nama kredenal Secrets Manager Anda.
**catatan**  
 Jika kredensional Anda tidak ada di Wilayah Anda saat ini, maka Anda harus menggunakan ARN. Anda tidak dapat menggunakan nama kredensi jika kredensialnya ada di Wilayah yang berbeda. 

# Konfigurasikan kredenal registri pribadi untuk pelari yang dihosting sendiri
<a name="private-registry-sample-configure-runners"></a>

Gunakan petunjuk berikut untuk mengonfigurasi kredensi registri untuk pelari yang dihosting sendiri.

**catatan**  
Perhatikan bahwa kredensi ini hanya akan digunakan jika gambar diganti dengan yang berasal dari pendaftar pribadi. 

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

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 atau pilih proyek yang sudah ada. Untuk informasi selengkapnya, lihat [Buat proyek build (konsol)](create-project.md#create-project-console) dan [Mengubah setelan proyek build (konsol)](change-project.md#change-project-console).

1.  Di **Lingkungan**, pilih **Konfigurasi tambahan**. 

1.  Dalam **Konfigurasi tambahan**, masukkan nama atau ARN rahasia dari AWS Secrets Manager untuk **kredensi registri** - opsional.  
![\[Konfigurasi kredensi registri.\]](http://docs.aws.amazon.com/id_id/codebuild/latest/userguide/images/registry-credential.png)

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

1. Jika Anda ingin membuat proyek baru, jalankan perintah **create-project**.

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

1. Jika Anda ingin memperbarui proyek yang sudah ada, jalankan perintah **update-project**.

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

------

# Buat situs web statis dengan keluaran build yang dihosting di bucket S3
<a name="sample-disable-artifact-encryption"></a>

Anda dapat menonaktifkan enkripsi artefak dalam build. Anda mungkin ingin melakukan ini sehingga Anda dapat mempublikasikan artefak ke lokasi yang dikonfigurasi untuk meng-host situs web. (Anda tidak dapat mempublikasikan artefak terenkripsi.) Contoh ini menunjukkan bagaimana Anda dapat menggunakan webhook untuk memicu build dan mempublikasikan artefaknya ke bucket S3 yang dikonfigurasi untuk menjadi situs web. 

1.  Ikuti petunjuk dalam [Menyiapkan situs web statis](https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html) untuk mengonfigurasi bucket S3 agar berfungsi seperti situs web. 

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

1.  Jika halaman CodeBuild informasi ditampilkan, pilih **Buat proyek build**. Jika tidak, pada panel navigasi, perluas **Build**, pilih **Build projects**, lalu pilih **Create build project**. 

1. Di **Nama proyek**, masukkan nama untuk proyek pembangunan ini. Membangun nama proyek harus unik di setiap AWS akun. Anda juga dapat menyertakan deskripsi opsional proyek build untuk membantu pengguna lain memahami tujuan proyek ini.

1.  Di **Sumber**, untuk **penyedia Sumber**, pilih **GitHub**. Ikuti petunjuk untuk menghubungkan (atau menyambung kembali) dengan GitHub, dan kemudian pilih **Otorisasi**. 

    Untuk **Webhook**, pilih **Rebuild setiap kali perubahan kode didorong ke repositori ini**. Anda dapat memilih kotak centang ini hanya jika Anda memilih **Gunakan repositori di akun saya**.   
![\[Konfigurasi webhook.\]](http://docs.aws.amazon.com/id_id/codebuild/latest/userguide/images/webhook.png)

1. Di **Lingkungan**:

   Untuk **citra Lingkungan**, lakukan salah satu hal berikut:
   + **Untuk menggunakan image Docker yang dikelola oleh AWS CodeBuild, pilih **Managed image**, lalu buat pilihan dari **Sistem operasi**, **Runtime, **Image, dan versi Image****.** Buat pilihan dari **jenis Lingkungan** jika tersedia.
   + Untuk menggunakan gambar Docker lain, pilih **Custom image**. Untuk **jenis Lingkungan**, pilih **ARM**, **Linux**, **GPU Linux**, atau **Windows**. Jika Anda memilih **Registri lain**, untuk **URL registri eksternal**, masukkan nama dan tag gambar Docker di Docker Hub, menggunakan format. `docker repository/docker image name` Jika Anda memilih **Amazon ECR**, gunakan **repositori Amazon ECR** dan gambar **Amazon ECR** untuk memilih gambar Docker di akun Anda. AWS 
   + Untuk menggunakan image Docker pribadi, pilih **Custom image**. Untuk **jenis Lingkungan**, pilih **ARM**, **Linux**, **GPU Linux**, atau **Windows**. Untuk **registri Gambar**, pilih **Registri lain**, lalu masukkan ARN kredensil untuk gambar Docker pribadi Anda. Kredensialnya harus dibuat oleh Secrets Manager. Untuk informasi lebih lanjut, lihat [Apa itu AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) di *Panduan Pengguna AWS Secrets Manager *.

1. Dalam **peran Layanan**, lakukan salah satu hal berikut:
   + Jika Anda tidak memiliki peran CodeBuild layanan, pilih **Peran layanan baru**. Di **Nama peran**, masukkan nama untuk peran baru.
   + Jika Anda memiliki peran CodeBuild layanan, pilih **Peran layanan yang ada**. Di **Peran ARN**, pilih peran layanan.
**catatan**  
Saat menggunakan konsol untuk membuat atau memperbarui proyek build, Anda dapat membuat peran CodeBuild layanan secara bersamaan. Secara default, peran hanya berfungsi dengan proyek build tersebut. Jika Anda menggunakan konsol untuk mengaitkan peran layanan ini dengan proyek build lain, peran akan diperbarui agar berfungsi dengan proyek build lainnya. Peran layanan dapat bekerja dengan hingga 10 proyek pembangunan.

1. Di **Buildspec**, lakukan salah satu hal berikut:
   + Pilih **Gunakan file buildspec untuk menggunakan file** buildspec.ymldi direktori root kode sumber.
   + Pilih **Sisipkan perintah build** untuk menggunakan konsol untuk menyisipkan perintah build.

   Untuk informasi selengkapnya, lihat [Referensi Buildspec](build-spec-ref.md).

1.  Di **Artefak**, untuk **Jenis**, pilih **Amazon** S3 untuk menyimpan output build dalam bucket S3. 

1.  Untuk **nama Bucket**, pilih nama bucket S3 yang Anda konfigurasikan agar berfungsi sebagai situs web pada langkah 1. 

1.  Jika Anda memilih **Insert perintah build** di **Environment**, lalu untuk **file Output**, masukkan lokasi file dari build yang ingin Anda masukkan ke dalam bucket keluaran. Jika Anda memiliki lebih dari satu lokasi, gunakan koma untuk memisahkan setiap lokasi (misalnya,**appspec.yml, target/my-app.jar**). Untuk informasi selengkapnya, lihat [Artifacts reference-key in the buildspec file](build-spec-ref.md#artifacts-build-spec).

1.  Pilih **Nonaktifkan enkripsi artefak**. 

1. Perluas **Konfigurasi tambahan** dan pilih opsi yang sesuai.

1. Pilih **Buat proyek build**. Pada halaman proyek build, dalam **riwayat Build**, pilih **Start build** untuk menjalankan build.

1.  (Opsional) Ikuti petunjuk di [Contoh: Percepat situs web Anda dengan Amazon CloudFront](https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-cloudfront-walkthrough.html) di Panduan *Pengembang Amazon S3*. 

# Beberapa sumber input dan sampel artefak keluaran
<a name="sample-multi-in-out"></a>

Anda dapat membuat proyek AWS CodeBuild build dengan lebih dari satu sumber input dan lebih dari satu set artefak keluaran. Contoh ini menunjukkan cara menyiapkan proyek build yang: 
+ Menggunakan berbagai sumber dan repositori dari berbagai jenis.
+ Menerbitkan artefak build ke beberapa bucket S3 dalam satu build.

 Dalam contoh berikut, Anda membuat proyek build dan menggunakannya untuk menjalankan build. Sampel menggunakan file buildspec proyek build untuk menunjukkan cara menggabungkan lebih dari satu sumber dan membuat lebih dari satu set artefak. 

Untuk mempelajari cara membuat pipeline yang menggunakan beberapa input sumber CodeBuild untuk membuat beberapa artefak keluaran, lihat. [Contoh CodePipeline/CodeBuild integrasi dengan beberapa sumber input dan artefak keluaran](sample-codepipeline.md#sample-pipeline-multi-input-output)

**Topics**
+ [

# Buat proyek build dengan banyak input dan output
](sample-multi-in-out-create.md)
+ [

# Buat proyek build tanpa sumber
](no-source.md)

# Buat proyek build dengan banyak input dan output
<a name="sample-multi-in-out-create"></a>

Gunakan prosedur berikut untuk membuat proyek build dengan beberapa input dan output.

**Untuk membuat proyek build dengan beberapa input dan output**

1.  Unggah sumber Anda ke satu atau beberapa bucket S3,, Server GitHub Perusahaan CodeCommit GitHub, atau repositori Bitbucket. 

1.  Pilih sumber mana yang menjadi sumber utama. Ini adalah sumber di mana CodeBuild mencari dan menjalankan file buildspec Anda. 

1.  Buat proyek build. Untuk informasi selengkapnya, lihat [Buat proyek build di AWS CodeBuild](create-project.md). 

1.  Buat proyek build Anda, jalankan build, dan dapatkan informasi tentang build. 

1.  Jika Anda menggunakan AWS CLI untuk membuat proyek build, input berformat JSON ke `create-project` perintah mungkin terlihat mirip dengan yang berikut: 

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

 Sumber utama Anda didefinisikan di bawah `source` atribut. Semua sumber lain disebut sumber sekunder dan muncul di bawah`secondarySources`. Semua sumber sekunder dipasang di direktori mereka sendiri. Direktori ini disimpan dalam variabel lingkungan bawaan`CODEBUILD_SRC_DIR_sourceIdentifer`. Untuk informasi selengkapnya, lihat [Variabel lingkungan di lingkungan build](build-env-ref-env-vars.md). 

 `secondaryArtifacts`Atribut berisi daftar definisi artefak. Artefak ini menggunakan `secondary-artifacts` blok file buildspec yang bersarang di dalam blok. `artifacts` 

 Artefak sekunder dalam file buildspec memiliki struktur yang sama dengan artefak dan dipisahkan oleh pengenal artefaknya. 

**catatan**  
 Di [CodeBuild API](https://docs.aws.amazon.com/codebuild/latest/APIReference/), artefak sekunder `artifactIdentifier` pada adalah atribut wajib di `CreateProject` dan`UpdateProject`. Ini harus digunakan untuk referensi artefak sekunder. 

 Menggunakan input berformat JSON sebelumnya, file buildspec untuk proyek mungkin terlihat seperti: 

```
version: 0.2

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

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

 Anda dapat mengganti versi sumber utama menggunakan API dengan `sourceVersion` atribut di`StartBuild`. Untuk mengganti satu atau beberapa versi sumber sekunder, gunakan `secondarySourceVersionOverride` atribut. 

 Input berformat JSON ke `start-build` perintah di mungkin terlihat seperti: AWS CLI 

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

# Buat proyek build tanpa sumber
<a name="no-source"></a>

 Anda dapat mengonfigurasi CodeBuild proyek dengan memilih jenis **NO\$1SOURCE** sumber saat Anda mengonfigurasi sumber Anda. Ketika tipe sumber Anda**NO\$1SOURCE**, Anda tidak dapat menentukan file buildspec karena proyek Anda tidak memiliki sumber. Sebagai gantinya, Anda harus menentukan string buildspec berformat Yaml dalam `buildspec` atribut input berformat JSON ke perintah CLI. `create-project` Manajer tersebut mungkin akan terlihat seperti ini: 

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

Untuk informasi selengkapnya, lihat [Buat proyek build (AWS CLI)](create-project.md#create-project-cli).

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

# Contoh versi sumber dengan AWS CodeBuild
<a name="sample-source-version"></a>

 Contoh ini menunjukkan cara menentukan versi sumber Anda menggunakan format selain ID komit (juga dikenal sebagai komit SHA). Anda dapat menentukan versi sumber Anda dengan cara berikut: 
+  Untuk penyedia sumber Amazon S3, gunakan ID versi objek yang mewakili file ZIP input build. 
+  Untuk CodeCommit, Bitbucket, GitHub, dan GitHub Enterprise Server, gunakan salah satu dari berikut ini: 
  +  Permintaan tarik sebagai referensi permintaan tarik (misalnya,`refs/pull/1/head`). 
  +  Cabang sebagai nama cabang. 
  +  Komit ID. 
  +  Tag. 
  +  Referensi dan ID komit. Referensi dapat berupa salah satu dari yang berikut:
    +  Tag (misalnya,`refs/tags/mytagv1.0^{full-commit-SHA}`). 
    +  Cabang (misalnya,`refs/heads/mydevbranch^{full-commit-SHA}`). 
    +  Permintaan tarik (misalnya,`refs/pull/1/head^{full-commit-SHA}`). 
+  Untuk GitLab dan GitLab Self Managed, gunakan salah satu dari berikut ini: 
  +  Cabang sebagai nama cabang. 
  +  Komit ID. 
  +  Tag. 

**catatan**  
 Anda dapat menentukan versi sumber permintaan tarik hanya jika repositori Anda GitHub atau Server GitHub Perusahaan. 

 Jika Anda menggunakan referensi dan ID komit untuk menentukan versi, `DOWNLOAD_SOURCE` fase build akan lebih cepat daripada jika Anda hanya menyediakan versi saja. Ini karena ketika Anda menambahkan referensi, CodeBuild tidak perlu mengunduh seluruh repositori untuk menemukan komit. 
+ Anda dapat menentukan versi sumber hanya dengan ID komit, seperti`12345678901234567890123467890123456789`. Jika Anda melakukan ini, CodeBuild harus men-download seluruh repositori untuk menemukan versi.
+ Anda dapat menentukan versi sumber dengan referensi dan ID komit dalam format ini: `refs/heads/branchname^{full-commit-SHA}` (misalnya,`refs/heads/main^{12345678901234567890123467890123456789}`). Jika Anda melakukan ini, CodeBuild unduh hanya cabang yang ditentukan untuk menemukan versinya.

**catatan**  
Untuk mempercepat `DOWNLOAD_SOURCE` fase build Anda, Anda juga dapat menyetel **kedalaman klon Git** ke angka yang rendah. CodeBuild mengunduh lebih sedikit versi repositori Anda.

**Topics**
+ [

# Tentukan versi GitHub repositori dengan ID komit
](sample-source-version-github.md)
+ [

# Tentukan versi GitHub repositori dengan referensi dan ID komit
](sample-source-version-github-ref.md)

# Tentukan versi GitHub repositori dengan ID komit
<a name="sample-source-version-github"></a>

Anda dapat menentukan versi sumber hanya dengan ID komit, seperti`12345678901234567890123467890123456789`. Jika Anda melakukan ini, CodeBuild harus men-download seluruh repositori untuk menemukan versi.

**Untuk menentukan versi GitHub repositori dengan ID komit**

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 defaultnya, kecuali untuk pengaturan ini:
   +  Dalam **Sumber**: 
     +  Untuk **penyedia Sumber**, pilih **GitHub**. Jika Anda tidak terhubung GitHub, ikuti instruksi untuk menghubungkan. 
     +  Untuk **Repositori, pilih Repositori** **publik**. 
     +  Untuk **URL Repositori, masukkan**. **https://github.com/aws/aws-sdk-ruby.git** 
   + Di **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.  Untuk **spesifikasi Build**, pilih **Insert build command**, lalu pilih **Switch to editor**. 

1.  Dalam **perintah Build**, ganti teks placeholder dengan yang berikut ini: 

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

    `runtime-versions`Bagian ini diperlukan saat Anda menggunakan gambar standar Ubuntu 2.0. Di sini, runtime Ruby versi 2.6 ditentukan, tetapi Anda dapat menggunakan runtime apa pun. `echo`Perintah menampilkan versi kode sumber yang disimpan dalam variabel `CODEBUILD_RESOLVED_SOURCE_VERSION` lingkungan. 

1.  **Pada **konfigurasi Build**, terima defaultnya, lalu pilih Start build.** 

1.  Untuk **versi Sumber**, masukkan**046e8b67481d53bdc86c3f6affdd5d1afae6d369**. Ini adalah SHA dari komit di `https://github.com/aws/aws-sdk-ruby.git` repositori. 

1.  Pilih **Mulai membangun**. 

1.  Ketika build selesai, Anda akan melihat yang berikut: 
   +  Pada tab **Build logs**, versi sumber proyek mana yang digunakan. Inilah contohnya.

     ```
     [Container] Date Time Running command echo $CODEBUILD_RESOLVED_SOURCE_VERSION 
     046e8b67481d53bdc86c3f6affdd5d1afae6d369
      
     [Container] Date Time Phase complete: BUILD State: SUCCEEDED
     ```
   +  Pada tab **variabel Lingkungan**, **versi sumber Terselesaikan** cocok dengan ID komit yang digunakan untuk membuat build. 
   +  Pada tab **Detail fase**, durasi `DOWNLOAD_SOURCE` fase. 

# Tentukan versi GitHub repositori dengan referensi dan ID komit
<a name="sample-source-version-github-ref"></a>

Anda dapat menentukan versi sumber dengan referensi dan ID komit dalam format ini: `refs/heads/branchname^{full-commit-SHA}` (misalnya,`refs/heads/main^{12345678901234567890123467890123456789}`). Jika Anda melakukan ini, CodeBuild unduh hanya cabang yang ditentukan untuk menemukan versinya.

**Untuk menentukan versi GitHub repositori dengan referensi dan komit ID.**

1. Selesaikan langkah-langkah dalam [Tentukan versi GitHub repositori dengan ID komit](sample-source-version-github.md).

1.  Dari panel navigasi kiri, pilih **Membangun proyek**, lalu pilih proyek yang Anda buat sebelumnya. 

1.  Pilih **Mulai membangun**. 

1.  Dalam **versi Sumber**, masukkan**refs/heads/main^\$1046e8b67481d53bdc86c3f6affdd5d1afae6d369\$1**. Ini adalah ID komit yang sama dan referensi ke cabang dalam format`refs/heads/branchname^{full-commit-SHA}`. 

1.  Pilih **Mulai membangun**. 

1. Ketika build selesai, Anda akan melihat yang berikut: 
   +  Pada tab **Build logs**, versi sumber proyek mana yang digunakan. Inilah contohnya.

     ```
     [Container] Date Time Running command echo $CODEBUILD_RESOLVED_SOURCE_VERSION 
     046e8b67481d53bdc86c3f6affdd5d1afae6d369
      
     [Container] Date Time Phase complete: BUILD State: SUCCEEDED
     ```
   +  Pada tab **variabel Lingkungan**, **versi sumber Terselesaikan** cocok dengan ID komit yang digunakan untuk membuat build. 
   +  Pada tab **Detail fase**, durasi `DOWNLOAD_SOURCE` fase harus lebih pendek dari durasi saat Anda hanya menggunakan ID komit untuk menentukan versi sumber Anda.

# Sampel repositori sumber pihak ketiga untuk CodeBuild
<a name="sample-third-party-source"></a>

Bagian ini menjelaskan contoh integrasi antara repositori sumber pihak ketiga dan. CodeBuild


| Sampel | Deskripsi | 
| --- | --- | 
|  BitBucket permintaan tarik dan sampel filter webhook - lihat [Jalankan sampel 'Bitbucket pull request dan webhook filter' untuk CodeBuild](sample-bitbucket-pull-request.md)  |  Contoh ini menunjukkan cara membuat permintaan tarik menggunakan repositori Bitbucket. Ini juga menunjukkan kepada Anda cara menggunakan webhook Bitbucket CodeBuild untuk memicu pembuatan proyek.  | 
|  GitHub Contoh Server Perusahaan - lihat [Jalankan sampel GitHub Enterprise Server untuk CodeBuild](sample-github-enterprise.md)  |  Contoh ini menunjukkan cara menyiapkan CodeBuild proyek ketika repositori GitHub Enterprise Server Anda memiliki sertifikat yang diinstal. Ini juga menunjukkan cara mengaktifkan webhook sehingga CodeBuild membangun kembali kode sumber setiap kali perubahan kode didorong ke repositori Server Perusahaan Anda GitHub .  | 
|  GitHub permintaan tarik dan sampel filter webhook - lihat [Jalankan permintaan GitHub tarik dan sampel filter webhook untuk CodeBuild](sample-github-pull-request.md)  |  Contoh ini menunjukkan cara membuat permintaan tarik menggunakan repositori GitHub Enterprise Server. Ini juga menunjukkan cara mengaktifkan webhook sehingga CodeBuild membangun kembali kode sumber setiap kali perubahan kode didorong ke repositori Server Perusahaan Anda GitHub .  | 

# Jalankan sampel 'Bitbucket pull request dan webhook filter' untuk CodeBuild
<a name="sample-bitbucket-pull-request"></a>

AWS CodeBuild mendukung webhooks ketika repositori sumber adalah Bitbucket. Ini berarti bahwa untuk proyek CodeBuild build yang memiliki kode sumbernya disimpan dalam repositori Bitbucket, webhook dapat digunakan untuk membangun kembali kode sumber setiap kali perubahan kode didorong ke repositori. Untuk informasi selengkapnya, lihat [Acara webhook Bitbucket](bitbucket-webhook.md). 

Contoh ini menunjukkan cara membuat permintaan tarik menggunakan repositori Bitbucket. Ini juga menunjukkan kepada Anda cara menggunakan webhook Bitbucket CodeBuild untuk memicu pembuatan proyek.

**catatan**  
Saat menggunakan webhook, pengguna dapat memicu build yang tidak terduga. Untuk mengurangi risiko ini, lihat. [Praktik terbaik untuk menggunakan webhooks](webhooks.md#webhook-best-practices)

**Topics**
+ [

## Prasyarat
](#sample-bitbucket-pull-request-prerequisites)
+ [

## Langkah 1: Buat proyek build dengan Bitbucket dan aktifkan webhooks
](#sample-bitbucket-pull-request-create)
+ [

## Langkah 2: Memicu build dengan webhook Bitbucket
](#sample-bitbucket-pull-request-trigger)

## Prasyarat
<a name="sample-bitbucket-pull-request-prerequisites"></a>

 Untuk menjalankan sampel ini, Anda harus menghubungkan AWS CodeBuild proyek Anda dengan akun Bitbucket Anda. 

**catatan**  
 CodeBuild telah memperbarui izinnya dengan Bitbucket. Jika sebelumnya Anda menghubungkan proyek Anda ke Bitbucket dan sekarang menerima kesalahan koneksi Bitbucket, Anda harus menyambung kembali untuk memberikan CodeBuild izin untuk mengelola webhook Anda. 

## Langkah 1: Buat proyek build dengan Bitbucket dan aktifkan webhooks
<a name="sample-bitbucket-pull-request-create"></a>

 Langkah-langkah berikut menjelaskan cara membuat AWS CodeBuild proyek dengan Bitbucket sebagai repositori sumber dan mengaktifkan webhooks. 

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

1.  Jika halaman CodeBuild informasi ditampilkan, pilih **Buat proyek build**. Jika tidak, pada panel navigasi, perluas **Build**, pilih **Build projects**, lalu pilih **Create build project**. 

1. Pilih **Buat proyek build**. 

1. Dalam **konfigurasi Proyek**:  
**Nama proyek**  
Masukkan nama untuk proyek build ini. Membangun nama proyek harus unik di setiap AWS akun. Anda juga dapat menyertakan deskripsi opsional proyek build untuk membantu pengguna lain memahami tujuan proyek ini.

1. Dalam **Sumber**:  
**Penyedia sumber**  
Pilih **Bitbucket**. **Ikuti petunjuk untuk menghubungkan (atau menyambung kembali) dengan Bitbucket dan kemudian pilih Otorisasi.**  
**Repositori**  
Pilih **Repositori di akun Bitbucket saya**.  
Jika sebelumnya Anda belum terhubung ke akun Bitbucket Anda, masukkan nama pengguna dan kata sandi aplikasi Bitbucket Anda, lalu pilih **Simpan kredensi Bitbucket**.  
**Repositori Bitbucket**  
Masukkan URL untuk repositori Bitbucket Anda.

1. Di **Acara webhook sumber utama**, pilih yang berikut ini. 
**catatan**  
Bagian **peristiwa webhook sumber utama** hanya terlihat jika Anda memilih **Repositori di akun Bitbucket saya di** langkah sebelumnya.

   1. Pilih **Bangun ulang setiap kali perubahan kode didorong ke repositori ini** saat Anda membuat proyek Anda. 

   1. Dari **jenis Acara**, pilih satu atau beberapa acara. 

   1. Untuk memfilter saat peristiwa memicu build, di bawah **Memulai build dalam kondisi ini**, tambahkan satu atau beberapa filter opsional. 

   1. Untuk memfilter saat peristiwa tidak dipicu, di bawah **Jangan memulai build dalam kondisi ini**, tambahkan satu atau beberapa filter opsional. 

   1. Pilih **Tambahkan grup filter** untuk menambahkan grup filter lain, jika diperlukan. 

   Untuk informasi selengkapnya tentang jenis dan filter acara webhook Bitbucket, lihat. [Acara webhook Bitbucket](bitbucket-webhook.md)

1. Di **Lingkungan**:  
**Citra lingkungan**  
Pilih salah satu cara berikut:    
Untuk menggunakan image Docker yang dikelola oleh AWS CodeBuild:  
Pilih **Gambar terkelola**, lalu buat pilihan dari **Sistem operasi**, **Runtime**, **Gambar**, dan versi **Gambar**. Buat pilihan dari **jenis Lingkungan** jika tersedia.  
Untuk menggunakan gambar Docker lain:  
Pilih **gambar Kustom**. Untuk **jenis Lingkungan**, pilih **ARM**, **Linux**, **GPU Linux**, atau **Windows**. Jika Anda memilih **Registri lain**, untuk **URL registri eksternal**, masukkan nama dan tag gambar Docker di Docker Hub, menggunakan format. `docker repository/docker image name` Jika Anda memilih **Amazon ECR**, gunakan **repositori Amazon ECR** dan gambar **Amazon ECR** untuk memilih gambar Docker di akun Anda. AWS   
Untuk menggunakan image Docker pribadi:  
Pilih **gambar Kustom**. Untuk **jenis Lingkungan**, pilih **ARM**, **Linux**, **GPU Linux**, atau **Windows**. Untuk **registri Gambar**, pilih **Registri lain**, lalu masukkan ARN kredensi untuk gambar Docker pribadi Anda. Kredensialnya harus dibuat oleh Secrets Manager. Untuk informasi lebih lanjut, lihat [Apa itu AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) dalam *AWS Secrets Manager User Guide*.  
**Peran layanan**  
Pilih salah satu cara berikut:  
   + Jika Anda tidak memiliki peran CodeBuild layanan, pilih **Peran layanan baru**. Di **Nama peran**, masukkan nama untuk peran baru.
   + Jika Anda memiliki peran CodeBuild layanan, pilih **Peran layanan yang ada**. Di **Peran ARN**, pilih peran layanan.
Saat menggunakan konsol untuk membuat atau memperbarui proyek build, Anda dapat membuat peran CodeBuild layanan secara bersamaan. Secara default, peran hanya berfungsi dengan proyek build tersebut. Jika Anda menggunakan konsol untuk mengaitkan peran layanan ini dengan proyek build lain, peran akan diperbarui agar berfungsi dengan proyek build lainnya. Peran layanan dapat bekerja dengan hingga 10 proyek pembangunan.

1. Di **Buildspec**, lakukan salah satu hal berikut:
   + Pilih **Gunakan file buildspec untuk menggunakan file** buildspec.ymldi direktori root kode sumber.
   + Pilih **Sisipkan perintah build** untuk menggunakan konsol untuk menyisipkan perintah build.

   Untuk informasi selengkapnya, lihat [Referensi Buildspec](build-spec-ref.md).

1. Dalam **Artefak**:  
**Jenis**  
Pilih salah satu cara berikut:  
   + Jika Anda tidak ingin membuat artefak keluaran build, pilih **Tidak ada artefak**.
   + Untuk menyimpan output build dalam bucket S3, pilih **Amazon** S3, lalu lakukan hal berikut:
     + Jika Anda ingin menggunakan nama proyek Anda untuk file atau folder ZIP keluaran build, biarkan **Nama** kosong. Jika tidak, masukkan nama. Secara default, nama artefak adalah nama proyek. Jika Anda ingin menggunakan nama yang berbeda, masukkan di kotak nama artefak. Jika Anda ingin mengeluarkan file ZIP, sertakan ekstensi zip.
     + Untuk **nama Bucket**, pilih nama bucket keluaran.
     + Jika Anda memilih **Sisipkan perintah build** sebelumnya dalam prosedur ini, untuk **file Output**, masukkan lokasi file dari build yang ingin Anda masukkan ke dalam file atau folder ZIP keluaran build. Untuk beberapa lokasi, pisahkan setiap lokasi dengan koma (misalnya,`appspec.yml, target/my-app.jar`). Untuk informasi lebih lanjut, lihat deskripsi `files` di[Sintaks Buildspec](build-spec-ref.md#build-spec-ref-syntax).  
**Konfigurasi tambahan**  
Perluas **Konfigurasi tambahan** dan atur opsi yang sesuai.

1. Pilih **Buat proyek build**. Pada halaman **Review**, pilih **Start build** untuk menjalankan build.

## Langkah 2: Memicu build dengan webhook Bitbucket
<a name="sample-bitbucket-pull-request-trigger"></a>

Untuk proyek yang menggunakan webhook Bitbucket, AWS CodeBuild buat build saat repositori Bitbucket mendeteksi perubahan dalam kode sumber Anda. 

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

1. Pada panel navigasi, pilih **Build projects**, lalu pilih project yang terkait dengan repositori Bitbucket dengan webhook. Untuk informasi tentang membuat proyek webhook Bitbucket, lihat. [Langkah 1: Buat proyek build dengan Bitbucket dan aktifkan webhooks](#sample-bitbucket-pull-request-create) 

1. Buat beberapa perubahan dalam kode di repositori Bitbucket proyek Anda. 

1. Buat permintaan tarik pada repositori Bitbucket Anda. Untuk informasi selengkapnya, lihat [Membuat permintaan tarik](https://www.atlassian.com/git/tutorials/making-a-pull-request). 

1. Pada halaman webhooks Bitbucket, pilih **Lihat permintaan** untuk melihat daftar peristiwa terbaru. 

1. Pilih **Lihat detail** untuk melihat detail tentang respons yang dikembalikan oleh CodeBuild. Mungkin terlihat seperti ini: 

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

1. Arahkan ke halaman permintaan tarik Bitbucket untuk melihat status build. 

# Jalankan sampel GitHub Enterprise Server untuk CodeBuild
<a name="sample-github-enterprise"></a>

AWS CodeBuild mendukung GitHub Enterprise Server sebagai repositori sumber. Contoh ini menunjukkan cara menyiapkan CodeBuild proyek Anda ketika repositori GitHub Enterprise Server Anda memiliki sertifikat yang diinstal. Ini juga menunjukkan cara mengaktifkan webhook sehingga CodeBuild membangun kembali kode sumber setiap kali perubahan kode didorong ke repositori Server Perusahaan Anda GitHub .

**Topics**
+ [

## Prasyarat
](#sample-github-enterprise-prerequisites)
+ [

## Langkah 1: Buat proyek build dengan GitHub Enterprise Server dan aktifkan webhooks
](#sample-github-enterprise-running)

## Prasyarat
<a name="sample-github-enterprise-prerequisites"></a>

1. Hasilkan token akses pribadi untuk CodeBuild proyek Anda. Kami menyarankan Anda membuat pengguna GitHub Enterprise dan membuat token akses pribadi untuk pengguna ini. Salin ke clipboard Anda sehingga dapat digunakan saat Anda membuat proyek Anda. CodeBuild Untuk informasi selengkapnya, lihat [Membuat token akses pribadi untuk baris perintah](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) di situs web GitHub Bantuan.

   Saat Anda membuat token akses pribadi, sertakan lingkup **repo** dalam definisi.  
![\[Lingkup repo dalam definisi.\]](http://docs.aws.amazon.com/id_id/codebuild/latest/userguide/images/scopes.png)

1. Unduh sertifikat Anda dari Server GitHub Perusahaan. CodeBuild menggunakan sertifikat untuk membuat koneksi SSL tepercaya ke repositori.

   **Klien Linux/macOS:**

   Dari jendela terminal, jalankan perintah berikut:

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

   Ganti placeholder dalam perintah dengan nilai-nilai berikut:

   *HOST*. Alamat IP repositori Server GitHub Perusahaan Anda.

   *PORTNUMBER*. Nomor port yang Anda gunakan untuk menghubungkan (misalnya, 443).

   *folder*. Folder tempat Anda mengunduh sertifikat Anda.

   *filename*. Nama file file sertifikat Anda.
**penting**  
Simpan sertifikat sebagai file.pem.

   **Klien Windows:**

   Gunakan browser Anda untuk mengunduh sertifikat Anda dari GitHub Enterprise Server. Untuk melihat detail sertifikat situs, pilih ikon gembok. Untuk informasi tentang cara mengekspor sertifikat, lihat dokumentasi browser Anda.
**penting**  
Simpan sertifikat sebagai file.pem.

1. Unggah file sertifikat Anda ke bucket S3. Untuk informasi tentang cara membuat bucket S3, lihat [Bagaimana cara membuat Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) Untuk informasi tentang cara mengunggah objek ke bucket S3, lihat [Bagaimana cara mengunggah file dan folder ke bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)
**catatan**  
Ember ini harus berada di AWS wilayah yang sama dengan bangunan Anda. Misalnya, jika Anda menginstruksikan CodeBuild untuk menjalankan bangunan di Wilayah Timur AS (Ohio), ember harus berada di Wilayah Timur AS (Ohio).

## Langkah 1: Buat proyek build dengan GitHub Enterprise Server dan aktifkan webhooks
<a name="sample-github-enterprise-running"></a>

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

1.  Jika halaman CodeBuild informasi ditampilkan, pilih **Buat proyek build**. Jika tidak, pada panel navigasi, perluas **Build**, pilih **Build projects**, lalu pilih **Create build project**. 

1. Di **Nama proyek**, masukkan nama untuk proyek pembangunan ini. Membangun nama proyek harus unik di setiap AWS akun. Anda juga dapat menyertakan deskripsi opsional proyek build untuk membantu pengguna lain memahami tujuan proyek ini.

1. Di **Sumber**, di **penyedia Sumber**, pilih **Server GitHub Perusahaan**.
   + Pilih **Kelola kredenal akun**, lalu pilih Token **akses pribadi**. Untuk **Layanan**, pilih **Secrets Manager (disarankan)**, dan konfigurasikan rahasia Anda. Kemudian**, token akses pribadi GitHub Enterprise**, masukkan token akses pribadi Anda dan pilih **Simpan**.
   + Di **URL Repositori**, masukkan jalur ke repositori Anda, termasuk nama repositori.
   + Perluas **Additional configuration** (Konfigurasi tambahan).
   + Pilih **Rebuild setiap kali perubahan kode didorong ke repositori ini untuk** membangun kembali setiap kali perubahan kode didorong ke repositori ini.
   + Pilih **Aktifkan SSL yang tidak aman** untuk mengabaikan peringatan SSL saat Anda terhubung ke repositori proyek GitHub Enterprise Server Anda.
**catatan**  
Kami menyarankan Anda menggunakan **Aktifkan SSL yang tidak aman hanya** untuk pengujian. Ini tidak boleh digunakan di lingkungan produksi.  
![\[Konfigurasi repositori proyek GitHub Enterprise Server.\]](http://docs.aws.amazon.com/id_id/codebuild/latest/userguide/images/github-enterprise.png)

1. Di **Lingkungan**:

   Untuk **citra Lingkungan**, lakukan salah satu hal berikut:
   + **Untuk menggunakan image Docker yang dikelola oleh AWS CodeBuild, pilih **Managed image**, lalu buat pilihan dari **Sistem operasi**, **Runtime, **Image, dan versi Image****.** Buat pilihan dari **jenis Lingkungan** jika tersedia.
   + Untuk menggunakan gambar Docker lain, pilih **Custom image**. Untuk **jenis Lingkungan**, pilih **ARM**, **Linux**, **GPU Linux**, atau **Windows**. Jika Anda memilih **Registri lain**, untuk **URL registri eksternal**, masukkan nama dan tag gambar Docker di Docker Hub, menggunakan format. `docker repository/docker image name` Jika Anda memilih **Amazon ECR**, gunakan **repositori Amazon ECR** dan gambar **Amazon ECR** untuk memilih gambar Docker di akun Anda. AWS 
   + Untuk menggunakan image Docker pribadi, pilih **Custom image**. Untuk **jenis Lingkungan**, pilih **ARM**, **Linux**, **GPU Linux**, atau **Windows**. Untuk **registri Gambar**, pilih **Registri lain**, lalu masukkan ARN kredensil untuk gambar Docker pribadi Anda. Kredensialnya harus dibuat oleh Secrets Manager. Untuk informasi lebih lanjut, lihat [Apa itu AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) di *Panduan Pengguna AWS Secrets Manager *.

1. Dalam **peran Layanan**, lakukan salah satu hal berikut:
   + Jika Anda tidak memiliki peran CodeBuild layanan, pilih **Peran layanan baru**. Di **Nama peran**, masukkan nama untuk peran baru.
   + Jika Anda memiliki peran CodeBuild layanan, pilih **Peran layanan yang ada**. Di **Peran ARN**, pilih peran layanan.
**catatan**  
Saat menggunakan konsol untuk membuat atau memperbarui proyek build, Anda dapat membuat peran CodeBuild layanan secara bersamaan. Secara default, peran hanya berfungsi dengan proyek build tersebut. Jika Anda menggunakan konsol untuk mengaitkan peran layanan ini dengan proyek build lain, peran akan diperbarui agar berfungsi dengan proyek build lainnya. Peran layanan dapat bekerja dengan hingga 10 proyek pembangunan.

1. Perluas **Additional configuration** (Konfigurasi tambahan).

   Jika Anda CodeBuild ingin bekerja dengan VPC Anda:
   + Untuk **VPC**, pilih ID VPC yang digunakan. CodeBuild 
   + Untuk Subnet **VPC, pilih subnet** yang menyertakan sumber daya yang digunakan. CodeBuild 
   + Untuk **grup Keamanan VPC, pilih grup** keamanan yang CodeBuild digunakan untuk mengizinkan akses ke sumber daya di. VPCs

   Untuk informasi selengkapnya, lihat [Gunakan AWS CodeBuild dengan Amazon Virtual Private Cloud](vpc-support.md).

1. Di **Buildspec**, lakukan salah satu hal berikut:
   + Pilih **Gunakan file buildspec untuk menggunakan file** buildspec.ymldi direktori root kode sumber.
   + Pilih **Sisipkan perintah build** untuk menggunakan konsol untuk menyisipkan perintah build.

   Untuk informasi selengkapnya, lihat [Referensi Buildspec](build-spec-ref.md).

1. Di **Artefak**, untuk **Jenis**, lakukan salah satu hal berikut:
   + Jika Anda tidak ingin membuat artefak keluaran build, pilih **Tidak ada artefak**.
   + Untuk menyimpan output build dalam bucket S3, pilih **Amazon** S3, lalu lakukan hal berikut:
     + Jika Anda ingin menggunakan nama proyek Anda untuk file atau folder ZIP keluaran build, biarkan **Nama** kosong. Jika tidak, masukkan nama. Secara default, nama artefak adalah nama proyek. Jika Anda ingin menggunakan nama yang berbeda, masukkan di kotak nama artefak. Jika Anda ingin mengeluarkan file ZIP, sertakan ekstensi zip.
     + Untuk **nama Bucket**, pilih nama bucket keluaran.
     + Jika Anda memilih **Sisipkan perintah build** sebelumnya dalam prosedur ini, untuk **file Output**, masukkan lokasi file dari build yang ingin Anda masukkan ke dalam file atau folder ZIP keluaran build. Untuk beberapa lokasi, pisahkan setiap lokasi dengan koma (misalnya,`appspec.yml, target/my-app.jar`). Untuk informasi lebih lanjut, lihat deskripsi `files` di[Sintaks Buildspec](build-spec-ref.md#build-spec-ref-syntax).

1. Untuk **jenis Cache**, pilih salah satu dari berikut ini:
   + Jika Anda tidak ingin menggunakan cache, pilih **Tidak ada cache**.
   + Jika Anda ingin menggunakan cache Amazon S3, pilih **Amazon S3**, lalu lakukan hal berikut:
     + Untuk **Bucket**, pilih nama bucket S3 tempat cache disimpan.
     + (Opsional) Untuk **awalan jalur Cache, masukkan awalan** jalur Amazon S3. Nilai **awalan jalur Cache** mirip dengan nama direktori. Itu memungkinkan Anda untuk menyimpan cache di bawah direktori yang sama dalam ember. 
**penting**  
Jangan menambahkan garis miring (/) ke ujung awalan jalur.
   +  Jika Anda ingin menggunakan cache lokal, pilih **Lokal**, lalu pilih satu atau beberapa mode cache lokal. 
**catatan**  
Mode cache lapisan Docker hanya tersedia untuk Linux. Jika Anda memilihnya, proyek Anda harus berjalan dalam mode istimewa. 

   Menggunakan cache menghemat banyak waktu pembuatan karena bagian lingkungan build yang dapat digunakan kembali disimpan dalam cache dan digunakan di seluruh build. Untuk informasi tentang menentukan cache dalam file buildspec, lihat. [Sintaks Buildspec](build-spec-ref.md#build-spec-ref-syntax) Untuk informasi lebih lanjut tentang caching, lihat[Cache dibangun untuk meningkatkan kinerja](build-caching.md). 

1. Pilih **Buat proyek build**. Pada halaman proyek build, pilih **Start build**.

# Jalankan permintaan GitHub tarik dan sampel filter webhook untuk CodeBuild
<a name="sample-github-pull-request"></a>

AWS CodeBuild mendukung webhook saat repositori sumbernya. GitHub Ini berarti bahwa untuk proyek CodeBuild build yang memiliki kode sumbernya disimpan dalam GitHub repositori, webhook dapat digunakan untuk membangun kembali kode sumber setiap kali perubahan kode didorong ke repositori. Untuk CodeBuild sampel, lihat [AWS CodeBuild Sampel](https://github.com/aws-samples/aws-codebuild-samples).

**catatan**  
Saat menggunakan webhook, pengguna dapat memicu build yang tidak terduga. Untuk mengurangi risiko ini, lihat. [Praktik terbaik untuk menggunakan webhooks](webhooks.md#webhook-best-practices)

**Topics**
+ [

## Langkah 1: Buat proyek build dengan GitHub dan aktifkan webhooks
](#sample-github-pull-request-running)
+ [

## Langkah 2: Verifikasi bahwa webhook diaktifkan
](#verification-checks)

## Langkah 1: Buat proyek build dengan GitHub dan aktifkan webhooks
<a name="sample-github-pull-request-running"></a>

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

1.  Jika halaman CodeBuild informasi ditampilkan, pilih **Buat proyek build**. Jika tidak, pada panel navigasi, perluas **Build**, pilih **Build projects**, lalu pilih **Create build project**. 

1. Pilih **Buat proyek build**. 

1. Dalam **konfigurasi Proyek**:  
**Nama proyek**  
Masukkan nama untuk proyek build ini. Membangun nama proyek harus unik di setiap AWS akun. Anda juga dapat menyertakan deskripsi opsional proyek build untuk membantu pengguna lain memahami tujuan proyek ini.

1. Dalam **Sumber**:  
**Penyedia sumber**  
Pilih **GitHub**. Ikuti petunjuk untuk menghubungkan (atau menyambung kembali) dengan GitHub dan kemudian pilih **Otorisasi**.  
**Repositori**  
Pilih **Repositori di akun saya GitHub**.  
**GitHub repositori**  
Masukkan URL untuk GitHub repositori Anda.

1. Di **Acara webhook sumber utama**, pilih yang berikut ini.
**catatan**  
Bagian **peristiwa webhook sumber utama** hanya terlihat jika Anda memilih **Repositori di GitHub akun saya pada** langkah sebelumnya.

   1. Pilih **Bangun ulang setiap kali perubahan kode didorong ke repositori ini** saat Anda membuat proyek Anda. 

   1. Dari **jenis Acara**, pilih satu atau beberapa acara. 

   1. Untuk memfilter saat peristiwa memicu build, di bawah **Memulai build dalam kondisi ini**, tambahkan satu atau beberapa filter opsional. 

   1. Untuk memfilter saat peristiwa tidak dipicu, di bawah **Jangan memulai build dalam kondisi ini**, tambahkan satu atau beberapa filter opsional. 

   1. Pilih **Tambahkan grup filter** untuk menambahkan grup filter lain, jika diperlukan. 

   Untuk informasi selengkapnya tentang jenis dan filter acara GitHub webhook, lihat[GitHub acara webhook](github-webhook.md).

1. Di **Lingkungan**:  
**Citra lingkungan**  
Pilih salah satu cara berikut:    
Untuk menggunakan image Docker yang dikelola oleh AWS CodeBuild:  
Pilih **Gambar terkelola**, lalu buat pilihan dari **Sistem operasi**, **Runtime**, **Gambar**, dan versi **Gambar**. Buat pilihan dari **jenis Lingkungan** jika tersedia.  
Untuk menggunakan gambar Docker lain:  
Pilih **gambar Kustom**. Untuk **jenis Lingkungan**, pilih **ARM**, **Linux**, **GPU Linux**, atau **Windows**. Jika Anda memilih **Registri lain**, untuk **URL registri eksternal**, masukkan nama dan tag gambar Docker di Docker Hub, menggunakan format. `docker repository/docker image name` Jika Anda memilih **Amazon ECR**, gunakan **repositori Amazon ECR** dan gambar **Amazon ECR** untuk memilih gambar Docker di akun Anda. AWS   
Untuk menggunakan image Docker pribadi:  
Pilih **gambar Kustom**. Untuk **jenis Lingkungan**, pilih **ARM**, **Linux**, **GPU Linux**, atau **Windows**. Untuk **registri Gambar**, pilih **Registri lain**, lalu masukkan ARN kredensi untuk gambar Docker pribadi Anda. Kredensialnya harus dibuat oleh Secrets Manager. Untuk informasi lebih lanjut, lihat [Apa itu AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) dalam *AWS Secrets Manager User Guide*.  
**Peran layanan**  
Pilih salah satu cara berikut:  
   + Jika Anda tidak memiliki peran CodeBuild layanan, pilih **Peran layanan baru**. Di **Nama peran**, masukkan nama untuk peran baru.
   + Jika Anda memiliki peran CodeBuild layanan, pilih **Peran layanan yang ada**. Di **Peran ARN**, pilih peran layanan.
Saat menggunakan konsol untuk membuat atau memperbarui proyek build, Anda dapat membuat peran CodeBuild layanan secara bersamaan. Secara default, peran hanya berfungsi dengan proyek build tersebut. Jika Anda menggunakan konsol untuk mengaitkan peran layanan ini dengan proyek build lain, peran akan diperbarui agar berfungsi dengan proyek build lainnya. Peran layanan dapat bekerja dengan hingga 10 proyek pembangunan.

1. Di **Buildspec**, lakukan salah satu hal berikut:
   + Pilih **Gunakan file buildspec untuk menggunakan file** buildspec.ymldi direktori root kode sumber.
   + Pilih **Sisipkan perintah build** untuk menggunakan konsol untuk menyisipkan perintah build.

   Untuk informasi selengkapnya, lihat [Referensi Buildspec](build-spec-ref.md).

1. Dalam **Artefak**:  
**Jenis**  
Pilih salah satu cara berikut:  
   + Jika Anda tidak ingin membuat artefak keluaran build, pilih **Tidak ada artefak**.
   + Untuk menyimpan output build dalam bucket S3, pilih **Amazon** S3, lalu lakukan hal berikut:
     + Jika Anda ingin menggunakan nama proyek Anda untuk file atau folder ZIP keluaran build, biarkan **Nama** kosong. Jika tidak, masukkan nama. Secara default, nama artefak adalah nama proyek. Jika Anda ingin menggunakan nama yang berbeda, masukkan di kotak nama artefak. Jika Anda ingin mengeluarkan file ZIP, sertakan ekstensi zip.
     + Untuk **nama Bucket**, pilih nama bucket keluaran.
     + Jika Anda memilih **Sisipkan perintah build** sebelumnya dalam prosedur ini, untuk **file Output**, masukkan lokasi file dari build yang ingin Anda masukkan ke dalam file atau folder ZIP keluaran build. Untuk beberapa lokasi, pisahkan setiap lokasi dengan koma (misalnya,`appspec.yml, target/my-app.jar`). Untuk informasi lebih lanjut, lihat deskripsi `files` di[Sintaks Buildspec](build-spec-ref.md#build-spec-ref-syntax).  
**Konfigurasi tambahan**  
Perluas **Konfigurasi tambahan** dan atur opsi yang sesuai.

1. Pilih **Buat proyek build**. Pada halaman **Review**, pilih **Start build** untuk menjalankan build.

## Langkah 2: Verifikasi bahwa webhook diaktifkan
<a name="verification-checks"></a>

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

1. Di panel navigasi, pilih **Membangun proyek**.

1. Lakukan salah satu tindakan berikut:
   + Pilih tautan untuk proyek build dengan webhook yang ingin Anda verifikasi, lalu pilih Detail **build**.
   + Pilih tombol di samping proyek build dengan webhook yang ingin Anda verifikasi, pilih **Lihat detail**, lalu pilih tab **Build details**.

1. Di **acara webhook sumber utama**, pilih tautan URL **Webhook**. 

1. **Di GitHub repositori Anda, pada halaman **Pengaturan**, di bawah **Webhooks**, verifikasi bahwa **Permintaan Tarik** dan Push dipilih.**

1. Dalam pengaturan GitHub profil Anda, di bawah **Pengaturan Pribadi**, **Aplikasi**, ** OAuthAplikasi Resmi**, Anda akan melihat bahwa aplikasi Anda telah diizinkan untuk mengakses AWS Wilayah yang Anda pilih.

# Tutorial: Penandatanganan kode Apple dengan Fastlane dalam CodeBuild menggunakan S3 untuk penyimpanan sertifikat
<a name="sample-fastlane"></a>

[fastlane](https://docs.fastlane.tools/) adalah alat otomatisasi open source yang populer untuk mengotomatiskan penerapan dan rilis beta untuk aplikasi iOS dan Android Anda. Ini menangani semua tugas yang membosankan, seperti membuat tangkapan layar, menangani penandatanganan kode, dan merilis aplikasi Anda.

## Prasyarat
<a name="sample-fastlane-prerequisites"></a>

Untuk menyelesaikan tutorial ini, Anda harus terlebih dahulu menyiapkan yang berikut:
+ Sebuah Akun AWS
+ [Akun Pengembang Apple](https://developer.apple.com/)
+ Bucket S3 untuk menyimpan sertifikat
+ fastlane diinstal di proyek Anda - [Panduan](https://docs.fastlane.tools/getting-started/ios/setup/) untuk menginstal fastlane

## Langkah 1: Siapkan Fastlane Match dengan S3 di mesin lokal Anda
<a name="sample-fastlane-S3"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) adalah salah satu [alat Fastlane](https://fastlane.tools/), dan memungkinkan konfigurasi yang mulus untuk penandatanganan kode di lingkungan pengembangan lokal Anda dan seterusnya. CodeBuild Fastlane Match menyimpan semua sertifikat penandatanganan kode dan profil penyediaan di Git repository/S3 Bucket/Google Cloud Storage, dan mengunduh serta menginstal sertifikat dan profil yang diperlukan bila diperlukan.

Dalam konfigurasi contoh ini, Anda akan mengatur dan menggunakan bucket Amazon S3 untuk penyimpanan. 

****

1. Inisialisasi kecocokan dalam proyek Anda:

   ```
   fastlane match init
   ```

1. Saat diminta, pilih S3 sebagai mode penyimpanan.

1. Perbarui `*Matchfile*` Anda untuk menggunakan S3:

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

## Langkah 2: Siapkan Fastfile Anda
<a name="sample-fastlane-S3-fastfile"></a>

Buat atau perbarui `Fastfile` Anda dengan jalur berikut.

Pada CodeBuild, Fastlane Match harus dijalankan setiap kali Anda membangun dan menandatangani aplikasi Anda. Cara termudah untuk melakukannya adalah dengan menambahkan `match` tindakan ke jalur yang membangun aplikasi Anda.

```
default_platform(:ios)

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

**catatan**  
Pastikan untuk menambahkan `setup_ci` ke `before_all ` bagian `Fastfile` agar tindakan pencocokan berfungsi dengan benar. Ini memastikan bahwa gantungan kunci Fastlane sementara dengan izin yang sesuai digunakan. Tanpa menggunakan ini, Anda mungkin melihat kegagalan build atau hasil yang tidak konsisten. 



## Langkah 3: Jalankan `fastlane match` perintah untuk menghasilkan sertifikat dan profil masing-masing
<a name="sample-fastlane-S3-certificates"></a>

Perintah fastlane match untuk tipe yang diberikan (yaitu, development, appstore, adhoc, enterprise) akan menghasilkan sertifikat dan profil jika tidak tersedia di remote store. Sertifikat dan profil akan disimpan di S3 oleh fastlane.

```
bundle exec fastlane match appstore
```

Eksekusi perintah akan interaktif dan fastlane akan meminta untuk mengatur frasa pass untuk mendekripsi sertifikat.

## Langkah 4: Buat file aplikasi untuk proyek Anda
<a name="sample-fastlane-S3-appfile"></a>

Buat atau tambahkan file aplikasi yang sesuai untuk proyek Anda.

****

1. Buat atau tambahkan [Gymfile](http://docs.fastlane.tools/actions/gym/#gymfile), [Appfile, Snapfile](http://docs.fastlane.tools/advanced/Appfile/)[, Deliverfile](http://docs.fastlane.tools/actions/snapshot/#snapfile) [berdasarkan persyaratan](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile) pembuatan proyek Anda.

1. Komit perubahan ke repositori jarak jauh Anda

## Langkah 5: Buat variabel lingkungan di Secrets Manager
<a name="sample-fastlane-S3-secrets"></a>

Buat dua rahasia untuk menyimpan cookie sesi fastlane dan frasa pass yang cocok. Untuk informasi selengkapnya tentang membuat rahasia di Secrets Manager, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

****

1. Akses cookie sesi fastlane Anda sebagai berikut.

   1. Kunci rahasia - `FASTLANE_SESSION`

   1. Nilai rahasia - cookie sesi yang dihasilkan dari menjalankan perintah berikut di mesin lokal Anda.
**catatan**  
Nilai ini tersedia setelah otentikasi dalam file lokal:`~/.fastlane/spaceship/my_appleid_username/cookie`.

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

1. Frasa pass Fastlane Match - Untuk mengaktifkan Fastlane Match untuk mendekripsi sertifikat dan profil yang disimpan dalam bucket S3, Anda perlu menambahkan frasa sandi enkripsi yang Anda konfigurasikan dalam langkah penyiapan Match ke variabel lingkungan proyek. CodeBuild

   1. Kunci rahasia - `MATCH_PASSWORD`

   1. Nilai rahasia -*<match passphrase to decrypt certificates>*. Frasa sandi diatur saat menghasilkan sertifikat di Langkah 3.

**catatan**  
Saat membuat rahasia di atas di Secrets Manager, ingatlah untuk memberikan nama rahasia dengan awalan berikut: `/CodeBuild/`

## Langkah 6: Buat armada komputasi
<a name="sample-fastlane-S3-fleet"></a>

Buat armada komputasi untuk proyek Anda.

****

1. Di konsol, buka CodeBuild dan buat armada komputasi baru.

1. Pilih “macOS” sebagai sistem operasi dan pilih jenis dan gambar komputasi yang sesuai.

## Langkah 7: Buat proyek di CodeBuild
<a name="sample-fastlane-S3-project"></a>

Buat proyek Anda di CodeBuild.



****

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).

1. Siapkan penyedia sumber Anda (seperti GitHub, CodeCommit). Ini adalah repositori sumber proyek iOS dan bukan repositori sertifikat.

1.  Di **Lingkungan**: 
   + Pilih **Kapasitas Cadangan**.
   + Untuk **Armada**, pilih armada yang dibuat di atas.
   + Berikan nama peran layanan yang CodeBuild akan dibuat untuk Anda.
   + Berikan variabel lingkungan di bawah ini.
     + Nama:`MATCH_PASSWORD`, Nilai:*<secrets arn>*, Jenis: Secrets Manager (Rahasia ARN dibuat pada langkah 5 untuk MATCH\$1PASSWORD)
     + Nama:`FASTLANE_SESSION`, Nilai:*<secrets arn>*, Jenis: Secrets Manager (Rahasia ARN dibuat di Langkah 5 untuk FASTLANE\$1SESSION)

1. Di **Buildspec**, tambahkan yang berikut ini:

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

## Langkah 8: Konfigurasikan peran IAM
<a name="sample-fastlane-S3-role"></a>

Setelah proyek dibuat, pastikan peran layanan CodeBuild proyek Anda memiliki izin untuk mengakses bucket S3 yang berisi sertifikat. Tambahkan kebijakan berikut ke peran:

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

****  

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

------

## Langkah 9: Jalankan build
<a name="sample-fastlane-S3-run"></a>

Jalankan build. Anda dapat meninjau status build dan log in CodeBuild.

Setelah pekerjaan selesai, Anda akan dapat melihat log pekerjaan.

## Pemecahan masalah
<a name="sample-fastlane-S3-troubleshooting"></a>
+ Jika Anda mengalami masalah dengan pengambilan sertifikat, pastikan izin IAM Anda diatur dengan benar untuk akses S3.
+ Jika Anda mengalami masalah dengan dekripsi sertifikat, pastikan Anda menetapkan frasa sandi yang benar dalam variabel lingkungan MATCH\$1PASSWORD.
+ Untuk masalah penandatanganan kode, verifikasi bahwa akun Pengembang Apple Anda memiliki sertifikat dan profil yang diperlukan, dan bahwa pengenal bundel dalam proyek Xcode Anda cocok dengan yang ada di profil penyediaan Anda.

## Pertimbangan keamanan
<a name="sample-fastlane-considerations"></a>

Berikut ini adalah pertimbangan keamanan untuk tutorial ini.
+ Pastikan bucket S3 Anda memiliki pengaturan keamanan yang sesuai, termasuk enkripsi saat istirahat. Secara khusus, pastikan bucket tidak memiliki akses publik dan membatasi akses hanya CodeBuild dan sistem yang perlu memiliki akses.
+ Pertimbangkan AWS Secrets Manager untuk menggunakan untuk menyimpan informasi sensitif seperti MATCH\$1PASSWORD dan FASTLANE\$1SESSION.

Contoh ini menyediakan penyiapan untuk penandatanganan kode iOS dengan Fastlane dalam CodeBuild menggunakan Amazon S3 untuk penyimpanan sertifikat. Anda mungkin perlu menyesuaikan beberapa langkah berdasarkan persyaratan dan CodeBuild lingkungan proyek spesifik Anda. Pendekatan ini memanfaatkan AWS layanan untuk meningkatkan keamanan dan integrasi dalam AWS ekosistem.

# Tutorial: Penandatanganan kode Apple dengan Fastlane saat CodeBuild digunakan GitHub untuk penyimpanan sertifikat
<a name="sample-fastlane-github"></a>

[fastlane](https://docs.fastlane.tools/) adalah alat otomatisasi open source yang populer untuk mengotomatiskan penerapan dan rilis beta untuk aplikasi iOS dan Android Anda. Ini menangani semua tugas yang membosankan, seperti membuat tangkapan layar, menangani penandatanganan kode, dan merilis aplikasi Anda.

Contoh ini menunjukkan cara menyiapkan penandatanganan kode Apple menggunakan Fastlane dalam CodeBuild proyek yang berjalan di armada Mac, dengan GitHub penyimpanan untuk sertifikat dan profil penyediaan.

## Prasyarat
<a name="sample-fastlane-github-prerequisites"></a>

Untuk menyelesaikan tutorial ini, Anda harus terlebih dahulu menyiapkan yang berikut:
+ Sebuah Akun AWS
+ [Akun Pengembang Apple](https://developer.apple.com/)
+ Sebuah GitHub repositori pribadi untuk menyimpan sertifikat
+ fastlane diinstal di proyek Anda - [Panduan](https://docs.fastlane.tools/getting-started/ios/setup/) untuk menginstal fastlane

## Langkah 1: Siapkan Fastlane Match dengan GitHub di mesin lokal Anda
<a name="sample-fastlane-github-certificates"></a>

[Fastlane Match](https://docs.fastlane.tools/actions/match/) adalah salah satu [alat Fastlane](https://fastlane.tools/), dan memungkinkan konfigurasi yang mulus untuk penandatanganan kode di lingkungan pengembangan lokal Anda dan seterusnya. CodeBuild Fastlane Match menyimpan semua sertifikat penandatanganan kode dan profil penyediaan di Git repository/S3 Bucket/Google Cloud Storage, dan mengunduh serta menginstal sertifikat dan profil yang diperlukan bila diperlukan.

Dalam contoh konfigurasi ini, kita akan mengatur dan menggunakan repositori Git untuk penyimpanan. 

****

1. Inisialisasi kecocokan dalam proyek Anda:

   ```
   fastlane match init
   ```

1. Saat diminta, pilih GitHub sebagai mode penyimpanan.

1. Perbarui `*Matchfile*` Anda untuk menggunakan: GitHub

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

**catatan**  
Pastikan Anda memasukkan URL HTTPS untuk repositori Git agar fastlane berhasil mengautentikasi dan mengkloning. Jika tidak, Anda mungkin melihat kesalahan otentikasi saat mencoba menggunakan match.

## Langkah 2: Siapkan Fastfile Anda
<a name="sample-fastlane-github-fastfile"></a>

Buat atau perbarui `Fastfile` Anda dengan jalur berikut.

Pada CodeBuild, Fastlane Match harus dijalankan setiap kali Anda membangun dan menandatangani aplikasi Anda. Cara termudah untuk melakukannya adalah dengan menambahkan `match` tindakan ke jalur yang membangun aplikasi Anda.

```
default_platform(:ios)

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

**catatan**  
Pastikan untuk menambahkan `setup_ci` ke `before_all ` bagian `Fastfile` agar tindakan pencocokan berfungsi dengan benar. Ini memastikan bahwa gantungan kunci Fastlane sementara dengan izin yang sesuai digunakan. Tanpa menggunakan ini, Anda mungkin melihat kegagalan build atau hasil yang tidak konsisten. 

## Langkah 3: Jalankan `fastlane match` perintah untuk menghasilkan sertifikat dan profil masing-masing
<a name="sample-fastlane-github-certificates"></a>

Perintah fastlane match untuk tipe yang diberikan (yaitu development, appstore, adhoc, enterprise) akan menghasilkan sertifikat dan profil jika tidak tersedia di remote store. Sertifikat dan profil akan disimpan GitHub oleh fastlane.

```
bundle exec fastlane match appstore
```

Eksekusi perintah akan interaktif dan fastlane akan meminta untuk mengatur frasa pass untuk mendekripsi sertifikat.

## Langkah 4: Buat file aplikasi untuk proyek Anda
<a name="sample-fastlane-github-appfile"></a>

Buat atau tambahkan file aplikasi yang sesuai untuk proyek Anda.

****

1. Buat atau tambahkan [Gymfile](http://docs.fastlane.tools/actions/gym/#gymfile), [Appfile, Snapfile](http://docs.fastlane.tools/advanced/Appfile/)[, Deliverfile](http://docs.fastlane.tools/actions/snapshot/#snapfile) [berdasarkan persyaratan](http://docs.fastlane.tools/actions/deliver/#editing-the-deliverfile) pembuatan proyek Anda.

1. Komit perubahan ke repositori jarak jauh Anda.

## Langkah 5: Buat variabel lingkungan di Secrets Manager
<a name="sample-fastlane-github-secrets"></a>

Buat tiga rahasia untuk menyimpan cookie sesi fastlane dan frasa pass yang cocok. Untuk informasi selengkapnya tentang membuat rahasia di Secrets Manager, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

****

1. Akses cookie sesi fastlane Anda sebagai berikut.

   1. Kunci rahasia - `FASTLANE_SESSION`

   1. Nilai rahasia - cookie sesi yang dihasilkan dari menjalankan perintah berikut di mesin lokal Anda.
**catatan**  
Nilai ini tersedia setelah otentikasi dalam file lokal:`~/.fastlane/spaceship/my_appleid_username/cookie`.

      ```
      fastlane spaceauth -u <Apple_account>
      ```

1. Frasa pass Fastlane Match - Untuk mengaktifkan Fastlane Match untuk mendekripsi sertifikat dan profil yang disimpan dalam repositori Git, Anda perlu menambahkan frasa sandi enkripsi yang Anda konfigurasikan dalam langkah penyiapan Match ke variabel lingkungan proyek. CodeBuild 

   1. Kunci rahasia - `MATCH_PASSWORD`

   1. Nilai rahasia -`<match passphrase to decrypt certificates>`. Frasa sandi diatur saat menghasilkan sertifikat di Langkah 3.

1. *Fastlane `MATCH_GIT_BASIC_AUTHORIZATION` - menetapkan otorisasi dasar untuk pertandingan:*

   1. Kunci rahasia: 

      `MATCH_GIT_BASIC_AUTHORIZATION`

   1. Nilai rahasia - Nilai harus berupa string yang dikodekan base64 dari nama pengguna Anda dan token akses pribadi (PAT) dalam format. `username:password` Anda dapat membuatnya menggunakan perintah berikut:

      ```
      echo -n your_github_username:your_personal_access_token | base64
      ```

      Anda dapat membuat PAT di GitHub konsol di Profil **Anda > Pengaturan > Pengaturan Pengembang > Token Akses Pribadi**. Untuk informasi lebih lanjut, lihat panduan berikut: [https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing- your-personal-access-tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).

**catatan**  
Saat membuat rahasia di atas di Secrets Manager, ingatlah untuk memberikan nama rahasia dengan awalan berikut: `/CodeBuild/`

## Langkah 6: Buat armada komputasi
<a name="sample-fastlane-github-fleet"></a>

Buat armada komputasi untuk proyek Anda.

****

1. Di konsol, buka CodeBuild dan buat armada komputasi baru.

1. Pilih `macOS` sebagai sistem operasi dan pilih jenis dan gambar komputasi yang sesuai.

## Langkah 7: Buat proyek di CodeBuild
<a name="sample-fastlane-github-project"></a>

Buat proyek Anda di CodeBuild.

****

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).

1. Siapkan penyedia sumber Anda (seperti GitHub, CodeCommit). Ini adalah repositori sumber proyek iOS dan bukan repositori sertifikat.

1.  Di **Lingkungan**: 
   + Pilih **Kapasitas Cadangan**.
   + Untuk **Armada**, pilih armada yang dibuat di atas.
   + Berikan nama peran layanan yang CodeBuild akan dibuat untuk Anda.
   + Berikan variabel lingkungan di bawah ini.
     + Nama:`MATCH_PASSWORD`, Nilai:*<secrets arn>*, Jenis: Secrets Manager (Rahasia ARN dibuat pada langkah 5 untuk MATCH\$1PASSWORD)
     + Nama:`FASTLANE_SESSION`, Nilai:*<secrets arn>*, Jenis: Secrets Manager (Rahasia ARN dibuat pada langkah 5 untuk FASTLANE\$1SESSION)
     + Nama:`MATCH_GIT_BASIC_AUTHORIZATION`, Nilai:*<secrets ARN>*, Jenis: Secrets Manager Secrets Rahasia ARN (dibuat pada langkah 5 untuk) `MATCH_GIT_BASIC_AUTHORIZATION`

1. Di **Buildspec**, tambahkan yang berikut ini:

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

## Langkah 8: Jalankan build
<a name="sample-fastlane-github-run"></a>

Jalankan build. Anda dapat meninjau status build dan log in CodeBuild.

Setelah pekerjaan selesai, Anda akan dapat melihat log pekerjaan.

## Pemecahan masalah
<a name="sample-fastlane-github-troubleshooting"></a>
+ Jika Anda mengalami masalah saat mengakses GitHub repositori, periksa kembali token akses pribadi Anda dan variabel lingkungan MATCH\$1GIT\$1BASIC\$1AUTHORIZATION.
+ Jika Anda mengalami masalah dengan dekripsi sertifikat, pastikan Anda menetapkan frasa sandi yang benar dalam variabel lingkungan MATCH\$1PASSWORD.
+ Untuk masalah penandatanganan kode, verifikasi bahwa akun Pengembang Apple Anda memiliki sertifikat dan profil yang diperlukan, dan bahwa pengenal bundel dalam proyek Xcode Anda cocok dengan yang ada di profil penyediaan Anda.

## Pertimbangan keamanan
<a name="sample-fastlane-github-considerations"></a>

Berikut ini adalah pertimbangan keamanan untuk tutorial ini.
+ Simpan GitHub repositori Anda untuk sertifikat pribadi dan akses audit secara teratur.
+ Pertimbangkan AWS Secrets Manager untuk menggunakan untuk menyimpan informasi sensitif seperti MATCH\$1PASSWORD dan FASTLANE\$1SESSION.

Contoh ini menyediakan penyiapan untuk penandatanganan kode iOS dengan Fastlane yang CodeBuild digunakan GitHub untuk penyimpanan sertifikat. Anda mungkin perlu menyesuaikan beberapa langkah berdasarkan persyaratan dan CodeBuild lingkungan proyek spesifik Anda. Pendekatan ini memanfaatkan AWS layanan untuk meningkatkan keamanan dan integrasi dalam AWS ekosistem.

# Tetapkan nama artefak pada waktu pembuatan menggunakan versi semantik
<a name="sample-buildspec-artifact-naming"></a>

 Contoh ini berisi contoh file buildspec yang menunjukkan cara menentukan nama artefak yang dibuat pada waktu pembuatan. Nama yang ditentukan dalam file buildspec dapat menggabungkan perintah Shell dan variabel lingkungan untuk membuatnya unik. Nama yang Anda tentukan dalam file buildspec akan menggantikan nama yang Anda masukkan di konsol saat membuat project.

 Jika Anda membangun beberapa kali, menggunakan nama artefak yang ditentukan dalam file buildspec dapat memastikan nama file artefak keluaran Anda unik. Misalnya, Anda dapat menggunakan tanggal dan stempel waktu yang dimasukkan ke dalam nama artefak pada waktu pembuatan. 

Jika Anda ingin mengganti nama artefak yang Anda masukkan di konsol dengan nama di file buildspec, lakukan hal berikut:

1.  Tetapkan proyek build Anda untuk mengganti nama artefak dengan nama di file buildspec. 
   +  Jika Anda menggunakan konsol untuk membuat proyek build, pilih **Aktifkan versi semantik**. Untuk informasi selengkapnya, lihat [Buat proyek build (konsol)](create-project.md#create-project-console). 
   +  Jika Anda menggunakan AWS CLI, atur `overrideArtifactName` ke true dalam file berformat JSON diteruskan ke. `create-project` Untuk informasi selengkapnya, lihat [Buat proyek build (AWS CLI)](create-project.md#create-project-cli). 
   +  Jika Anda menggunakan AWS CodeBuild API, setel `overrideArtifactName` flag pada `ProjectArtifacts` objek saat proyek dibuat atau diperbarui atau build dimulai. 

1.  Tentukan nama dalam file buildspec. Gunakan contoh file buildspec berikut sebagai panduan. 

 Contoh Linux ini menunjukkan cara menentukan nama artefak yang menyertakan tanggal pembuatan build: 

```
version: 0.2         
phases:
  build:
    commands:
      - rspec HelloWorld_spec.rb
artifacts:
  files:
    - '**/*'
  name: myname-$(date +%Y-%m-%d)
```

 Contoh Linux ini menunjukkan cara menentukan 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
```

 Contoh Windows ini menunjukkan cara menentukan nama artefak yang menyertakan tanggal dan waktu pembuatan pembuatan: 

```
version: 0.2
env:
  variables:
    TEST_ENV_VARIABLE: myArtifactName
phases:
  build:
    commands:
      - cd samples/helloworld
      - dotnet restore
      - dotnet run
artifacts:
  files:
    - '**/*'
  name: $Env:TEST_ENV_VARIABLE-$(Get-Date -UFormat "%Y%m%d-%H%M%S")
```

 Contoh Windows ini menunjukkan cara menentukan nama artefak yang menggunakan variabel yang dideklarasikan dalam file buildspec dan variabel lingkungan. CodeBuild Untuk informasi selengkapnya, lihat [Variabel lingkungan di lingkungan build](build-env-ref-env-vars.md). 

```
version: 0.2
env:
  variables:
    TEST_ENV_VARIABLE: myArtifactName
phases:
  build:
    commands:
      - cd samples/helloworld
      - dotnet restore
      - dotnet run
artifacts:
  files:
    - '**/*'
  name: $Env:TEST_ENV_VARIABLE-$Env:AWS_REGION
```

 Untuk informasi selengkapnya, lihat [Buat referensi spesifikasi untuk CodeBuild](build-spec-ref.md). 