Men-deploy alur kerja dari repositori Git menggunakan Cloud Build

Anda dapat menggunakan pemicu Cloud Build untuk otomatis memulai build dan men-deploy alur kerja dari repositori Git. Anda dapat mengonfigurasi pemicu untuk men-deploy alur kerja pada perubahan apa pun pada repositori sumber, atau men-deploy alur kerja hanya jika perubahan tersebut cocok dengan kriteria tertentu.

Pendekatan ini dapat membantu Anda mengelola siklus proses deployment. Misalnya, Anda dapat men-deploy perubahan ke alur kerja di lingkungan staging, menjalankan pengujian terhadap lingkungan tersebut, lalu meluncurkan perubahan ini secara bertahap ke lingkungan produksi.

Sebelum memulai

Petunjuk ini mengasumsikan bahwa Anda memiliki peran Cloud Build Editor (roles/cloudbuild.builds.editor) di project Google Cloud sehingga Anda dapat membuat pemicu. Anda juga memerlukan alur kerja di repositori sumber seperti GitHub atau Bitbucket.

Konsol

  1. Aktifkan Cloud Build dan Workflows API.

    Mengaktifkan API

  2. Berikan peran Workflows Admin (roles/workflows.admin) ke akun layanan Cloud Build:

    1. Di konsol Google Cloud, buka halaman IAM.

      Buka IAM

    2. Pilih project Anda.

    3. Pada baris untuk akun layanan Cloud Build (PROJECT_NUMBER@cloudbuild.gserviceaccount.com), klik Edit principal.

    4. Klik Add another role.

    5. Dalam daftar Role, pilih peran Workflows Admin.

    6. Klik Save.

  3. Berikan peran Service Account User (roles/iam.serviceAccountUser) pada akun layanan default Compute Engine ke akun layanan Cloud Build. Setelah Anda mengaktifkan Compute Engine API, akun layanan default Compute Engine adalah PROJECT_NUMBER-compute@developer.gserviceaccount.com.

    1. Di konsol Google Cloud, buka halaman Akun Layanan.

      Buka Akun Layanan

    2. Pilih project Anda.

    3. Klik alamat email akun layanan default Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com).

    4. Klik tab Izin.

    5. Klik tombol Berikan akses.

    6. Untuk menambahkan akun utama baru, masukkan alamat email akun layanan Anda (SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com).

    7. Pada daftar Select a role, pilih peran Service Accounts > Service Account User.

    8. Klik Save.

gcloud

  1. Aktifkan Cloud Build dan Workflows API.

    gcloud services enable cloudbuild.googleapis.com \
      workflows.googleapis.com
    
  2. Berikan peran Workflows Admin (roles/workflows.admin) ke akun layanan Cloud Build:

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format='value(projectNumber)')
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
      --role=roles/workflows.admin
    

    Ganti PROJECT_ID dengan ID project Google Cloud Anda.

  3. Berikan peran Service Account User (roles/iam.serviceAccountUser) pada akun layanan default Compute Engine ke akun layanan Cloud Build. Setelah Anda mengaktifkan Compute Engine API, akun layanan default Compute Engine adalah PROJECT_NUMBER-compute@developer.gserviceaccount.com.

    gcloud iam service-accounts add-iam-policy-binding \
      $PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
      --role=roles/iam.serviceAccountUser
    

Menghubungkan ke repositori sumber

Anda harus menghubungkan Cloud Build ke repositori sumber agar Cloud Build dapat mengotomatiskan build yang merespons peristiwa yang terjadi dalam repositori.

