Bagikan melalui


Mengonfigurasi jadwal untuk alur

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Pipelines menyediakan beberapa jenis pemicu untuk mengonfigurasi bagaimana alur Anda dimulai.

  • Pemicu terjadwal memulai alur Anda berdasarkan jadwal, seperti build malam hari. Artikel ini menyediakan panduan tentang menggunakan pemicu terjadwal untuk menjalankan alur Anda berdasarkan jadwal.
  • Pemicu berbasis peristiwa memulai alur Anda sebagai respons terhadap peristiwa, seperti membuat permintaan pull atau mendorong ke cabang. Untuk informasi tentang menggunakan pemicu berbasis peristiwa, lihat Pemicu di Azure Pipelines.

Anda dapat menggabungkan pemicu terjadwal dan berbasis peristiwa di alur Anda, misalnya untuk memvalidasi build setiap kali pendorongan dibuat (pemicu CI), saat permintaan pull dibuat (pemicu PR), dan build malam hari (Pemicu terjadwal). Jika Anda ingin membuat alur hanya sesuai jadwal, dan bukan sebagai respons terhadap pemicu berbasis peristiwa, pastikan bahwa alur Anda tidak mengaktifkan pemicu lain. Misalnya, alur YAML di repositori GitHub memiliki pemicu CI dan pemicu PR yang diaktifkan secara default. Untuk informasi tentang menonaktifkan pemicu default, lihat Pemicu di Azure Pipelines dan navigasi ke bagian yang mencakup jenis repositori Anda.

Pemicu terjadwal

Penting

Pemicu terjadwal yang ditentukan menggunakan antarmuka pengguna pengaturan alur lebih diutamakan daripada pemicu terjadwal YAML.

Jika alur YAML Anda memiliki pemicu terjadwal YAML dan pemicu terjadwal yang ditentukan antarmuka pengguna, hanya pemicu terjadwal yang ditentukan antarmuka pengguna yang aka dijalankan. Untuk menjalankan pemicu terjadwal yang ditentukan YAML di alur YAML, Anda harus menghapus pemicu terjadwal yang ditentukan di antarmuka pengguna pengaturan alur. Setelah semua pemicu terjadwal UI dihapus, pendorongan harus dilakukan agar pemicu terjadwal YAML mulai dievaluasi.

Untuk menghapus pemicu terjadwal UI dari alur YAML, lihat Pengaturan UI mengambil alih pemicu terjadwal YAML.

Pemicu terjadwal mengonfigurasi alur untuk berjalan pada jadwal yang ditentukan menggunakan sintaks cron.

schedules:
- cron: string # cron syntax defining a schedule
  displayName: string # friendly name given to a specific schedule
  branches:
    include: [ string ] # which branches the schedule applies to
    exclude: [ string ] # which branches to exclude from the schedule
  always: boolean # whether to always run the pipeline or only if there have been source code changes since the last successful scheduled run. The default is false.
schedules:
- cron: string # cron syntax defining a schedule
  displayName: string # friendly name given to a specific schedule
  branches:
    include: [ string ] # which branches the schedule applies to
    exclude: [ string ] # which branches to exclude from the schedule
  always: boolean # whether to always run the pipeline or only if there have been source code changes since the last successful scheduled run. The default is false.
  batch: boolean # Whether to run the pipeline if the previously scheduled run is in-progress; the default is false.
  # batch is available in Azure DevOps Server 2022.1 and higher

Alur terjadwal di YAML memiliki batasan berikut.

  • Zona waktu untuk jadwal cron adalah UTC.
  • Jika Anda menentukan exclude klausa tanpa include klausul untuk branches, klausul tersebut setara dengan menentukan * dalam include klausa.
  • Anda tidak dapat menggunakan variabel alur saat menentukan jadwal.
  • Jika Anda menggunakan templat dalam file YAML Anda, maka jadwal harus ditentukan dalam file YAML utama dan bukan dalam file templat.

Pertimbangan cabang untuk pemicu terjadwal

