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)
- Posisi pertama adalah menit (
[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 dalamselector.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
ataustable
. 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 adalah20160m
(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 propertiselector.targets
di konfigurasi otomatisasi ini. Ini adalah nilai default jika Anda menghilangkan nilai daridestinationTargetId
.[TO_PHASE]
Adalah nama fase yang ingin Anda promosikan, misalnya
canary-25
ataustable
. 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 adalah20160m
(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 inim
) wajib diisi.Jika
mode
adalahlinear
, interval ini sama untuk setiap percobaan ulang. Jikamode
adalahexponential
, interval akan bertambah setiap kali. (Lihatmode
untuk deskripsi lebih lanjut.)backoffMode
LINEAR
atauEXPONENTIAL
, yang menunjukkan apakah akan menambah waktu di antara percobaan ulang atau tidak. JikaLINEAR
, waktu antara percobaan ulang konstan, yaituWAIT_TIME
. JikaEXPONENTIAL
, waktu antara upaya percobaan ulang akan berlipat ganda dengan setiap upaya percobaan ulang yang berhasil. Default-nya adalahLINEAR
.Misalnya, jika
WAIT_TIME
adalah 1 menit, danbackoffMode
disetel keEXPONENTIAL
, 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 fasestable
.
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
Coba panduan memulai cepat: Mengotomatiskan pembuatan rilis dan peningkatan peluncuran.
Pelajari lebih lanjut otomatisasi deployment di Cloud Deploy.