Selesaikan langkah-langkah berikut untuk terhubung ke GitHub atau Bitbucket:

  1. Di konsol Google Cloud, buka halaman Triggers Cloud Build:

    Buka Pemicu

  2. Jika perlu, pilih project Anda lalu klik Open.

  3. Dari daftar Region, pilih region tempat Anda ingin membuat pemicu.

  4. Klik Connect repository.

  5. Pilih repositori sumber tempat Anda menyimpan kode sumber Anda.

    Misalnya: GitHub (Aplikasi GitHub Cloud Build)

  6. Klik Lanjutkan.

  7. Lakukan autentikasi ke repositori sumber dengan nama pengguna dan sandi Anda.

    Jika login ke GitHub, Anda akan diminta untuk mengizinkan Aplikasi GitHub Google Cloud Build mengakses akun GitHub Anda agar dapat melanjutkan.

  8. Dari daftar repositori yang tersedia, pilih repositori yang diinginkan, lalu klik OK.

    Untuk repositori eksternal seperti GitHub dan Bitbucket, Anda harus memiliki izin level pemilik untuk project Google Cloud tempat Anda bekerja.

  9. Baca pernyataan penyangkalan, lalu pilih kotak centang di sampingnya untuk menunjukkan bahwa Anda menyetujui persyaratan tersebut.

  10. Klik Connect.

  11. Untuk melanjutkan pembuatan pemicu build guna mengotomatiskan build untuk kode sumber di repositori, klik Create a trigger. Jika tidak, klik Selesai.

Membuat file konfigurasi Cloud Build

File konfigurasi build menentukan kolom yang diperlukan saat menggunakan pemicu build untuk memulai build. Buat file konfigurasi di direktori utama project dan tulis menggunakan YAML atau JSON.

Misalnya, file konfigurasi berikut men-deploy dan menjalankan alur kerja pengujian, lalu menggunakan skrip untuk memeriksa output. Jika pengujian lulus, alur kerja akan di-deploy:

steps:
# Deploy the test workflow with the commit sha
- id: 'deploy-test-workflow'
  name: 'gcr.io/cloud-builders/gcloud'
  args: ['workflows', 'deploy', '$_WORKFLOW_NAME-$BRANCH_NAME-$SHORT_SHA', '--source', 'gitops/workflow.yaml']

# Run the test workflow and capture the output
- id: 'run-test-workflow'
  name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args: ['-c', 'gcloud workflows run $_WORKFLOW_NAME-$BRANCH_NAME-$SHORT_SHA > /workspace/testoutput.log']

# Delete the test workflow
- id: 'delete-test-workflow'
  name: 'gcr.io/cloud-builders/gcloud'
  args: ['workflows', 'delete', '$_WORKFLOW_NAME-$BRANCH_NAME-$SHORT_SHA', '--quiet']

# Check the test output
- id: 'check-test-workflow'
  name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args: ['gitops/test-$BRANCH_NAME.sh']

# Deploy the workflow
- id: 'deploy-workflow'
  name: 'gcr.io/cloud-builders/gcloud'
  args: ['workflows', 'deploy', '$_WORKFLOW_NAME-$BRANCH_NAME', '--source', 'gitops/workflow.yaml']

Variabel substitusi $BRANCH_NAME dan $SHORT_SHA diisi oleh Cloud Build saat build dipicu dari repositori Git. ID tersebut mewakili nama cabang Anda, dan tujuh karakter pertama dari ID commit yang terkait dengan build Anda.

Variabel substitusi $_WORKFLOW_NAME memungkinkan Anda menggunakan kembali file konfigurasi dengan nilai variabel yang berbeda. Anda dapat menentukan nilainya saat membuat pemicu build.

Untuk mengetahui informasi selengkapnya, lihat Membuat file konfigurasi build.

Membuat pemicu build

Anda dapat mengotomatiskan deployment alur kerja dengan membuat pemicu Cloud Build.