Pemicu terjadwal dievaluasi untuk cabang saat peristiwa berikut terjadi.

  • Alur dibuat.
  • File YAML alur diperbarui, baik dari pendorongan, atau dengan mengeditnya di editor alur.
  • Jalur file YAML alur diperbarui untuk mereferensikan file YAML yang berbeda. Perubahan ini hanya memperbarui cabang default, dan oleh karena itu hanya mengambil jadwal dalam file YAML yang diperbarui untuk cabang default. Jika ada cabang lain yang kemudian menggabungkan cabang default, misalnya git pull origin main, pemicu terjadwal dari file YAML yang baru direferensikan dievaluasi untuk cabang tersebut.
  • Cabang baru dibuat.

Setelah salah satu peristiwa ini terjadi di cabang, setiap eksekusi terjadwal untuk cabang tersebut ditambahkan, jika cabang tersebut cocok dengan filter cabang untuk pemicu terjadwal yang terkandung dalam file YAML di cabang tersebut.

Penting

Eksekusi terjadwal untuk cabang ditambahkan hanya jika cabang cocok dengan filter cabang untuk pemicu terjadwal dalam file YAML di cabang tertentu.

Misalnya, alur dibuat dengan jadwal berikut, dan versi file YAML ini diperiksa ke main cabang. Jadwal ini membangun main cabang setiap hari.

# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

Selanjutnya, cabang baru dibuat berdasarkan main, bernama new-feature. Pemicu terjadwal dari file YAML di cabang baru dibaca, dan karena tidak ada kecocokan untuk new-feature cabang, tidak ada perubahan yang dilakukan pada build terjadwal, dan new-feature cabang tidak dibangun menggunakan pemicu terjadwal.

Jika new-feature ditambahkan ke branches daftar dan perubahan ini didorong ke new-feature cabang, file YAML dibaca, dan karena new-feature sekarang berada dalam daftar cabang, build terjadwal ditambahkan untuk new-feature cabang.

# YAML file in the new-feature-branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
    - new-feature

Sekarang pertimbangkan bahwa cabang bernama dibuat berdasarkan main, dan kemudian release ditambahkan ke filter cabang dalam file YAML di main cabang, tetapi tidak di cabang yang baru dibuatrelease.release

# YAML file in the release branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

# YAML file in the main branch with release added to the branches list
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
    - release

Karena release ditambahkan ke filter cabang di main cabang, tetapi tidak ke filter cabang di release cabang, release cabang tidak akan dibangun pada jadwal tersebut. Hanya ketika release cabang ditambahkan ke filter cabang dalam file YAML di cabang rilis, build terjadwal akan ditambahkan ke penjadwal.

Pertimbangan batch untuk pemicu terjadwal

Catatan

Properti batch ini tersedia di Azure DevOps Server 2022.1 dan yang lebih tinggi.

Properti batch mengonfigurasi apakah akan menjalankan alur jika eksekusi yang dijadwalkan sebelumnya sedang berlangsung; defaultnya adalah false. Hal ini terlepas dari versi repositori alur.

Tabel berikut ini menjelaskan cara always dan batch berinteraksi.

Selalu Batch Perilaku
false false Alur berjalan hanya jika ada perubahan sehubungan dengan eksekusi alur terjadwal terakhir yang berhasil.
false true Alur berjalan hanya jika ada perubahan sehubungan dengan eksekusi alur terjadwal terakhir yang berhasil, dan tidak ada eksekusi alur terjadwal yang sedang berlangsung.
true false Alur berjalan sesuai dengan jadwal cron.
true true Alur berjalan sesuai dengan jadwal cron.

Penting

Kapan always adalah true, alur berjalan sesuai dengan jadwal cron, bahkan ketika batch adalah true.

Variabel Build.CronSchedule.DisplayName

Catatan

Variabel Build.CronSchedule.DisplayName ini tersedia di Azure DevOps Server 2022.1 dan yang lebih tinggi.

Saat alur berjalan karena pemicu terjadwal cron, variabel yang telah ditentukan Build.CronSchedule.DisplayName sebelumnya berisi displayName jadwal cron yang memicu eksekusi alur.

Alur YAML Anda mungkin berisi beberapa jadwal cron, dan Anda mungkin ingin alur Anda menjalankan berbagai tahap atau pekerjaan berdasarkan jadwal cron mana yang berjalan. Misalnya, Anda memiliki build malam dan build mingguan, dan Anda ingin menjalankan tahap tertentu hanya selama build malam. Anda dapat menggunakan Build.CronSchedule.DisplayName variabel dalam kondisi pekerjaan atau tahapan untuk menentukan apakah akan menjalankan pekerjaan atau tahap tersebut.

