

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

# Tutorial: Konfigurasikan CodeBuild-hosted GitLab pelari
<a name="sample-gitlab-runners"></a>

Tutorial ini menunjukkan cara mengkonfigurasi CodeBuild proyek Anda untuk menjalankan pekerjaan GitLab CI/CD pipeline. Untuk informasi selengkapnya tentang penggunaan GitLab atau GitLab Self Managed with CodeBuild, lihat[Self-managed GitLab pelari di AWS CodeBuild](gitlab-runner.md).<a name="sample-gitlab-runners-prerequisites"></a>

Untuk menyelesaikan tutorial ini, Anda harus terlebih dahulu:
+ Connect dengan aplikasi OAuth dengan menggunakan. CodeConnections Perhatikan bahwa saat menghubungkan dengan aplikasi OAuth, Anda harus menggunakan CodeBuild konsol untuk melakukannya. Untuk instruksi lebih lanjut, lihat[GitLab akses di CodeBuild](access-tokens-gitlab-overview.md).
+ Connect CodeBuild ke GitLab akun Anda. Untuk melakukannya, Anda dapat menambahkan GitLab sebagai penyedia sumber di konsol. Untuk petunjuk, lihat [GitLab akses di CodeBuild](access-tokens-gitlab-overview.md).
**catatan**  
Ini hanya perlu dilakukan jika Anda belum terhubung ke GitLab akun Anda.  
Dengan fitur ini, CodeBuild perlu izin tambahan. seperti `create_runner` dan `manage_runner` dari aplikasi GitLab OAuth. Jika ada CodeConnections untuk GitLab akun tertentu, maka akun tersebut tidak secara otomatis meminta pembaruan izin. Untuk melakukannya, Anda dapat pergi ke CodeConnections konsol dan membuat koneksi dummy ke GitLab akun yang sama untuk memicu otorisasi ulang untuk mendapatkan izin tambahan. Dengan ini, semua koneksi yang ada dapat menggunakan fitur runner. Setelah selesai, Anda dapat menghapus koneksi dummy.

## Langkah 1: Buat CodeBuild proyek dengan webhook
<a name="sample-gitlab-runners-create-project"></a>

Pada langkah ini, Anda akan membuat CodeBuild proyek dengan webhook dan meninjaunya di GitLab konsol.

**Untuk membuat CodeBuild proyek dengan webhook**

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

   Pada **tipe Project**, pilih **Runner project**.
   +  Di **Runner**: 
     + Untuk **penyedia Runner**, pilih **GitLab**.
     +  Untuk **Credential**, pilih salah satu dari berikut ini:
       + Pilih **Default source credential**. Koneksi default menerapkan GitLab koneksi default di semua proyek.
       + Pilih **Kredensi sumber kustom**. Koneksi kustom menerapkan GitLab koneksi khusus yang mengesampingkan pengaturan default akun Anda.
