Menggunakan aturan otomatisasi

Dokumen ini menjelaskan aturan otomatis, yaitu tindakan yang dapat dilakukan pada pipeline penayangan Anda secara otomatis. Misalnya, Anda dapat mengonfigurasi pipeline pengiriman sehingga promosi ke target tertentu terjadi secara otomatis, dalam keadaan yang tepat.

Anda hanya dapat menggunakan aturan otomatis yang dibuat di Cloud Deploy. Aturan otomatis yang tersedia tercantum dalam dokumen ini.

Aturan otomatisasi yang tersedia

Aturan otomatisasi berikut tersedia di Cloud Deploy:

Aturan Deskripsi
timedPromoteReleaseRule Mempromosikan secara otomatis dari satu target ke target berikutnya

berdasarkan jadwal cron.

promoteReleaseRule Secara otomatis mempromosikan rilis ke target yang ditunjukkan setelah berhasil

peluncuran di target sebelumnya dalam progres.

advanceRolloutRule Secara otomatis memajukan peluncuran dari yang ditunjukkan

tahap ke tahap berikutnya.

repairRolloutRule Mencoba lagi tugas yang gagal secara otomatis dalam peluncuran

sebanyak jumlah yang ditentukan, dan melakukan roll back jika semua percobaan ulang gagal.

Mengonfigurasi aturan otomatisasi

Konfigurasi untuk setiap aturan otomatisasi bergantung pada aturan tertentu. Bagian ini menjelaskan konfigurasi yang dimiliki semua aturan, serta cara mengonfigurasi setiap aturan yang tersedia.

Setiap aturan otomatis dikonfigurasi sebagai bagian dari konfigurasi untuk resource otomatisasi. Ini dapat berada di dalam file yang sama dengan konfigurasi untuk pipeline pengiriman yang relevan (biasanya disebut clouddeploy.yaml) atau di file apa pun yang Anda inginkan. Pelajari lebih lanjut cara mengonfigurasi otomatisasi.

Bagian berikut menjelaskan konfigurasi khusus untuk setiap aturan otomatisasi. Lihat Mengotomatiskan deployment untuk konfigurasi otomatisasi itu sendiri.

Mengonfigurasi aturan otomatisasi timedPromoteReleaseRule

Aturan timedPromoteReleaseRule memungkinkan Anda menjadwalkan waktu untuk mempromosikan rilis dari target yang dipilih ke target berikutnya dalam progres, atau ke target yang ditentukan. Saat mengonfigurasi otomatisasi timedPromoteReleaseRule, Anda menentukan kapan rilis dipromosikan, berdasarkan jadwal cron.

rules:
- timedPromoteReleaseRule:
    name: "[RULE_NAME]"
    schedule: "[CRON]"
    timeZone: "[TIME_ZONE]"
    destinationTargetId: "[TO_TARGET]"
    destinationPhase: "[TO_PHASE]"

Dengan:

  • [RULE_NAME]

    Adalah nama yang ingin Anda berikan untuk aturan ini. Nama ini harus unik dalam pipeline pengiriman.

  • [CRON]

    Adalah jadwal cron yang menentukan kapan rilis dipromosikan. Gunakan jadwal ini untuk menentukan tanggal dan waktu saat Anda ingin mempromosikan rilis.

    Jadwal ini menggunakan sintaksis cron standar:

    * * * * *

    Dalam jadwal ini...

    • Posisi pertama adalah menit (0-59).
    • Posisi kedua adalah jam (0-23).
    • Posisi ketiga adalah hari dalam sebulan (1-31).
    • Posisi keempat adalah bulan (1-12).
    • Posisi kelima adalah hari dalam seminggu (0-6, Minggu hingga Sabtu)

    Misalnya, jika aturan promosi berjangka waktu Anda mencakup jadwal berikut: 0 9 * * 1, rilis Anda dipromosikan setiap hari Senin pukul 09.00.

    Anda juga dapat menggunakan fitur jadwal cron standar, seperti:

    • Rentang (0-5)
    • Daftar (1,3,5)
    • Fungsi langkah (misalnya, */3 di kolom jam mengaktifkan setiap jam ketiga)
  • [TIME_ZONE]

    Adalah zona waktu yang ingin Anda gunakan untuk menjadwalkan promosi, dalam format IANA.

  • [TO_TARGET]

    Adalah targetId target yang akan dipromosikan, atau @next untuk mempromosikan rilis secara otomatis ke target berikutnya setelah target yang ditentukan dalam selector.targets property dalam konfigurasi otomatisasi ini. Tindakan ini bersifat opsional; nilai defaultnya adalah @next.

  • [TO_PHASE]

    Adalah nama fase phase yang ingin Anda promosikan, misalnya canary-25 atau stable. Properti ini bersifat opsional; jika Anda menghapusnya, rilis akan dipromosikan ke fase pertama di target.