- stage: stage1
  # Run this stage only when the pipeline is triggered by the 
  # "Daily midnight build" cron schedule
  condition: eq(variables['Build.CronSchedule.DisplayName'], 'Daily midnight build')

Untuk contoh selengkapnya, lihat contoh schedules.cron.

Build terjadwal tidak didukung dalam sintaks YAML di Azure DevOps Server 2019. Setelah membuat alur build YAML, Anda dapat menggunakan pengaturan alur untuk menentukan pemicu terjadwal.

Contoh

Contoh berikut mendefinisikan dua jadwal:

schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
    - releases/*
    exclude:
    - releases/ancient/*
- cron: '0 12 * * 0'
  displayName: Weekly Sunday build
  branches:
    include:
    - releases/*
  always: true

Jadwal pertama, Build tengah malam hari, menjalankan alur pada tengah malam setiap hari, tetapi hanya jika kode telah berubah sejak eksekusi terjadwal terakhir yang berhasil, untuk main dan semua releases/* cabang, kecuali cabang di bawah releases/ancient/*.

Jadwal kedua, build Mingguan Mingguan, menjalankan alur pada siang hari pada hari Minggu, apakah kode telah berubah atau tidak sejak eksekusi terakhir, untuk semua releases/* cabang.

Catatan

Zona waktu untuk jadwal cron adalah UTC, jadi dalam contoh ini, build tengah malam dan build siang berada pada tengah malam dan siang hari di UTC.

Untuk contoh selengkapnya, lihat Migrasi dari editor klasik.

Build terjadwal tidak didukung dalam sintaks YAML di Azure DevOps Server 2019. Setelah membuat alur build YAML, Anda dapat menggunakan pengaturan alur untuk menentukan pemicu terjadwal.

Sintaks Cron

Setiap ekspresi cron pemicu terjadwal Azure Pipelines adalah ekspresi yang dibatasi spasi dengan lima entri dalam urutan berikut. Ekspresi diapit dalam tanda kutip 'tunggal .

mm HH DD MM DW
 \  \  \  \  \__ Days of week
  \  \  \  \____ Months
   \  \  \______ Days
    \  \________ Hours
     \__________ Minutes
Bidang Nilai yang diterima
Menit 0 hingga 59
Jam 0 hingga 23
Hari 1 hingga 31
Bulan 1 sampai 12, nama lengkap bahasa Inggris, tiga huruf pertama nama bahasa Inggris
Hari dalam seminggu 0 hingga 6 (dimulai dengan Hari Minggu), nama lengkap bahasa Inggris, tiga huruf pertama nama bahasa Inggris

Nilai bisa dalam format berikut.

Format Contoh Deskripsi
Kartubebas * Cocok dengan semua nilai untuk bidang ini
Nilai tunggal 5 Menentukan satu nilai untuk bidang ini
Dibatasi koma 3,5,6 Menentukan beberapa nilai untuk bidang ini. Beberapa format dapat digabungkan, seperti 1,3-6
Rentang 1-3 Rentang nilai inklusif untuk bidang ini
Interval */4 atau 1-5/2 Interval yang cocok untuk bidang ini, seperti setiap nilai keempat atau rentang 1-5 dengan interval langkah 2
Contoh Ekspresi Cron
Bangun setiap Senin, Rabu, dan Jumat pukul 18:00 0 18 * * Mon,Wed,Fri, 0 18 * * 1,3,5, atau 0 18 * * 1-5/2
Bangun setiap 6 jam 0 0,6,12,18 * * *, 0 */6 * * * atau 0 0-18/6 * * *
Bangun setiap 6 jam mulai pukul 09.00 0 9,15,21 * * * atau 0 9-21/6 * * *

Untuk informasi selengkapnya tentang format yang didukung, lihat Ekspresi Crontab.

Build terjadwal tidak didukung dalam sintaks YAML di Azure DevOps Server 2019. Setelah membuat alur build YAML, Anda dapat menggunakan pengaturan alur untuk menentukan pemicu terjadwal.

Tampilan eksekusi terjadwal

Anda dapat melihat pratinjau build terjadwal yang akan datang dengan memilih Eksekusi terjadwal dari menu konteks pada halaman detail alur untuk alur Anda.