**catatan**  
Jika Anda belum membuat koneksi ke penyedia Anda, Anda harus membuat GitLab koneksi baru. Untuk petunjuk, lihat [Connect CodeBuild ke GitLab](access-tokens-gitlab-overview.md#connections-gitlab).
     + Untuk **lokasi Runner**, pilih **Repository**.
     +  Untuk **Repositori**, pilih nama proyek Anda GitLab dengan menentukan jalur proyek dengan namespace.
   +  Di **Lingkungan**: 
     + Pilih **gambar Lingkungan** yang didukung dan **Compute**. Perhatikan bahwa Anda memiliki opsi untuk mengganti pengaturan gambar dan instance dengan menggunakan label di YAMAL GitLab CI/CD pipeline Anda. Untuk informasi selengkapnya, lihat [Langkah 2: Buat file.gitlab-ci.yl di repositori Anda](#sample-gitlab-runners-gitlab-ci).
   +  Di **Buildspec**: 
     + Perhatikan bahwa buildspec Anda akan diabaikan kecuali `buildspec-override:true` ditambahkan sebagai label. Sebagai gantinya, CodeBuild akan menimpanya untuk menggunakan perintah yang akan mengatur pelari yang dikelola sendiri.

1. Lanjutkan dengan nilai default dan kemudian pilih **Create build project**.

1. Buka GitLab konsol di `https://gitlab.com/{{user-name}}/{{repository-name}}/-/hooks` untuk memverifikasi bahwa webhook telah dibuat dan diaktifkan untuk mengirimkan peristiwa **pekerjaan Alur Kerja**.

## Langkah 2: Buat file.gitlab-ci.yl di repositori Anda
<a name="sample-gitlab-runners-gitlab-ci"></a>

Pada langkah ini, Anda akan membuat `.gitlab-ci.yml` file [https://gitlab.com/](https://gitlab.com/)untuk mengonfigurasi lingkungan build Anda dan menggunakan pelari yang GitLab dikelola sendiri. CodeBuild Untuk informasi selengkapnya, lihat [Menggunakan pelari yang dikelola sendiri](https://docs.gitlab.com/runner/#use-self-managed-runners).

### Perbarui GitLab CI/CD pipa YAMAL Anda
<a name="sample-gitlab-runners-update-yaml.setup"></a>

Arahkan ke `https://gitlab.com/{{user-name}}/{{project-name}}/-/tree/{{branch-name}}` dan buat `.gitlab-ci.yml` file di repositori Anda. Anda dapat mengonfigurasi lingkungan build dengan melakukan salah satu hal berikut:
+ Anda dapat menentukan nama CodeBuild proyek, dalam hal ini build akan menggunakan konfigurasi proyek yang ada untuk komputasi, gambar, versi gambar, dan ukuran instance. Nama proyek diperlukan untuk menautkan pengaturan AWS terkait GitLab pekerjaan Anda ke CodeBuild proyek tertentu. Dengan memasukkan nama proyek di YAMAL, CodeBuild diizinkan untuk memanggil pekerjaan dengan pengaturan proyek yang benar.

  ```
  tags:
      - codebuild-{{<codebuild-project-name>}}-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
  ```

  `$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME`diperlukan untuk memetakan build ke pekerjaan pipeline tertentu yang berjalan dan menghentikan pembangunan saat proses pipeline dibatalkan.
**catatan**  
Pastikan bahwa Anda {{<project-name>}} cocok dengan nama proyek yang Anda buat CodeBuild. Jika tidak cocok, tidak CodeBuild akan memproses webhook dan GitLab CI/CD pipeline mungkin hang.

  Berikut ini adalah contoh dari GitLab CI/CD pipa YAMAL:

  ```
  workflow:
    name: HelloWorld
  stages:          # List of stages for jobs, and their order of execution
    - build
  
  build-job:       # This job runs in the build stage, which runs first.
    stage: build
    script:
      - echo "Hello World!"
    tags:
      - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
  ```
+ Anda juga dapat mengganti gambar dan jenis komputasi di tag. Lihat [Hitung gambar yang didukung dengan pelari CodeBuild-hosted GitLab](sample-gitlab-runners-gitlab-ci.images.md) untuk daftar gambar yang dikuratori. Untuk menggunakan gambar kustom, lihat[Penggantian label didukung dengan pelari CodeBuild-hosted GitLab](gitlab-runners-update-labels.md). Jenis komputasi dan gambar dalam tag akan mengganti pengaturan lingkungan pada proyek Anda. Untuk mengganti setelan lingkungan untuk build komputasi Amazon EC2, gunakan sintaks berikut:

  ```
  tags:
      - codebuild-{{<codebuild-project-name>}}-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
      - image:{{<environment-type>}}-{{<image-identifier>}}
      - instance-size:{{<instance-size>}}
  ```

  Berikut ini adalah contoh dari GitLab CI/CD pipa YAMAL:

  ```
  stages:
    - build
  
  build-job:
    stage: build
    script:
      - echo "Hello World!"
    tags:
      - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
      - image:arm-3.0
      - instance-size:small
  ```
+ Anda dapat mengganti armada yang digunakan untuk build Anda di tag. Ini akan menggantikan pengaturan armada yang dikonfigurasi pada proyek Anda untuk menggunakan armada yang ditentukan. Untuk informasi selengkapnya, lihat [Jalankan build di atas armada kapasitas cadangan](fleets.md). Untuk mengganti setelan armada untuk build komputasi Amazon EC2, gunakan sintaks berikut:

  ```
  tags:
      - codebuild-{{<codebuild-project-name>}}-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
      - fleet:{{<fleet-name>}}
  ```

  Untuk mengganti armada dan gambar yang digunakan untuk build, gunakan sintaks berikut:

  ```
  tags:
      - codebuild-{{<codebuild-project-name>}}-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
      - fleet:{{<fleet-name>}}                    
      - image:{{<environment-type>}}-{{<image-identifier>}}
  ```

  Berikut ini adalah contoh dari GitLab CI/CD pipa YAMAL:

  ```
  stages:
    - build
  
  build-job:
    stage: build
    script:
      - echo "Hello World!"
    tags:
      - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
      - fleet:myFleet
      - image:arm-3.0
  ```
+ Untuk menjalankan tugas GitLab CI/CD pipeline Anda pada gambar kustom, Anda dapat mengonfigurasi gambar kustom dalam CodeBuild proyek Anda dan menghindari memberikan label penggantian gambar. CodeBuild akan menggunakan gambar yang dikonfigurasi dalam proyek jika tidak ada label penggantian gambar yang disediakan.

Setelah Anda melakukan perubahan`.gitlab-ci.yml`, GitLab pipeline akan dipicu dan `build-job` akan mengirim notifikasi webhook yang akan memulai build in CodeBuild Anda.

### Jalankan perintah buildspec fase INSTALL, PRE\_BUILD, dan POST\_BUILD
<a name="sample-gitlab-runners-update-yaml.buildspec"></a>

Secara default, CodeBuild abaikan perintah buildspec apa pun saat menjalankan build yang dikelola sendiri. GitLab Untuk menjalankan perintah buildspec selama build, `buildspec-override:true` dapat ditambahkan sebagai akhiran untuk: `tags`

```
tags:
    - codebuild-{{<codebuild-project-name>}}-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
    - buildspec-override:true
```

Dengan menggunakan perintah ini, CodeBuild akan membuat folder yang disebut `gitlab-runner` dalam folder sumber utama wadah. Ketika GitLab pelari dimulai selama `BUILD` fase, pelari akan berjalan di direktori. `gitlab-runner`

Ada beberapa batasan saat menggunakan penggantian buildspec dalam build yang dikelola sendiri: GitLab 
+ CodeBuild tidak akan menjalankan perintah buildspec selama `BUILD` fase, karena pelari yang dikelola sendiri berjalan dalam fase tersebut. `BUILD`
+ CodeBuild tidak akan mengunduh sumber primer atau sekunder apa pun selama `DOWNLOAD_SOURCE` fase berlangsung. Jika Anda memiliki file buildspec yang dikonfigurasi, hanya file itu yang akan diunduh dari sumber utama proyek.
+ Jika perintah build gagal di `INSTALL` fase `PRE_BUILD` atau, tidak CodeBuild akan memulai runner yang dikelola sendiri dan pekerjaan GitLab CI/CD pipeline harus dibatalkan secara manual.
+ CodeBuild mengambil token runner selama `DOWNLOAD_SOURCE` fase, yang memiliki waktu kedaluwarsa satu jam. Jika `INSTALL` fase `PRE_BUILD` atau fase Anda melebihi satu jam, token runner mungkin kedaluwarsa sebelum pelari yang GitLab dikelola sendiri dimulai.

## Langkah 3: Tinjau hasil Anda
<a name="sample-gitlab-runners-verify"></a>

Setiap kali GitLab CI/CD proses pipeline terjadi, CodeBuild akan menerima peristiwa pekerjaan CI/CD pipeline melalui webhook. Untuk setiap pekerjaan dalam CI/CD pipeline, CodeBuild mulailah membangun untuk menjalankan pelari fana GitLab . Pelari bertanggung jawab untuk menjalankan pekerjaan CI/CD pipa tunggal. Setelah pekerjaan selesai, runner dan proses build terkait akan segera dihentikan.

Untuk melihat log pekerjaan CI/CD pipeline, navigasikan ke repositori GitLab, pilih **Build**, **Jobs**, lalu pilih **Job spesifik** yang ingin Anda tinjau log.

Anda dapat meninjau label yang diminta di log saat pekerjaan menunggu untuk diambil oleh pelari yang dikelola sendiri. CodeBuild

## Filter acara GitLab webhook ()CloudFormation
<a name="sample-gitlab-runners-webhooks-cfn"></a>

 YAML-formatted Bagian berikut dari CloudFormation template membuat grup filter yang memicu build saat dievaluasi ke true. Grup filter berikut menentukan permintaan pekerjaan GitLab CI/CD pipeline dengan nama CI/CD pipeline yang cocok dengan ekspresi `\[CI-CodeBuild\]` reguler.

```
CodeBuildProject:
  Type: AWS::CodeBuild::Project
  Properties:
    Name: MyProject
    ServiceRole: service-role
    Artifacts:
      Type: NO_ARTIFACTS
    Environment:
      Type: LINUX_CONTAINER
      ComputeType: BUILD_GENERAL1_SMALL
      Image: aws/codebuild/standard:5.0
    Source:
      Type: GITLAB
      Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION
    Triggers:
      Webhook: true
      ScopeConfiguration:
        Name: group-name
        Scope: GITLAB_GROUP
      FilterGroups:
        - - Type: EVENT
            Pattern: WORKFLOW_JOB_QUEUED
          - Type: WORKFLOW_NAME
            Pattern: \[CI-CodeBuild\]
```