Dokumen ini menjelaskan aturan otomatisasi, yang merupakan tindakan yang dapat dilakukan di pipeline pengiriman Anda secara otomatis. Misalnya, Anda dapat mengonfigurasi pipeline pengiriman sehingga promosi ke target tertentu terjadi secara otomatis, dalam situasi yang tepat.
Anda hanya dapat menggunakan aturan otomatisasi yang disertakan dalam Cloud Deploy. Aturan otomatisasi yang tersedia tercantum dalam dokumen ini.
Aturan otomatisasi yang tersedia
Aturan otomatisasi berikut tersedia di Cloud Deploy:
Aturan | Deskripsi |
---|---|
promoteReleaseRule
|
Otomatis mempromosikan rilis ke target yang ditunjukkan setelah berhasil
peluncuran di target sebelumnya dalam progres. |
timedPromoteReleaseRule
|
Mempromosikan secara otomatis dari satu target ke target berikutnya
berdasarkan jadwal cron. |
advanceRolloutRule
|
Otomatis melanjutkan peluncuran dari
fase ke fase berikutnya. |
repairRolloutRule
|
Mencoba ulang tugas yang gagal secara otomatis dalam peluncuran
jumlah yang ditentukan, dan melakukan rollback jika semua percobaan ulang gagal. |
Mengonfigurasi aturan otomatisasi
Konfigurasi untuk setiap aturan otomatisasi bergantung pada aturan tertentu. Bagian ini menjelaskan konfigurasi yang sama untuk semua aturan, serta cara mengonfigurasi setiap aturan yang tersedia.
Setiap aturan otomatisasi 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 promoteReleaseRule
Aturan promoteReleaseRule
mempromosikan rilis Anda setelah peluncuran berhasil ke
target. Misalnya, jika memiliki tiga target, Anda dapat menyiapkan aturan ini sehingga
saat rilis berhasil di-deploy ke target pertama, rilis tersebut
akan otomatis dipromosikan ke target kedua.
Saat mengonfigurasi otomatisasi promoteReleaseRule
, Anda dapat menentukan
target untuk dipromosikan ke (destinationTargetId
) atau @next
. Jika peluncuran
berhasil diselesaikan di target yang ditentukan dalam definisi Automation
, rilis kemudian dipromosikan ke target yang ditentukan dalam destinationTargetId
,
tunduk pada interval waktu wait
.
Anda juga dapat mempromosikan rilis ke fase tertentu dalam target yang diinginkan, menggunakan
properti destinationPhase
. Stanza rules
yang ditampilkan di sini berada di dalam
definisi otomatisasi Anda.
rules:
- promoteReleaseRule:
name: "[RULE_NAME]"
wait: [WAIT_TIME]
destinationTargetId: "[TO_TARGET]"
destinationPhase: "[TO_PHASE]"
Dengan keterangan:
[RULE_NAME]
Nama yang ingin Anda berikan untuk aturan ini. Nama ini harus unik dalam resource otomatisasi.
[WAIT_TIME]
Adalah jumlah waktu, dalam menit, yang harus ditunggu setelah rilis siap untuk promosi sebelum dipromosikan. Misalnya,
1m
.m
wajib diisi.Nilai defaultnya adalah
0
, atau tidak ada waktu tunggu. Maksimalnya adalah20160m
(atau 14 hari).[TO_TARGET]
Adalah
targetId
target yang akan dipromosikan.Ini juga dapat berupa
@next
, yang mempromosikan rilis secara otomatis ke target berikutnya setelah target ditentukan dalam propertiselector.targets
di konfigurasi otomatisasi ini. Ini adalah 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 dalam target.
Mengonfigurasi aturan otomatisasi timedPromoteReleaseRule
Aturan timedPromoteReleaseRule
memungkinkan Anda menjadwalkan kapan harus mempromosikan rilis
dari target yang dipilih ke target berikutnya dalam progres, atau ke
target yang ditentukan. Saat mengonfigurasi otomatisasi timedPromoteReleaseRule
, Anda menentukan kapan harus mempromosikan rilis, berdasarkan jadwal cron.
rules:
- timedPromoteReleaseRule:
name: "[RULE_NAME]"
schedule: "[CRON]"
timeZone: "[TIME_ZONE]"
destinationTargetId: "[TO_TARGET]"
destinationPhase: "[TO_PHASE]"
Dengan keterangan:
[RULE_NAME]
Nama yang ingin Anda berikan untuk aturan ini. Nama ini harus unik dalam pipeline pengiriman.
[CRON]
Adalah jadwal cron yang menentukan kapan rilis akan 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 (
0
-6
, Minggu hingga Sabtu)
Misalnya, jika aturan promosi berjangka waktu Anda menyertakan jadwal berikut:
0 9 * * 1
, rilis Anda akan 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 diaktifkan setiap jam ketiga)
- Posisi pertama adalah menit (
[TIME_ZONE]
Zona waktu yang ingin Anda gunakan untuk menjadwalkan promosi, dalam format IANA.
[TO_TARGET]
Apakah
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. Ini bersifat opsional; defaultnya adalah@next
.[TO_PHASE]
Adalah nama fase fase yang ingin Anda promosikan, misalnya
canary-25
ataustable
. Properti ini bersifat opsional; jika Anda menghapusnya, rilis akan dipromosikan ke fase pertama dalam target.
Mengonfigurasi aturan otomatisasi advanceRolloutRule
advanceRolloutRule
akan memajukan peluncuran Anda secara otomatis setelah menyelesaikan satu fase, ke fase berikutnya. Aturan otomatisasi ini berguna untuk deployment canary. Misalnya, jika Anda memiliki strategi deployment canary yang dikonfigurasi di target, dengan fase 25%
, 50%
, dan stable
, Anda dapat mengonfigurasi aturan otomatisasi yang otomatis memajukan fase ke stable
setelah fase 50%
selesai.
Saat mengonfigurasi otomatisasi advanceRolloutRule
, Anda mengidentifikasi fase yang akan
diajukan (sourcePhase
). Stanza rules
yang ditampilkan di sini berada di dalam
definisi otomatisasi Anda.
rules:
- advanceRolloutRule:
name: "[RULE_NAME]"
sourcePhases: ["[START_PHASE]", "[START_PHASE]"...]
wait: [WAIT_TIME]
Dengan keterangan:
[RULE_NAME]
Nama yang ingin Anda berikan untuk aturan ini. Nama ini harus unik dalam pipeline pengiriman.
[WAIT_TIME]
Adalah jumlah waktu, dalam menit, yang harus ditunggu untuk melanjutkan peluncuran setelah peluncuran siap. Misalnya,
1m
.m
wajib diisi.Nilai defaultnya adalah
0
, atau tidak ada waktu tunggu. Maksimalnya adalah20160m
(atau 14 hari).["[START_PHASE]", "[START_PHASE]"...]
Fase atau fase tempat peluncuran otomatis dilanjutkan. Artinya, jika salah satu fase yang tercantum berhasil diselesaikan, 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 menghapus
sourcePhases
, semua fase dalam peluncuran akan otomatis maju.
Mengonfigurasi aturan otomatisasi repairRolloutRule
Aturan repairRolloutRule
mencoba ulang peluncuran yang gagal sejumlah
kali yang ditentukan. Jika jumlah percobaan ulang tersebut habis, aturan ini dapat otomatis
mencabut target ke rilis terakhir yang berhasil.
Saat mengonfigurasi otomatisasi repairRolloutRule
, Anda dapat menentukan berapa kali
untuk mencoba ulang peluncuran, dan waktu tunggu di antara percobaan ulang. Anda juga dapat mengonfigurasi fase atau tugas tertentu, atau keduanya, untuk dicoba ulang. Jika setiap upaya percobaan ulang gagal, peluncuran akan gagal. Jika percobaan ulang berhasil, otomatisasi akan berhenti dan
peluncuran akan berhasil.
Secara opsional, Anda dapat mengonfigurasi otomatisasi untuk melakukan rollback ke rilis terakhir yang berhasil di target. Percobaan ulang juga bersifat opsional, tetapi Anda harus memiliki beberapa percobaan ulang atau rollback, atau keduanya.
Stanza rules
yang ditampilkan di sini berada di 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 keterangan:
[RULE_NAME]
Nama yang ingin Anda berikan untuk aturan ini. Nama ini harus unik dalam pipeline pengiriman.
[PHASES_TO_REPAIR]
Fase peluncuran yang akan dicoba ulang. Ini bersifat opsional, dan setelan defaultnya adalah semua fase dalam peluncuran.
[JOBS_TO_REPAIR]
Apakah tugas atau tugas yang akan dicoba ulang. Ini bersifat opsional, dan default-nya adalah semua tugas.
[NUMBER_OF_ATTEMPTS]
Opsional, frekuensi untuk mencoba kembali peluncuran sebelum menganggapnya gagal.
[WAIT_TIME]
Adalah jumlah waktu yang harus ditunggu di antara percobaan ulang. Misalnya,
1m
untuk interval satu menit. Unit waktu (m
dalam hal ini) wajib diisi.Jika
mode
adalahlinear
, interval ini sama untuk setiap percobaan ulang. Jikamode
adalahexponential
, interval akan meningkat setiap kali. (Lihatmode
untuk mengetahui deskripsi lebih lanjut.)backoffMode
LINEAR
atauEXPONENTIAL
, yang menunjukkan apakah akan meningkatkan waktu antara penghentian atau tidak. JikaLINEAR
, waktu antara percobaan ulang bersifat konstan, padaWAIT_TIME
. JikaEXPONENTIAL
, waktu di antara percobaan ulang akan berlipat ganda dengan setiap percobaan ulang berturut-turut. Default-nya adalahLINEAR
.Misalnya, jika
WAIT_TIME
adalah 1m, danbackoffMode
ditetapkan 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 rollback peluncuran yang gagal atau tidak setelah semua upaya percobaan ulang habis.
[PHASE_NAME]
Adalah nama fase tertentu yang ingin Anda rollback. Jika Anda menghapus
toPhase
, rollback akan ditetapkan secara default ke fasestable
.
Membatalkan operasi otomatisasi repairRolloutRule
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 waktu tunggu satu menit di antara upaya percobaan ulang. Jika semua upaya percobaan ulang gagal, rollback dimulai dengan membuat peluncuran baru untuk men-deploy rilis terbaru target yang berhasil ke target tersebut.
Langkah selanjutnya
Coba panduan memulai: Mengotomatiskan pembuatan rilis dan progres peluncuran.
Pelajari lebih lanjut otomatisasi deployment di Cloud Deploy.