Mengonfigurasi aturan otomatisasi promoteReleaseRule

Aturan promoteReleaseRule mempromosikan rilis Anda setelah peluncuran yang berhasil ke target. Misalnya, jika Anda memiliki tiga target, Anda dapat menyiapkan aturan ini sehingga saat rilis berhasil di-deploy ke target pertama, rilis tersebut akan dipromosikan secara otomatis ke target kedua.

Saat mengonfigurasi otomatisasi promoteReleaseRule, Anda dapat menentukan target yang akan dipromosikan (destinationTargetId) atau @next. Jika peluncuran berhasil diselesaikan di target yang ditentukan dalam definisi Automation, rilis kemudian dipromosikan ke target yang ditentukan dalam destinationTargetId, dengan tunduk pada interval waktu wait.

Anda juga dapat mempromosikan rilis ke fase tertentu di target yang dimaksud, menggunakan properti destinationPhase. Stanza rules yang ditampilkan di sini masuk ke dalam definisi otomatisasi Anda.

rules:
- promoteReleaseRule:
    name: "[RULE_NAME]"
    wait: [WAIT_TIME]
    destinationTargetId: "[TO_TARGET]"
    destinationPhase: "[TO_PHASE]"

Dengan:

  • [RULE_NAME]

    Adalah nama yang ingin Anda berikan untuk aturan ini. Nama ini harus unik dalam resource otomatisasi.

  • [WAIT_TIME]

    Adalah jumlah waktu, dalam menit, untuk menunggu setelah rilis siap untuk promosi sebelum dipromosikan. Misalnya, 1m. m wajib diisi.

    Nilai defaultnya adalah 0, atau tidak ada waktu tunggu. Durasi maksimumnya adalah 20160m (atau 14 hari).

  • [TO_TARGET]

    Adalah targetId target yang akan dipromosikan.

    Nilai ini juga dapat berupa @next, yang mempromosikan rilis secara otomatis ke target berikutnya setelah target yang ditentukan dalam properti selector.targets di konfigurasi otomatisasi ini. Ini adalah nilai default jika Anda menghilangkan nilai dari destinationTargetId.

  • [TO_PHASE]

    Adalah nama fase yang ingin Anda promosikan, misalnya canary-25 atau stable. Properti ini bersifat opsional; jika Anda menghapusnya, rilis akan dipromosikan ke fase pertama di target.

Mengonfigurasi aturan otomatisasi advanceRolloutRule

advanceRolloutRule akan memajukan peluncuran Anda secara otomatis, setelah berhasil menyelesaikan satu fase, ke fase berikutnya. Aturan otomatisasi ini berguna untuk deployment canary. Misalnya, jika Anda telah mengonfigurasi strategi deployment canary pada target, dengan fase 25%, 50%, dan stable, Anda dapat mengonfigurasi aturan otomatisasi yang memajukan fase secara otomatis ke stable setelah fase 50% selesai.

Saat mengonfigurasi otomatisasi advanceRolloutRule, Anda mengidentifikasi fase yang akan dilanjutkan dari (sourcePhase). Stanza rules yang ditampilkan di sini masuk ke dalam definisi otomatisasi Anda.

rules:
- advanceRolloutRule:
    name: "[RULE_NAME]"
    sourcePhases: ["[START_PHASE]", "[START_PHASE]"...]
    wait: [WAIT_TIME]

Dengan:

  • [RULE_NAME]

    Adalah nama yang ingin Anda berikan untuk aturan ini. Nama ini harus unik dalam pipeline pengiriman.

  • [WAIT_TIME]

    Adalah jumlah waktu, dalam menit, untuk menunggu peluncuran dilanjutkan setelah peluncuran siap. Misalnya, 1m. m wajib diisi.

    Nilai defaultnya adalah 0, atau tidak ada waktu tunggu. Durasi maksimumnya adalah 20160m (atau 14 hari).

  • ["[START_PHASE]", "[START_PHASE]"...]

    Adalah fase atau fase dari mana peluncuran dilanjutkan secara otomatis. Artinya, saat salah satu fase yang tercantum selesai dengan berhasil, peluncuran akan otomatis dilanjutkan dari fase tersebut ke fase berikutnya.

    Nama fase peka huruf besar/kecil. Selain itu, nama fase ini bersifat opsional; jika Anda menghilangkan sourcePhases, semua fase dalam peluncuran akan otomatis dilanjutkan.

Mengonfigurasi aturan otomatisasi repairRolloutRule

Aturan repairRolloutRule mencoba lagi peluncuran yang gagal sebanyak beberapa kali yang ditentukan. Jika jumlah percobaan ulang tersebut habis, aturan ini kemudian dapat otomatis mengembalikan target ke rilis terakhir yang berhasil.