Untuk membuat pemicu build bagi file konfigurasi di bagian sebelumnya:

  1. Di konsol Google Cloud, buka halaman Triggers Cloud Build:

    Buka Pemicu

  2. Klik Create trigger.

  3. Di kolom Nama, masukkan nama pemicu Anda.

  4. Untuk Peristiwa, pilih peristiwa untuk memanggil pemicu.

    Misalnya: Mendorong ke cabang

  5. Untuk Sumber, pilih repositori Anda, dan nama cabang atau tag yang akan memulai pemicu. Anda dapat menggunakan ekspresi reguler untuk menentukan kecocokan dengan cabang atau tag.

    Misalnya: GoogleCloudPlatform/workflows-demos (repositori) dan ^main$|^staging$ (cocok dengan cabang main dan staging)

  6. Luaskan bagian Show include and applied files filters dan tentukan alur kerja Anda sebagai file yang disertakan sehingga saat diubah, build akan dipanggil.

    Contoh: gitops/workflow.yaml

  7. Untuk Configuration, pilih Cloud Build configuration file (YAML or JSON) sebagai jenis, dan Repository sebagai lokasi.

  8. Di kolom Cloud Build configuration file location, tentukan lokasi file Anda.

    Contoh: gitops/cloudbuild.yaml

  9. Jika ingin, untuk menambahkan variabel substitusi, klik Tambahkan variabel, lalu tentukan kombinasi kunci dan nilai.

    Misalnya: _WORKFLOW_NAME (variabel) dan workflows-gitops (nilai)

  10. Untuk menyimpan pemicu build, klik Create.

Saat ada perubahan apa pun yang didorong ke alur kerja di cabang repositori Git yang ditentukan, perubahan tersebut akan otomatis memicu Cloud Build untuk men-deploy alur kerja.

Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola pemicu build.

Menguji pemicu build

Anda dapat menguji pemicu build dan file konfigurasi dari bagian sebelumnya.

  1. Di cabang staging dari repositori Git, edit workflow.yaml, dan ubah Hello World menjadi Bye World:

    main:
      steps:
        - init:
            assign:
              - message: "Hello World"
        - returnResult:
            return: ${message}
  2. Commit dan kirim perubahan ke cabang staging.

    git add workflow.yaml
    git commit -m "Update workflow.yaml in staging"
    git push
    

    Pemicu Cloud Build berjalan dan memulai build.

  3. Untuk mengonfirmasi keberhasilan build, di Google Cloud Console, buka halaman Build history:

    Buka Histori build

    Setelah build selesai, Cloud Build memberikan status keseluruhan untuk build dan untuk setiap langkah build individual. Untuk mengetahui informasi selengkapnya, baca Melihat hasil build.

  4. Untuk mengonfirmasi bahwa alur kerja staging telah di-deploy, di Konsol Google Cloud, buka halaman Workflows:

    Buka Workflows

    Anda akan melihat alur kerja bernama workflows-gitops-staging sudah tercantum.

  5. Untuk men-deploy alur kerja staging ke produksi, gabungkan cabang staging ke cabang main:

    git checkout main
    git merge staging
    git push
    

    Perlu diperhatikan bahwa karena test-main.sh mengharapkan Hello World dalam output alur kerja, build akan gagal:

    RESULT_EXPECTED="result: '\"Hello World\"'"
    RESULT_ACTUAL=$(grep "result: " $FILE)
    if [[ $RESULT_EXPECTED == $RESULT_ACTUAL ]]; then
      echo "Result test passed"
    else
      echo "Result test failed. Expected: $RESULT_EXPECTED Actual: $RESULT_ACTUAL"; exit 1;
    fi
  6. Agar berhasil men-deploy alur kerja produksi, di cabang staging, edit lagi workflow.yaml dan ubah string kembali ke Hello World.

  7. Commit dan kirim perubahan ke cabang staging, lalu gabungkan cabang staging ke cabang main.

  8. Untuk mengonfirmasi bahwa alur kerja produksi di-deploy, di Konsol Google Cloud, buka halaman Workflows:

    Buka Workflows

    Anda akan melihat alur kerja bernama workflows-gitops-main sudah tercantum.

Langkah selanjutnya