Penting

Tampilan eksekusi terjadwal hanya menampilkan alur yang dijadwalkan untuk dijalankan dalam waktu tujuh hari sejak tanggal saat ini. Jika jadwal cron Anda memiliki interval lebih dari 7 hari dan eksekusi berikutnya dijadwalkan untuk dimulai setelah tujuh hari dari tanggal saat ini, jadwal tidak akan ditampilkan dalam tampilan Eksekusi terjadwal .

Menu eksekusi terjadwal

Setelah membuat atau memperbarui pemicu terjadwal, Anda dapat memverifikasinya menggunakan tampilan Eksekusi terjadwal .

Eksekusi terjadwal

Contoh ini menampilkan eksekusi terjadwal untuk jadwal berikut.

schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

Jendela Eksekusi terjadwal menampilkan waktu yang dikonversi ke zona waktu lokal yang diatur di komputer yang digunakan untuk menelusuri ke portal Azure DevOps. Contoh ini menampilkan cuplikan layar yang diambil di zona waktu EST.

Catatan

Jika Anda memperbarui jadwal untuk alur yang sedang berjalan, tampilan Eksekusi terjadwal tidak diperbarui dengan jadwal baru hingga alur yang sedang berjalan selesai.

Build terjadwal tidak didukung dalam sintaks YAML di Azure DevOps Server 2019. Setelah membuat alur build YAML, Anda dapat menggunakan pengaturan alur untuk menentukan pemicu terjadwal.

Berjalan bahkan ketika tidak ada perubahan kode

Secara default, alur Anda tidak berjalan seperti yang dijadwalkan jika tidak ada perubahan kode sejak eksekusi terjadwal terakhir yang berhasil. Misalnya, pertimbangkan bahwa Anda telah menjadwalkan alur untuk berjalan setiap malam pukul 21:00. Selama hari kerja, Anda mendorong berbagai perubahan ke kode Anda. Alur berjalan sesuai jadwal. Selama akhir pekan, Anda tidak membuat perubahan apa pun pada kode Anda. Jika belum ada perubahan kode sejak eksekusi terjadwal pada hari Jumat, alur tidak berjalan seperti yang dijadwalkan selama akhir pekan.

Untuk memaksa alur berjalan bahkan ketika tidak ada perubahan kode, Anda dapat menggunakan always kata kunci.

schedules:
- cron: ...
  ...
  always: true

Build terjadwal tidak didukung dalam sintaks YAML dalam versi Azure DevOps Server ini. Setelah membuat alur build YAML, Anda dapat menggunakan pengaturan alur untuk menentukan pemicu terjadwal.

Batasan jumlah eksekusi terjadwal dalam alur YAML

Ada batasan tertentu tentang seberapa sering Anda dapat menjadwalkan alur untuk dijalankan. Batasan ini telah diberlakukan untuk mencegah penyalahgunaan sumber daya Azure Pipelines, terutama agen yang dihosting Microsoft. Batasnya adalah:

  • sekitar 1000 eksekusi per alur per minggu
  • 10 eksekusi per alur per 15 menit

Bermigrasi dari editor klasik

Contoh berikut menunjukkan kepada Anda cara memigrasikan jadwal Anda dari editor klasik ke YAML.

Contoh: Build repositori Git setiap malam di beberapa zona waktu