Saat mengonfigurasi otomatisasi repairRolloutRule, Anda dapat menentukan berapa kali peluncuran akan dicoba lagi, dan waktu tunggu di antara upaya percobaan lagi. Anda juga dapat mengonfigurasi fase atau tugas tertentu, atau keduanya, untuk dicoba lagi. Jika setiap upaya percobaan ulang gagal, peluncuran akan gagal. Jika ada percobaan ulang yang berhasil, otomatisasi akan berhenti dan peluncuran berhasil.

Secara opsional, Anda dapat mengonfigurasi otomatisasi untuk mengembalikan ke rilis terakhir yang berhasil di target. Upaya coba lagi juga bersifat opsional, tetapi Anda harus memiliki beberapa upaya coba lagi atau rollback, atau keduanya.

Stanza rules yang ditampilkan di sini masuk ke dalam definisi otomatisasi Anda.

rules:
- repairRolloutRule:
    name: "[RULE_NAME]"
    phases: [PHASES_TO_REPAIR]
    jobs: [JOBS_TO_REPAIR]
    repairPhases:
    - retry:
        attempts: [NUMBER_OF_ATTEMPTS]
        wait: [WAIT_TIME]
        backoffMode: [LINEAR | EXPONENTIAL]
    - rollback:
        destinationPhase: [PHASE_NAME]

Dengan:

  • [RULE_NAME]

    Adalah nama yang ingin Anda berikan untuk aturan ini. Nama ini harus unik dalam pipeline pengiriman.

  • [PHASES_TO_REPAIR]

    Fase atau fase peluncuran yang akan dicoba lagi. Opsi ini bersifat opsional, dan defaultnya adalah semua fase dalam peluncuran.

  • [JOBS_TO_REPAIR]

    Adalah tugas yang akan dicoba lagi. Opsi ini bersifat opsional, dan defaultnya adalah semua tugas.

  • [NUMBER_OF_ATTEMPTS]

    Opsional, jumlah percobaan ulang peluncuran sebelum dianggap gagal.

  • [WAIT_TIME]

    Adalah jumlah waktu untuk menunggu di antara upaya percobaan ulang. Misalnya, 1m untuk interval satu menit. Unit waktu (dalam kasus ini m) wajib diisi.

    Jika mode adalah linear, interval ini sama untuk setiap percobaan ulang. Jika mode adalah exponential, interval akan bertambah setiap kali. (Lihat mode untuk deskripsi lebih lanjut.)

  • backoffMode

    LINEAR atau EXPONENTIAL, yang menunjukkan apakah akan menambah waktu di antara percobaan ulang atau tidak. Jika LINEAR, waktu antara percobaan ulang konstan, yaitu WAIT_TIME. Jika EXPONENTIAL, waktu antara upaya percobaan ulang akan berlipat ganda dengan setiap upaya percobaan ulang yang berhasil. Default-nya adalah LINEAR.

    Misalnya, jika WAIT_TIME adalah 1 menit, dan backoffMode disetel ke EXPONENTIAL, maka waktu antara kegagalan dan percobaan ulang pertama adalah 1 menit, waktu antara percobaan ulang pertama dan kedua adalah 2 menit, dan waktu antara percobaan ulang kedua dan ketiga adalah 4 menit.

  • rollback

    Opsional, apakah akan melakukan roll back peluncuran yang gagal setelah semua upaya percobaan ulang habis.

  • [PHASE_NAME]

    Adalah nama fase tertentu yang ingin Anda roll back. Jika Anda menghilangkan toPhase, rollback akan ditetapkan secara default ke fase stable.

Membatalkan repairRolloutRule otomatisasi

Jika Anda menjalankan salah satu perintah berikut pada peluncuran, otomatisasi repairRolloutRule akan dibatalkan:

Contoh

Berikut adalah contoh konfigurasi otomatisasi dengan repairRolloutRule:

apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
  name: regular-repair/regular
description: repair regular rollouts
suspended: false
serviceAccount: (REDACTED)
selector:
  targets:
  - id: t1
rules:
- repairRolloutRule:
    name: "repair-rollout"
    repairPhases:
    - retry:
        attempts: 3
        wait: 1m
        backoffMode: LINEAR
    - rollback:
        destinationPhase: "stable"

Dalam otomatisasi ini, jika peluncuran gagal pada target yang diidentifikasi, peluncuran tersebut akan dicoba ulang hingga 3 kali, dengan jeda satu menit di antara upaya percobaan ulang. Jika semua upaya percobaan ulang gagal, rollback akan dimulai dengan membuat peluncuran baru untuk men-deploy rilis target yang berhasil terbaru ke target tersebut.

Langkah berikutnya