Anda dapat mengelola performa dan biaya instans Kumpulan DevOps Terkelola Anda dengan mengonfigurasi pengaturan penskalaan. Untuk informasi tentang harga dan performa, lihat Mengelola biaya dan performa.
Status agen
Anda dapat mengonfigurasi kumpulan sebagai:
-
Stateless: Berikan agen baru untuk setiap pekerjaan.
-
Stateful: Izinkan berbagi agen antara beberapa tugas.
Pengaturan default untuk kumpulan bersifat stateless, yang dapat Anda capai dengan menggunakan pengaturan agen Segar setiap kali. Dalam beberapa kasus, tim mungkin ingin memanfaatkan kembali agen untuk menggunakan kembali paket atau file yang dibuat selama pelaksanaan pipeline sebelumnya. Beban kerja build adalah skenario umum di mana tim ingin mempertahankan status dan menggunakan kembali agen. Anda dapat mencapai kumpulan stateful melalui Kumpulan DevOps Terkelola sambil menyeimbangkannya dengan praktik terbaik keamanan. Agen dapat digunakan kembali selama maksimal tujuh hari secara default, tetapi Anda dapat mengonfigurasinya untuk didaur ulang lebih cepat.
Catatan
Agen keamanan siber merekomendasikan agar pengguna menggunakan kumpulan stateless untuk mempertahankan diri dari serangan rantai pasokan. Gunakan pengaturan status agen Agen baru setiap saat.
Kumpulan stateless
Saat Anda mengonfigurasi agen stateless, agen baru akan diperoleh untuk setiap pekerjaan. Agen dibuang setelah pekerjaan selesai.
Untuk mempelajari selengkapnya tentang siklus hidup agen stateless dan bagaimana mereka digunakan di Azure Pipelines, lihat Siklus hidup agen dan potensi keterlambatan dalam alokasi.
Anda dapat mengonfigurasi agen dengan menggunakan agentProfile properti di sumber daya Kumpulan DevOps Terkelola. Contoh berikut ini menentukan agen Stateless.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless"
}
}
}
]
}
Anda dapat mengonfigurasi agen dengan menggunakan agent-profile parameter saat membuat atau memperbarui kumpulan.
Contoh berikut menspesifikasikan agen Stateless tanpa agen siaga.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Contoh berikut menunjukkan konten file agent-profile.json .
{
"Stateless": {}
}
Anda dapat mengonfigurasi agen dengan menggunakan agentProfile properti di sumber daya Kumpulan DevOps Terkelola. Contoh berikut menentukan Stateless agent.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
}
}
}
Ketika Anda mengatur status Agen ke Agen baru setiap kali, agen baru akan diperoleh untuk setiap pekerjaan. Agen dibuang setelah pekerjaan selesai.
Kumpulan stateful
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"maxAgentLifetime": "7.00:00:00",
"gracePeriodTimeSpan": "00:30:00",
"kind": "Stateful"
}
}
}
]
}
Anda dapat mengonfigurasi agen dengan menggunakan agent-profile parameter saat membuat atau memperbarui kumpulan.
Contoh berikut menentukan Stateful agen dengan masa pakai maksimum tujuh hari dan masa tenggang tiga puluh menit.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Contoh berikut menunjukkan konten agent-profile.json file.
{
"Stateful":
{
"maxAgentLifetime": "7.00:00:00",
"gracePeriodTimeSpan": "00:30:00"
}
}
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateful'
maxAgentLifetime: '7.00:00:00'
gracePeriodTimeSpan:'00:30:00'
}
}
}
Saat Anda mengaktifkan Agen yang sama dapat digunakan oleh beberapa build ( "kind": "stateful" pengaturan dalam templat sumber daya atau { "stateful": {...} } pengaturan di Azure CLI), agen di kumpulan bersifat stateful. Anda dapat mengonfigurasi kumpulan yang menyimpan status dengan menggunakan pengaturan berikut:
Masa aktif maksimum untuk agen siaga (maxAgentLifetime) mengonfigurasi durasi maksimum agen dalam pool dengan status dapat berjalan sebelum dimatikan dan dihapus. Format untuk Waktu maksimum untuk hidup untuk agen siaga adalah dd.hh:mm:ss. Nilai default Max time to live untuk agen siaga diatur ke durasi maksimum yang diizinkan selama tujuh hari (7.00:00:00).
Masa Tenggang (gracePeriodTimeSpan) mengatur jumlah waktu agen dalam pool yang memiliki status tetap menunggu pekerjaan baru sebelum dimatikan setelah semua pekerjaan saat ini dan dalam antrean selesai. Format untuk Masa Tenggang adalah dd.hh:mm:ss dan defaultnya bukan masa tenggang.
Penting
Jika sebuah pekerjaan berjalan ketika waktu maksimum hidup untuk agen siaga kedaluwarsa, agen tidak akan dimatikan sampai pekerjaan selesai, kecuali pekerjaan memakan waktu lebih dari dua hari untuk selesai. Pekerjaan individual di Kumpulan DevOps Terkelola dapat berlangsung maksimal dua hari, bahkan jika mereka berjalan pada agen siaga dengan lebih dari dua hari yang dikonfigurasi untuk Waktu maksimum hidup untuk agen siaga. Hubungi dukungan jika alur kerja Anda mengharuskan Anda menjalankan satu pekerjaan yang membutuhkan waktu lebih dari dua hari untuk menyelesaikannya.
Agen dalam kumpulan stateless dimatikan dan dibuang setelah setiap tugas. Agen dalam kumpulan yang memiliki status terus berjalan jika salah satu dari kondisi-kondisi berikut terpenuhi:
- Jika pekerjaan lain diantrekan ketika pekerjaan pertama selesai, Kumpulan DevOps Terkelola mengirimkan pekerjaan yang diantrekan ke agen yang menjalankan pekerjaan pertama alih-alih mematikannya.
- Jika ada masa tenggang yang dikonfigurasi untuk kumpulan, agen menunggu pekerjaan baru selama durasi yang ditentukan oleh masa tenggang sebelum dimatikan.
- Jika agen siaga diaktifkan, dan gambar agen memenuhi kriteria periode provisi aktif, agen terus berjalan dan menunggu pekerjaan.
Agen yang beroperasi dalam kumpulan stateful akan dimatikan dan dibuang jika berjalan terus menerus selama durasi yang ditentukan oleh Waktu hidup maksimum untuk agen siaga, bahkan jika semua kondisi sebelumnya terpenuhi. Misalnya, jika Waktu maksimum terbuka untuk agen siaga dikonfigurasi selama tiga hari, dan Mode Agen Siaga diatur ke Manual, All Week Scheme (Mesin tersedia 24/7), agen-agen akan dimulai ulang setelah tiga hari berturut-turut aktif.
Penting
Agen dalam kumpulan stateful masih dapat dimatikan dan dibuang setelah pekerjaan selesai jika tidak ada masa tenggang, tidak ada periode penyediaan aktif untuk agen siaga, dan tidak ada pekerjaan dalam antrean yang cocok dengan agen tersebut. Ketika agen dibuang, status apa pun hilang.
Masa tenggang memungkinkan cara paling hemat biaya untuk menjalankan kumpulan stateful pada pipeline dengan beban yang konsisten. Masa tenggang tidak memerlukan penggunaan mode agen standby untuk memastikan agen tetap online dan siap menerima tugas.
Mode agen siaga
Saat Anda membuat kumpulan, mode agen Siaga nonaktif secara default. Saat Mode Agen Siaga nonaktif, tidak ada agen siaga untuk segera ditetapkan ke pipeline Anda. Alur Anda mungkin harus menunggu dari beberapa saat hingga 15 menit agar agen disediakan sesuai permintaan. Untuk performa yang lebih baik, aktifkan mode agen Siaga dan konfigurasikan jadwal agen siaga yang menyediakan kapasitas untuk beban kerja Anda.
Saat Anda mengonfigurasi jadwal agen siaga, Kumpulan DevOps Terkelola secara berkala membandingkan jumlah agen yang disediakan dengan jumlah agen siaga yang Anda tentukan dalam skema provisi saat ini. Ini memulai agen-agen baru sesuai kebutuhan untuk mempertahankan jumlah agen siaga. Anda dapat melihat status dan jumlah agen saat ini di kumpulan Anda dengan menggunakan panel Agen .
Penting
Jumlah provisi dalam skema tidak boleh lebih besar dari nilai Agen maksimum yang Anda konfigurasikan di pengaturan Kumpulan.
Anda dapat mengonfigurasi mode agen siaga dengan menggunakan pengaturan berikut:
-
Nonaktif: Mode agen siaga nonaktif dan agen disediakan sesuai permintaan saat pekerjaan diantrekan.
-
Manual: Mengonfigurasi jadwal siaga manual.
-
Otomatis: Gunakan jadwal siaga otomatis berdasarkan riwayat penggunaan agen. Anda dapat mengonfigurasinya untuk biaya dan performa.
Anda dapat mengonfigurasi agen siaga dengan menggunakan bagian resourcePredictionsProfile di agentProfile properti. Atur "kind": "Manual" untuk mengonfigurasi mulai dari awal, skema hari kerja, atau skema sepanjang minggu, dan tentukan detail skema di bagian tersebut resourcePredictions . Untuk mengonfigurasi agen siaga otomatis, atur "kind": "Automatic". Nonaktifkan agen siaga dengan menghilangkan bagian ResourcePredictionsProfile . Lihat bagian berikut untuk detail tentang cara mengonfigurasi setiap jenis penskalaan.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {...}
}
}
}
]
}
Anda dapat mengonfigurasi agen dengan menggunakan agent-profile parameter saat membuat atau memperbarui kumpulan.
Anda dapat mengonfigurasi agen siaga dengan menggunakan bagian resourcePredictionsProfile dari parameter agent-profile.
"Manual": {} Gunakan pengaturan untuk mengonfigurasi mulai dari awal, skema hari kerja, atau skema sepanjang minggu, dan tentukan detail skema di bagian tersebutresourcePredictions. Untuk mengonfigurasi agen siaga otomatis, gunakan pengaturan "Automatic": {}. Lihat bagian berikut untuk detail tentang cara mengonfigurasi setiap jenis penskalaan.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Contoh berikut menunjukkan konten agent-profile.json file:
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {...}
}
Anda dapat mengonfigurasi agen siaga dengan menggunakan bagian resourcePredictionsProfile dari properti agentProfile.
"kind": "Manual" Gunakan pengaturan untuk mengonfigurasi mulai dari awal, skema hari kerja, atau skema sepanjang minggu, dan tentukan detail skema di bagian tersebutresourcePredictions. Untuk mengonfigurasi agen siaga otomatis, gunakan kind: 'Automatic' pengaturan . Nonaktifkan agen siaga dengan menghilangkan bagian ResourcePredictionsProfile . Lihat bagian berikut untuk detail tentang cara mengonfigurasi setiap jenis penskalaan.
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {...}
}
}
}
Buku Petunjuk
Mode manual adalah yang terbaik untuk tim yang mengetahui integrasi berkelanjutan dan pola penggunaan alur pengiriman berkelanjutan (CI/CD). Saat Anda menggunakan opsi manual, Anda perlu menentukan skema pra-provisi Anda. Anda menentukan skema Anda berdasarkan pemahaman Anda tentang agen apa di kumpulan yang kemungkinan besar akan digunakan dan berapa banyak agen yang kemungkinan akan digunakan. Anda menentukan jumlah penyediaan agen yang memenuhi permintaan yang diproyeksikan.
Anda dapat membuat jadwal provisi Anda sendiri atau memilih dari salah satu jadwal yang telah ditentukan sebelumnya. Anda dapat mengonfigurasi zona waktu yang akan digunakan untuk menentukan jadwal. Nilai default untuk Zona Waktu Pra-provisi adalah (UTC) Waktu Universal Terkoordinasi.
Anda dapat mengonfigurasi agen siaga manual dengan salah satu dari tiga cara berikut:
Setiap mulai cepat pra-provisi memiliki pengaturan umum berikut (selain pengaturan yang khusus untuk mulai cepat tersebut):
-
Zona Waktu Pra-provisi: Memungkinkan Anda mengonfigurasi zona waktu untuk periode waktu dalam skema pra-provisi Anda. Nilai default untuk Zona Waktu Pra-provisi adalah (UTC) Waktu Universal Terkoordinasi.
-
Persentase agen siaga: Mengonfigurasi persentase agen siaga yang Anda inginkan untuk setiap gambar. Anda dapat memasukkan
* untuk memastikan semua gambar disediakan secara merata, atau Anda dapat menentukan bilangan bulat dari 0 hingga 100 untuk mewakili persentase. Jika Anda menentukan persentase, total untuk semua gambar harus sama dengan 100. Jika Anda memiliki satu gambar, tentukan * atau 100. Saat Anda menggunakan templat Azure Resource Manager (templat ARM), Anda dapat mengonfigurasi pengaturan persentase agen Siaga di bagian tersebut images . Untuk informasi selengkapnya, lihat Mengonfigurasi gambar.
Anda dapat menentukan provisi agen siaga manual di bagian resourcePredictionsProfileagentProfile. Anda dapat mengonfigurasi detail di bagian tersebut resourcePredictions .
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
Tentukan zona waktu yang diinginkan untuk skema Anda dengan menggunakan timeZone properti . Nilai defaultnya adalah UTC. Untuk mengambil daftar nama zona waktu untuk properti ini, lihat Metode TimeZoneInfo.GetSystemTimeZones.
Anda dapat menentukan jadwal untuk agen siaga dengan menggunakan daysData daftar. Daftar daysData dapat memiliki satu atau tujuh item.
daysData Daftar dengan tujuh item dipetakan hingga hari dalam seminggu, dimulai dengan Hari Minggu. Masing-masing dari tujuh item ini dapat memiliki nol atau lebih "time": count entri, menentukan waktu dalam format 24 jam, dan jumlah agen siaga. Jumlah agen siaga yang ditentukan dipertahankan hingga entri berikutnya "time": count , yang dapat berada pada hari yang sama atau pada hari berikutnya.
daysData Daftar dengan satu item mendefinisikan skema Sepanjang Minggu, di mana entri tunggal "time": count sesuai dengan jumlah agen siaga selama sepanjang minggu.
Contoh berikut adalah skema agen siaga manual. Ini menggunakan nilai Eastern Standard Time dengan agen tunggal yang disediakan Senin hingga Jumat, dari pukul 09.00 (jumlah agen siaga 1) hingga pukul 17.00 (jumlah agen siaga 0).
{
"kind": "Stateless",
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{}
]
},
"resourcePredictionsProfile": {
"kind": "Manual"
}
}
Satu daysData item berisi kamus waktu dan jumlah agen siaga. Setiap "time" : count entri menentukan jumlah agen siaga yang akan dijadwalkan mulai dari waktu yang ditentukan, dalam format 24 jam. Entri berturut-turut "time" : count menentukan urutan jumlah agen terjadwal untuk hari itu.
"daysData": [
{}, # Schedule of standby agent count adjustments for Sunday
{ # Schedule of standby agent count adjustments for Monday
"09:00:00": 1, # Adjust standby agent count to 1
"17:00:00": 0 # Adjust standby agent count to 0
},
{ # Schedule of standby agent count adjustments for Tuesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Wednesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Thursday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Friday
"09:00:00": 1,
"17:00:00": 0
},
{} # Schedule of standby agent count adjustments for Saturday
]
Jumlah agen siaga tidak secara otomatis direset kembali ke nol pada akhir hari atau di akhir minggu. Menetapkan item kosong daysData tidak membuat agen siaga dinonaktifkan untuk hari itu. Item kosong daysData berarti tidak ada perubahan pada jadwal jumlah agen siaga untuk hari itu. Untuk mengatur agen siaga ke nol yang dimulai pada periode waktu tertentu, Anda harus secara eksplisit memberikan "time" : count entri dengan count dari 0.
Contoh
Untuk tidak membuat penyesuaian pada jumlah agen siaga yang ditentukan pada akhir hari sebelumnya (atau minggu jika Anda mengonfigurasi periode pertama dalam seminggu), tentukan daysData item dengan entri nol:
{}
Untuk menjadwalkan agen siaga tunggal untuk memulai dan berhenti di 09:00:0017:00:00 (dengan menggunakan zona waktu yang ditentukan oleh resourcePredictions properti), tentukan konfigurasi berikut:
{
"09:00:00": 1,
"17:00:00": 0
}
Untuk menjadwalkan agen siaga tunggal mulai dari tengah malam hingga 09:00:00, diikuti oleh 10 agen siaga hingga 17:00:00, tentukan konfigurasi berikut:
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Untuk menjadwalkan agen siaga agar tersedia mulai pada 09:00:00 hari yang ditentukan, dan berhenti pada 17:00:00 hari berikutnya, gunakan dua item berturut-turut daysData :
{
"09:00:00": 1
},
{
"17:00:00": 0
}
Anda dapat mengonfigurasi agen dengan menggunakan agent-profile parameter saat membuat atau memperbarui kumpulan.
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
Contoh berikut menunjukkan konten file agent-profile.json . Anda dapat menentukan provisi agen siaga manual di bagian resourcePredictionsProfileagent-profile parameter. Konfigurasikan detail di bagian resourcePredictions :
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
Tentukan zona waktu untuk skema Anda dengan menggunakan timeZone properti . Nilai defaultnya adalah UTC. Untuk mengambil daftar nama zona waktu untuk properti ini, lihat Metode TimeZoneInfo.GetSystemTimeZones.
Daftar daysData menentukan jadwal untuk agen siaga. Daftar daysData dapat memiliki satu atau tujuh item.
daysData Daftar dengan tujuh item dipetakan hingga hari dalam seminggu, dimulai dengan Hari Minggu. Masing-masing dari tujuh item ini dapat memiliki nol atau lebih "time": count entri, menentukan waktu dalam format 24 jam, dan jumlah agen siaga. Jumlah agen siaga yang ditentukan dipertahankan hingga entri berikutnya "time": count , yang dapat berada pada hari yang sama atau pada hari berikutnya.
daysData Daftar dengan satu item menentukan skema sepanjang minggu, di mana entri tunggal "time": count sesuai dengan jumlah agen siaga selama seminggu penuh.
Contoh berikut adalah skema agen siaga manual. Skema ini menggunakan nilai Eastern Standard Time dengan satu agen yang disediakan senin hingga Jumat, dari pukul 09.00 (jumlah 1agen siaga ) hingga pukul 17.00 (jumlah 0agen siaga ):
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{}
]
}
}
Satu daysData item berisi kamus waktu dan jumlah agen siaga. Setiap "time" : count entri menentukan jumlah agen siaga yang akan dijadwalkan mulai dari waktu yang ditentukan, dalam format 24 jam. Entri berturut-turut "time" : count menentukan urutan jumlah agen terjadwal untuk hari itu.
"daysData": [
{}, # Schedule of standby agent count adjustments for Sunday
{ # Schedule of standby agent count adjustments for Monday
"09:00:00": 1, # Adjust standby agent count to 1
"17:00:00": 0 # Adjust standby agent count to 0
},
{ # Schedule of standby agent count adjustments for Tuesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Wednesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Thursday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Friday
"09:00:00": 1,
"17:00:00": 0
},
{} # Schedule of standby agent count adjustments for Saturday
]
Jumlah agen siaga tidak secara otomatis direset kembali ke nol pada akhir hari atau di akhir minggu. Menentukan item daysData kosong tidak menonaktifkan agen cadangan untuk hari itu. Item kosong daysData berarti tidak ada perubahan pada jadwal jumlah agen siaga untuk hari itu. Untuk mengatur agen siaga ke nol yang dimulai pada periode waktu tertentu, Anda harus secara eksplisit memberikan "time" : count entri dengan count dari 0.
Contoh
Jika Anda tidak ingin menyesuaikan jumlah agen siaga yang ditentukan pada akhir hari sebelumnya (atau minggu jika Anda mengonfigurasi periode pertama dalam seminggu), tentukan daysData item dengan entri nol:
{}
Untuk menjadwalkan agen siaga tunggal untuk memulai dan berhenti di 09:00:0017:00:00 (dengan menggunakan zona waktu yang Anda tentukan di resourcePredictions properti), tentukan konfigurasi berikut:
{
"09:00:00": 1,
"17:00:00": 0
}
Untuk menjadwalkan agen siaga tunggal mulai dari tengah malam hingga 09:00:00, diikuti oleh 10 agen siaga hingga 17:00:00, tentukan konfigurasi berikut:
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
Untuk menjadwalkan agen siaga agar tersedia mulai pada 09:00:00 hari yang ditentukan, dan berhenti pada 17:00:00 hari berikutnya, gunakan dua item berturut-turut daysData :
{
"09:00:00": 1
},
{
"17:00:00": 0
}
Anda dapat menentukan provisi agen siaga manual di bagian resourcePredictionsProfileagentProfile. Anda dapat mengonfigurasi detail di bagian resourcePredictions :
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {
timeZone: 'Eastern Standard Time'
daysData: [
{}
{
'00:00:00': 1
'04:00:00': 0
}
{}
{}
{}
{}
{}
]
}
}
}
}
Tentukan zona waktu yang diinginkan untuk skema Anda dengan menggunakan timeZone properti . Nilai defaultnya adalah UTC. Untuk mengambil daftar nama zona waktu untuk properti ini, lihat Metode TimeZoneInfo.GetSystemTimeZones.
Daftar daysData mendefinisikan jadwal untuk agen cadangan. Daftar daysData dapat memiliki satu atau tujuh item.
daysData Daftar dengan tujuh item dipetakan hingga hari dalam seminggu, dimulai dengan Hari Minggu. Masing-masing dari tujuh item ini dapat memiliki nol atau lebih 'time': count entri, menentukan waktu dalam format 24 jam, dan jumlah agen siaga. Jumlah agen siaga yang ditentukan dipertahankan hingga entri berikutnya 'time': count , yang dapat berada pada hari yang sama atau pada hari berikutnya.
daysData Daftar dengan satu item menentukan skema sepanjang minggu, di mana entri tunggal 'time': count sesuai dengan jumlah agen siaga selama seminggu penuh.
Contoh berikut adalah skema agen siaga manual yang menggunakan nilai Eastern Standard Time, dengan agen tunggal yang disediakan Senin hingga Jumat, dari pukul 09.00 (jumlah 1agen siaga) hingga pukul 17.00 (jumlah 0agen siaga ):
{
kind: 'Stateless'
resourcePredictions: {
timeZone: 'Eastern Standard Time'
daysData: [
{}
{
'09:00:00': 1
'17:00:00': 0
}
{
'09:00:00': 1
'17:00:00': 0
}
{
'09:00:00': 1
'17:00:00': 0
}
{
'09:00:00': 1
'17:00:00': 0
}
{
'09:00:00': 1
'17:00:00': 0
}
{}
]
}
resourcePredictionsProfile: {
kind: 'Manual'
}
}
Satu daysData item berisi kamus waktu dan jumlah agen siaga. Setiap 'time' : count entri menentukan jumlah agen siaga yang akan dijadwalkan mulai dari waktu yang ditentukan, dalam format 24 jam. Entri berturut-turut 'time' : count menentukan urutan jumlah agen terjadwal untuk hari itu.
daysData: [
{} // Schedule of standby agent count adjustments for Sunday
{ // Schedule of standby agent count adjustments for Monday
'09:00:00': 1 // Adjust standby agent count to 1
'17:00:00': 0 // Adjust standby agent count to 0
}
{ // Schedule of standby agent count adjustments for Tuesday
'09:00:00': 1
'17:00:00': 0
}
{ // Schedule of standby agent count adjustments for Wednesday
'09:00:00': 1
'17:00:00': 0
}
{ // Schedule of standby agent count adjustments for Thursday
'09:00:00': 1
'17:00:00': 0
}
{ // Schedule of standby agent count adjustments for Friday
'09:00:00': 1
'17:00:00': 0
}
{} // Schedule of standby agent count adjustments for Saturday
]
Jumlah agen siaga tidak secara otomatis direset kembali ke nol pada akhir hari atau di akhir minggu, dan menentukan item kosong daysData tidak menonaktifkan agen siaga untuk hari itu. Item kosong daysData berarti tidak ada perubahan pada jadwal jumlah agen siaga untuk hari itu. Untuk mengatur agen siaga ke nol yang dimulai pada periode waktu tertentu, Anda harus secara eksplisit memberikan "time" : count entri dengan count dari 0.
Contoh
Untuk tidak membuat penyesuaian pada jumlah agen siaga yang ditentukan pada akhir hari sebelumnya (atau minggu jika Anda mengonfigurasi periode pertama dalam seminggu), tentukan daysData item dengan entri nol:
{}
Untuk menjadwalkan agen siaga tunggal untuk memulai dan berhenti di 09:00:0017:00:00 (dengan menggunakan zona waktu yang ditentukan dalam resourcePredictions properti), tentukan konfigurasi berikut:
{
'09:00:00': 1
'17:00:00': 0
}
Untuk menjadwalkan agen siaga tunggal mulai dari tengah malam hingga 09:00:00, diikuti oleh 10 agen siaga hingga 17:00:00, tentukan konfigurasi berikut:
{
'00:00:00': 1
'09:00:00': 10
'17:00:00': 0
}
Untuk menjadwalkan agen siaga agar tersedia mulai pada 09:00:00 hari yang ditentukan, dan berhenti pada 17:00:00 hari berikutnya, gunakan dua item berturut-turut daysData :
{
'09:00:00': 1
}
{
'17:00:00': 0
}
Mulai dari awal
Jika Anda memilih untuk memulai dari awal, Anda dapat menambahkan daftar periode provisi sebagai skema provisi Anda. Setiap periode provisi terdiri dari hari mulai, hari akhir, zona waktu, waktu mulai, waktu akhir, dan jumlah. Periode provisi tidak dapat saling tumpang tindih.
| Properti |
Deskripsi |
|
Beberapa Hari |
Saat Anda memilih opsi ini, Anda dapat mengonfigurasi Start Day dan End Day untuk skema provisi Anda. |
|
Hingga periode berikutnya |
Saat Anda memilih opsi ini, periode provisi berjalan dari nilai Waktu Mulai hingga awal periode provisi berikutnya. |
|
Hari Mulai |
Hari dimulainya periode provisi. |
|
Hari Akhir |
Hari berakhirnya periode provisi. Diperlukan jika Multi-Hari dipilih. |
|
Waktu Mulai |
Waktu ketika periode provisi dimulai. |
|
Waktu Berakhir |
Waktu ketika periode provisi berakhir. Diperlukan, kecuali jika Sampai periode berikutnya dipilih. |
|
Penghitung |
Jumlah agen siaga yang akan disediakan. Angka ini harus lebih besar dari nol, dan tidak boleh lebih besar dari nilai Agen maksimum dalam pengaturan Kumpulan. |
Setelah membuat periode provisi, Anda dapat menghapus atau mengedit periode dari daftar Skema pra-provisi .
Contoh berikut menunjukkan cara mengonfigurasi skema manual dengan satu agen yang disediakan pada Senin pagi dari pukul 12.00 hingga 05.00 EST.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {
timeZone: 'Eastern Standard Time'
daysData: [
{}
{
'00:00:00': 1
'04:00:00': 0
}
{}
{}
{}
{}
{}
]
}
}
}
}
Skema hari kerja
Jika Anda memilih skema hari kerja, Anda dapat menentukan waktu mulai dan waktu akhir, di mana jumlah agen siaga yang ditentukan siaga setiap hari kerja.
| Properti |
Deskripsi |
|
Waktu Mulai |
Waktu ketika periode provisi dimulai. |
|
Waktu Berakhir |
Waktu ketika periode provisi berakhir. |
|
Jumlah Penyediaan |
Jumlah agen siaga yang akan disediakan. Angka ini harus lebih besar dari nol, dan tidak boleh lebih besar dari nilai Agen maksimum yang dikonfigurasi dalam Pengaturan Pool. |
Contoh berikut mengonfigurasi empat agen yang akan digunakan selama jam kerja, dan tidak ada agen di luar jam kerja, serta akhir pekan, menggunakan Waktu Standar Timur (UTC-5).
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{}
]
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{}
]
}
}
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {
timeZone: 'Eastern Standard Time'
daysData: [
{}
{
'09:00:00': 4
'17:00:00': 0
}
{
'09:00:00': 4
'17:00:00': 0
}
{
'09:00:00': 4
'17:00:00': 0
}
{
'09:00:00': 4
'17:00:00': 0
}
{
'09:00:00': 4
'17:00:00': 0
}
{}
]
}
}
}
}
Skema sepanjang minggu
Jika Anda memilih skema sepanjang minggu, Anda dapat menentukan jumlah agen yang ingin Anda sediakan sepanjang waktu.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{
"00:00:00": 1
}
]
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Manual": {}
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{
"00:00:00": 1
}
]
}
}
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Manual'
}
resourcePredictions: {
timeZone: 'Eastern Standard Time'
daysData: [
{
'00:00:00': 1
}
]
}
}
}
}
Otomatis
Jika Anda tidak mengetahui pola penggunaan dan ingin mengandalkan prakiraan otomatis berdasarkan data sebelumnya, pilih Otomatis. Anda dapat menyeimbangkan antara biaya dan performa agen dengan menggunakan penggeser dengan lima opsi berikut. Kolam DevOps yang Dikelola menjalankan kueri atas data historis Anda selama tiga minggu terakhir (jika tersedia). Ini mengatur sesi yang diantrekan dari kumpulan ke dalam periode lima menit dan menetapkan persentil tertentu (untuk menghindari fluktuasi mendadak) pada setiap jam.
-
Paling hemat biaya (
MostCostEffective): persentil ke-10.
-
Lebih hemat biaya (
MoreCostEffective): Persentil ke-25.
-
Seimbang (default) (
Balanced): persentil ke-50.
-
Kinerja lebih tinggi (
MorePerformance): Persentil ke-75.
-
Performa terbaik (
BestPerformance): Persentil ke-90.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"predictionPreference": "Balanced",
"kind": "Automatic"
}
}
}
}
]
}
{
"Stateless": {},
"resourcePredictionsProfile": {
"Automatic": {
"predictionPreference": "Balanced"
}
}
}
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
agentProfile: {
kind: 'Stateless'
resourcePredictionsProfile: {
kind: 'Automatic'
predictionPreference: 'Balanced'
}
}
}
}
Siklus hidup agen dan potensi keterlambatan alokasi
Saat Anda mengaktifkan agen siaga dengan menggunakan skema stateless , Anda perlu menginstal dan mengonfigurasi agen Azure Pipelines sebelum Anda beralih dari status siap ke status yang dialokasikan dan menjalankan alur.
Ketika Kumpulan DevOps Terkelola menyediakan agen baru, ia mencoba mengunduh agen Azure Pipelines terbaru sehingga sudah diunduh pada agen siaga sebelum mereka beralih ke status siap. Startup, koneksi, dan memulai pekerjaan dapat memakan waktu dari 10 detik hingga satu menit tergantung pada kecepatan SKU kumpulan, gambar yang digunakan, dan beban jaringan. Selain itu, ketika Anda menentukan pengaturan tertentu dalam pekerjaan pipa, ini dapat menyebabkan pengunduhan ulang dan menjalankan agen yang berbeda. Regresi dan pemutaran kembali agen juga dapat menyebabkan pengunduhan ulang agen.
Agen siap selalu memiliki potensi penundaan karena Kumpulan DevOps Terkelola menggunakan agen ini dengan cara "ephemeral", yang berarti kita memulai dan menjalankan agen tugas satu kali per pekerjaan. Jika Anda melihat keterlambatan agen yang siap mengambil pekerjaan dari Azure DevOps, pertimbangkan pertanyaan berikut:
- Apakah Anda memiliki agen yang siap? Masalah yang paling umum adalah kesalahpahaman tentang kapan agen harus diprovisikan sebelumnya. Mesin harus dijalankan dari nol ketika kondisi berikut terpenuhi:
- Jumlah pekerjaan yang diantrekan lebih besar dari jumlah agen siaga pada kumpulan.
- Pekerjaan diantrekan di luar jadwal pra-provisi.
- Jumlah agen siaga diatur menjadi kosong.
- Apakah Anda mengonfigurasi agen siaga dengan benar yang memiliki beberapa gambar? Jika Anda tidak menentukan gambar mana yang akan digunakan dalam pipeline Anda dengan menggunakan perintah ImageOverride, pekerjaan akan menargetkan gambar pertama. Bergantung pada pengaturan penskalan Anda, Anda mungkin tidak memiliki agen sebanyak yang Anda harapkan, karena beberapa dialokasikan untuk gambar lain.
- Apakah Anda menggunakan
ImageVersionOverride permintaan di dalam pipeline Anda? Saat Anda menggunakan ImageVersionOverride perintah untuk menentukan versi gambar yang berbeda dari yang dikonfigurasi di pengaturan kumpulan Anda, setiap agen-agen memulai sesuai kebutuhan dengan versi gambar yang ditentukan. Agen siaga disiapkan dengan menggunakan versi citra yang ditentukan dalam konfigurasi kumpulan Anda. Jika Anda menggunakan ImageVersionOverride, setiap agen siaga tidak akan cocok dengan versi tersebut dan agen baru dimulai.
- Apakah pengaturan proksi, jaringan virtual, atau firewall memperlambat kumpulan Anda? Potensi perlambatan dari pengaturan jaringan apa pun menghasilkan agen yang membutuhkan waktu lebih lama untuk memulai agen dan menyambungkannya ke Azure DevOps.
- Apakah Anda mengambil alih versi agen? Secara default, Kumpulan DevOps Terkelola berjalan pada versi agen tugas Azure DevOps terbaru. Pengaturan dalam pipeline YAML (seperti
Agent.Version permintaan) dan pengaturan organisasi Azure DevOps dapat memaksa pipeline untuk menggunakan versi agen tugas yang lebih lama, yang memerlukan pengunduhan ulang setelah komputer dialokasikan.
Konten terkait