Dalam contoh ini, pemicu terjadwal editor klasik memiliki dua entri, menghasilkan build berikut.

  • Setiap Senin - Jumat pukul 03.00 (UTC + 5.30 zona waktu), bangun cabang yang memenuhi features/india/* kriteria filter cabang

    UTC pemicu terjadwal + zona waktu 5:30

  • Setiap Senin - Jumat pukul 03.00 (UTC - 5.00 zona waktu), bangun cabang yang memenuhi features/nc/* kriteria filter cabang

    UTC pemicu terjadwal -5:00 zona waktu

Pemicu terjadwal YAML yang setara adalah:

schedules:
- cron: '30 21 * * Sun-Thu'
  displayName: M-F 3:00 AM (UTC + 5:30) India daily build
  branches:
    include:
    - /features/india/*
- cron: '0 8 * * Mon-Fri'
  displayName: M-F 3:00 AM (UTC - 5) NC daily build
  branches:
    include:
    - /features/nc/*

Dalam jadwal pertama, M-F 3:00 AM (UTC + 5:30) Build harian India, sintaks cron (mm HH DD MM DW) adalah 30 21 * * Sun-Thu.

  • Menit dan Jam - 30 21 - Peta ini ke 21:30 UTC (9:30 PM UTC). Karena zona waktu yang ditentukan di editor klasik adalah UTC + 5:30, kita perlu mengurangi 5 jam dan 30 menit dari waktu build yang diinginkan pukul 03.00 untuk tiba pada waktu UTC yang diinginkan untuk menentukan pemicu YAML.
  • Hari dan Bulan ditentukan sebagai kartubebas karena jadwal ini tidak ditentukan untuk dijalankan hanya pada hari-hari tertentu dalam sebulan atau pada bulan tertentu.
  • Hari dalam seminggu - Sun-Thu - karena konversi zona waktu, agar build kami berjalan pada pukul 03.00 di zona waktu UTC + 5.30 India, kita perlu menentukan memulainya pada hari sebelumnya dalam waktu UTC. Kita juga dapat menentukan hari dalam seminggu sebagai 0-4 atau 0,1,2,3,4.

Pada jadwal kedua, M-F 3:00 AM (UTC - 5) NC daily build, sintaks cron adalah 0 8 * * Mon-Fri.

  • Menit dan Jam - 0 8 - Peta ini ke 8:00 AM UTC. Karena zona waktu yang ditentukan di editor klasik adalah UTC - 5:00, kita perlu menambahkan 5 jam dari waktu build yang diinginkan pukul 03.00 untuk tiba pada waktu UTC yang diinginkan untuk menentukan pemicu YAML.
  • Hari dan Bulan ditentukan sebagai kartubebas karena jadwal ini tidak ditentukan untuk dijalankan hanya pada hari-hari tertentu dalam sebulan atau pada bulan tertentu.
  • Hari dalam seminggu - Mon-Fri - Karena konversi zona waktu kami tidak mencakup beberapa hari dalam seminggu untuk jadwal yang kami inginkan, kami tidak perlu melakukan konversi apa pun di sini. Kita juga dapat menentukan hari dalam seminggu sebagai 1-5 atau 1,2,3,4,5.

Penting

Zona waktu UTC di pemicu terjadwal YAML tidak memperhitungkan waktu musim panas.

Tip

Saat menggunakan 3 huruf hari dalam seminggu dan menginginkan rentang beberapa hari melalui Matahari, Matahari harus dianggap sebagai hari pertama dalam seminggu misalnya Untuk jadwal EST tengah malam, Kamis hingga Minggu, sintaks cron adalah 0 5 * * Sun,Thu-Sat.

Contoh: Bangun setiap malam dengan frekuensi yang berbeda

Dalam contoh ini, pemicu terjadwal editor klasik memiliki dua entri, menghasilkan build berikut.

  • Setiap Senin - Jumat pukul 03.00 UTC, bangun cabang yang memenuhi main kriteria filter cabang dan releases/*

    Frekuensi pemicu terjadwal 1.

  • Setiap hari Minggu pukul 03.00 UTC, bangun releases/lastversion cabang, meskipun sumber atau alur belum berubah

    Frekuensi pemicu terjadwal 2.

Pemicu terjadwal YAML yang setara adalah:

schedules:
- cron: '0 3 * * Mon-Fri'
  displayName: M-F 3:00 AM (UTC) daily build
  branches:
    include:
    - main
    - /releases/*
- cron: '0 3 * * Sun'
  displayName: Sunday 3:00 AM (UTC) weekly latest version build
  branches:
    include:
    - /releases/lastversion
  always: true

Dalam jadwal pertama, build harian M-F 3:00 AM (UTC), sintaks cron adalah 0 3 * * Mon-Fri.

  • Menit dan Jam - 0 3 - Peta ini ke 3:00 AM UTC. Karena zona waktu yang ditentukan di editor klasik adalah UTC, kita tidak perlu melakukan konversi zona waktu apa pun.
  • Hari dan Bulan ditentukan sebagai kartubebas karena jadwal ini tidak ditentukan untuk dijalankan hanya pada hari-hari tertentu dalam sebulan atau pada bulan tertentu.
  • Hari dalam seminggu - - Mon-Fri karena tidak ada konversi zona waktu, hari-hari dalam seminggu memetakan langsung dari jadwal editor klasik. Kita juga dapat menentukan hari dalam seminggu sebagai 1,2,3,4,5.

Di jadwal kedua, Minggu 03.00 (UTC) build versi terbaru mingguan, sintaks cron adalah 0 3 * * Sun.

  • Menit dan Jam - 0 3 - Peta ini ke 3:00 AM UTC. Karena zona waktu yang ditentukan di editor klasik adalah UTC, kita tidak perlu melakukan konversi zona waktu apa pun.
  • Hari dan Bulan ditentukan sebagai kartubebas karena jadwal ini tidak ditentukan untuk dijalankan hanya pada hari-hari tertentu dalam sebulan atau pada bulan tertentu.
  • Hari dalam seminggu - Sun - Karena konversi zona waktu kami tidak mencakup beberapa hari dalam seminggu untuk jadwal yang kami inginkan, kami tidak perlu melakukan konversi apa pun di sini. Kita juga dapat menentukan hari dalam seminggu sebagai 0.
  • Kami juga menentukan always: true karena build ini dijadwalkan untuk menjalankan apakah kode sumber telah diperbarui atau tidak.

FAQ

Saya ingin alur saya berjalan hanya pada jadwal dan bukan ketika seseorang mendorong perubahan ke cabang

Jika Anda ingin alur Anda hanya berjalan sesuai jadwal, dan bukan ketika seseorang mendorong perubahan ke cabang atau menggabungkan perubahan ke cabang utama, Anda harus secara eksplisit menonaktifkan pemicu CI dan PR default pada alur.

Untuk menonaktifkan pemicu CI dan PR default, tambahkan pernyataan berikut ke alur YAML Anda, dan verifikasi bahwa Anda belum menimpa pemicu alur YAML dengan pemicu UI.

trigger: none
pr: none

Untuk informasi selengkapnya, lihat definisi pr dan definisi pemicu.

Saya menentukan jadwal dalam file YAML. Tapi itu tidak berjalan. Apa yang terjadi?

  • Periksa beberapa eksekusi berikutnya yang telah dijadwalkan oleh Azure Pipelines untuk alur Anda. Anda dapat menemukan eksekusi ini dengan memilih tindakan Eksekusi terjadwal di alur Anda. Daftar difilter ke bawah untuk hanya menampilkan beberapa eksekusi yang akan datang selama beberapa hari ke depan. Jika ini tidak memenuhi harapan Anda, mungkin itu adalah kasus bahwa Anda telah salah mengetik jadwal cron Anda, atau Anda tidak memiliki jadwal yang ditentukan di cabang yang benar. Baca topik di atas untuk memahami cara mengonfigurasi jadwal. Mengevaluasi ulang sintaks cron Anda. Semua waktu untuk jadwal cron berada di UTC.

  • Buat perubahan kecil pada file YAML Anda dan dorong pembaruan tersebut ke repositori Anda. Jika ada masalah dalam membaca jadwal dari file YAML sebelumnya, itu harus diperbaiki sekarang.

  • Jika Anda memiliki jadwal yang ditentukan dalam UI, maka jadwal YAML Anda tidak terhormat. Pastikan Anda tidak memiliki jadwal UI dengan menavigasi ke editor untuk alur Anda lalu memilih Pemicu.

  • Ada batasan jumlah eksekusi yang dapat Anda jadwalkan untuk alur. Baca selengkapnya tentang batasan.

  • Jika tidak ada perubahan pada kode Anda, Azure Pipelines mungkin tidak memulai eksekusi baru. Pelajari cara mengambil alih perilaku ini.

Jadwal YAML saya berfungsi dengan baik. Tapi, mereka berhenti bekerja sekarang. Bagaimana cara men-debug ini?

  • Jika Anda tidak menentukan always:true, alur Anda tidak akan dijadwalkan kecuali ada pembaruan yang dibuat untuk kode Anda. Periksa apakah ada perubahan kode dan bagaimana Anda mengonfigurasi jadwal.

  • Ada batasan berapa kali Anda dapat menjadwalkan alur Anda. Periksa apakah Anda telah melebihi batas tersebut.

  • Periksa apakah seseorang mengaktifkan lebih banyak jadwal di UI. Buka editor untuk alur Anda, dan pilih Pemicu. Jika jadwal yang ditentukan di UI, maka jadwal YAML Anda tidak akan dihormati.

  • Periksa apakah alur Anda dijeda atau dinonaktifkan. Pilih Pengaturan untuk alur Anda.

  • Periksa beberapa eksekusi berikutnya yang telah dijadwalkan oleh Azure Pipelines untuk alur Anda. Anda dapat menemukan eksekusi ini dengan memilih tindakan Eksekusi terjadwal di alur Anda. Jika Anda tidak melihat jadwal yang Anda harapkan, buat perubahan kecil pada file YAML Anda, dan dorong pembaruan ke repositori Anda. Ini harus mensinkronkan ulang jadwal.

  • Jika Anda menggunakan GitHub untuk menyimpan kode Anda, ada kemungkinan bahwa Azure Pipelines mungkin telah dibatasi oleh GitHub ketika mencoba memulai eksekusi baru. Periksa apakah Anda dapat memulai eksekusi baru secara manual.

Kode saya belum berubah, namun build terjadwal dipicu. Mengapa?

  • Anda mungkin telah mengaktifkan opsi untuk selalu menjalankan build terjadwal meskipun tidak ada perubahan kode. Jika Anda menggunakan file YAML, verifikasi sintaks untuk jadwal dalam file YAML. Jika Anda menggunakan alur klasik, verifikasi apakah Anda mencentang opsi ini di pemicu terjadwal.

  • Anda mungkin telah memperbarui alur build atau beberapa properti alur. Ini akan menyebabkan eksekusi baru dijadwalkan meskipun Anda belum memperbarui kode sumber Anda. Verifikasi Riwayat perubahan dalam alur menggunakan editor klasik.

  • Anda mungkin telah memperbarui koneksi layanan yang digunakan untuk menyambungkan ke repositori. Ini akan menyebabkan eksekusi baru dijadwalkan meskipun Anda belum memperbarui kode sumber Anda.

  • Azure Pipelines terlebih dahulu memeriksa apakah ada pembaruan pada kode Anda. Jika Azure Pipelines tidak dapat menjangkau repositori Anda atau mendapatkan informasi ini, Azure Pipelines akan membuat eksekusi informasi. Ini adalah build dummy untuk memberi tahu Anda bahwa Azure Pipelines tidak dapat menjangkau repositori Anda.

  • Alur Anda mungkin tidak memiliki build yang sepenuhnya berhasil. Untuk menentukan apakah akan menjadwalkan build baru atau tidak, Azure DevOps mencari build terjadwal terakhir yang sepenuhnya berhasil. Jika tidak menemukannya, itu memicu build terjadwal baru. Build terjadwal yang berhasil sebagian tidak dianggap berhasil, jadi jika alur Anda hanya memiliki build yang berhasil sebagian, Azure DevOps akan memicu build terjadwal, bahkan jika kode Anda belum berubah.

Saya melihat eksekusi yang direncanakan di panel eksekusi Terjadwal. Namun, saat itu tidak berjalan. Mengapa?

  • Panel Eksekusi terjadwal menunjukkan semua jadwal potensial. Namun, mungkin tidak benar-benar berjalan kecuali Anda telah membuat pembaruan nyata pada kode. Untuk memaksa jadwal selalu berjalan, pastikan Anda telah mengatur properti always di alur YAML, atau mencentang opsi untuk selalu berjalan dalam alur klasik.

Jadwal yang ditentukan dalam alur YAML berfungsi untuk satu cabang tetapi tidak yang lain. Bagaimana cara memperbaikinya?

Jadwal ditentukan dalam file YAML, dan file-file ini dikaitkan dengan cabang. Jika Anda ingin alur dijadwalkan untuk cabang tertentu, katakan features/X, maka pastikan bahwa file YAML di cabang tersebut memiliki jadwal cron yang ditentukan di dalamnya, dan bahwa alur tersebut memiliki penyertaan cabang yang benar untuk jadwal. File YAML di features/X cabang harus memiliki yang berikut schedule dalam contoh ini:

schedules: 
- cron: '0 12 * * 0'   # replace with your schedule
  branches: 
    include: 
    - features/X  

Untuk informasi selengkapnya, lihat Pertimbangan cabang untuk pemicu terjadwal.