Saya Baru di Jenkins. Saya memiliki pekerjaan yang harus saya jadwalkan setiap 1 jam.
saya menggunakan
* */1 * * *
tetapi tidak bekerja secara efektif.
Tolong berikan solusi lain.
@hourly
atau0 * * * *
Saya Baru di Jenkins. Saya memiliki pekerjaan yang harus saya jadwalkan setiap 1 jam.
saya menggunakan
* */1 * * *
tetapi tidak bekerja secara efektif.
Tolong berikan solusi lain.
@hourly
atau0 * * * *
Jawaban:
Jenkins menggunakan ekspresi cron seperti yang dijelaskan di sini
Untuk menjadwalkan setiap jam, maka Anda dapat menempatkan
0 * * * *
Maka pekerjaan Anda akan dieksekusi setiap jam (07:00, 08:00, 09:00 dan seterusnya)
MEMPERBARUI
Sebagai penjelasan tentang konfigurasi asli Anda, sintaksis
* */1 * * *
akan dieksekusi setiap menit.
PEMBARUAN 2
Seperti yang diminta dalam komentar, di sini sintaks untuk menjadwalkannya setiap 3 jam
0 */3 * * *
Sintaks */n
berarti pekerjaan akan dijadwalkan setiap n
jam
Jenkins menyarankan cara ini:
H * * * *
H
alih-alih nilai yang
Saya tahu ini adalah utas lama tapi saya menjawab karena ternyata orang masih mendarat di sini.
Jawaban teratas tidak boleh digunakan lagi.
Jenkins memperkenalkan suatu nilai H
.
Bidang ini mengikuti sintaks cron (dengan perbedaan kecil). Secara khusus, setiap baris terdiri dari 5 bidang yang dipisahkan oleh TAB atau spasi putih:
MENIT JAM BULAN MENIT
- MENIT Menit dalam waktu satu jam (0–59)
- JAM Jam sehari (0–23)
- DOM Hari dalam sebulan (1–31)
- BULAN Bulan (1–12)
- DOW Hari dalam seminggu (0–7) di mana 0 dan 7 adalah hari Minggu.
Untuk menentukan beberapa nilai untuk satu bidang, operator berikut tersedia. Dalam urutan yang diutamakan,
*
menentukan semua nilai yang validM-N
menentukan rentang nilaiM-N/X
atau*/X
langkah - langkah dengan interval X melalui rentang yang ditentukan atau seluruh rentang yang validA,B,...,Z
menghitung beberapa nilaiUntuk memungkinkan tugas yang dijadwalkan secara berkala untuk menghasilkan beban yang merata pada sistem, simbol H (untuk "hash") harus digunakan sedapat mungkin. Misalnya, menggunakan 0 0 * * * untuk selusin pekerjaan harian akan menyebabkan lonjakan besar di tengah malam. Sebaliknya, menggunakan HH * * * masih akan melaksanakan setiap pekerjaan sekali sehari, tetapi tidak semua pada saat yang sama, lebih baik menggunakan sumber daya yang terbatas.
Simbol H dapat digunakan dengan rentang. Misalnya, HH (0-7) * * * berarti beberapa waktu antara pukul 12:00 (tengah malam) hingga 7:59 AM. Anda juga dapat menggunakan interval langkah dengan H, dengan atau tanpa rentang.
Simbol H dapat dianggap sebagai nilai acak pada rentang, tetapi sebenarnya adalah hash dari nama pekerjaan, bukan fungsi acak, sehingga nilainya tetap stabil untuk setiap proyek tertentu.
Berhati-hatilah bahwa untuk bidang hari bulan, siklus pendek seperti * / 3 atau H / 3 tidak akan bekerja secara konsisten di dekat akhir bulan, karena panjang bulan variabel. Misalnya, * / 3 akan berjalan pada tanggal 1, 4,… 31 dari bulan yang panjang, kemudian lagi pada hari berikutnya di bulan berikutnya. Hash selalu dipilih dalam kisaran 1-28, sehingga H / 3 akan menghasilkan celah antara putaran antara 3 dan 6 hari pada akhir bulan. (Siklus yang lebih panjang juga akan memiliki panjang yang tidak konsisten tetapi efeknya mungkin relatif kurang terlihat.)
Jadi jawaban yang tepat untuk membangun satu jam sekali adalah
H * * * *
untuk setiap 3 jam
H H/3 * * *
Perbedaan antara *
dan H
bisa juga dijelaskan sebagai
*
diterjemahkan menjadi SETIAPH
diterjemahkan menjadi APA SAJAJadi misalnya
* * * * *
diterjemahkan menjadi: Membangun setiap menit, setiap jam, setiap hari dalam sebulan, setiap bulan, tidak peduli hari apa dalam seminggu.
H * * * *
diterjemahkan ke: Bangun sekali setiap jam (x), tidak masalah berapa menit tepatnya (bisa setiap menit antara x: 00 dan x: 59)
H H * * *
diterjemahkan ke: Bangun sekali setiap hari, tidak peduli jam berapa saat itu (bisa setiap menit dan setiap jam antara 00:00 dan 23:59)
Alasan mengapa Anda lebih suka menggunakan H
nilai waktu hardcoded juga dijelaskan seperti sebelumnya
Jika Anda memiliki 100 pekerjaan yang dikonfigurasi
0 0 * * *
mereka semua akan mencoba memulai pada saat yang sama menyebabkan misalnya banyak polling dan menarik lalu lintas di tengah malam.
Jika Anda memiliki mereka semua sudah dikonfigurasi
H H * * *
mereka semua akan dibangun sekali sehari tetapi tidak semua pada waktu yang sama tetapi didistribusikan sepanjang hari.
Anda dapat merencanakan schdedule lebih baik dengan menggunakan rentang waktu mis
H H(18-23) * * *
Semua pekerjaan akan dibangun setiap hari kapan saja antara 18:00 dan 23:59.
Bahkan dimungkinkan untuk menjadwalkan pekerjaan melintasi tengah malam misalnya untuk membangun antara 19:00 dan 5:00 pagi.
Tetapi karena cron biasanya tidak mengizinkan ini, Anda dapat menggunakan trik menggunakan zona waktu shiftet.
Misalnya saya tinggal di zona waktu MEZ yang GMT + 1 dan saya ingin membangun semua pekerjaan antara 19:00 dan 5:00 pagi. Untuk melakukan itu, saya menggeser zona waktu lengkap saya menggunakan 5 jam
TZ=Etc/GMT+6
Daripada saya menggunakan rentang shift untuk jam mulai pukul 14:00 (-> +5 = 19:00 sore) dan berakhir pada 23:59 (-> +5 = 4:59 pagi)
H H(14-23) * * *
* */1 * * *
benar itu berjalan setiap jam
Coba gunakan fungsi H sehingga semua pekerjaan tidak polling pada waktu yang sama untuk svn
H H/1 * * *
Itu harus melakukan sihir. Jika pekerjaan membutuhkan lebih banyak waktu untuk menyelesaikan atau Anda sedang membangun fungsionalitas pemicu. Baik tingkatkan waktu atau gunakan jenkins pluggin untuk berhenti membangun sampai pembangunan sebelumnya selesai.
https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin
* * * * *
=> berjalan setiap menit. Untuk berlari di antara rentang tertentu Anda menggunakannya seperti * 1-2 * * *
<- ini berjalan setiap menit antara 1:00 dan 1:59 pagi
* * 1-2 * *
?
* 1-2 * * *
. Posisi pertama adalah untuk Minute of our
, yang kedua untuk hour of day
, yang ketiga day of month
, keempat month of year
dan kelima day of week
(dalam kasus-kasus khusus juga memungkinkan yang keenam year
). Jadi baris Anda * * 1-2 * *
menerjemahkan "Setiap Menit, Setiap jam, hari pertama dan kedua setiap bulan dan setiap hari dalam seminggu.
*
diterjemahkan menjadi every
sementara H
diterjemahkan menjadi any
. Jadi sementara * * * * *
berarti setiap menit, H * * * *
berarti membangun satu kali setiap jam, tetapi saya tidak peduli menit yang tepat (bisa di mana saja antara 0-59 jika tidak ditentukan oleh rentang) dan H H * * *
berarti membangun sekali per hari tetapi saya tidak peduli jam berapa.
Sintaksnya adalah:
MINUTE Minutes within the hour (0-59)
HOUR The hour of the day (0-23)
DOM The day of the month (1-31)
MONTH The month (1-12)
DOW The day of the week (0-7) where 0 and 7 are Sunday.
Jika Anda ingin menjadwalkan setiap 3 jam, sintaksanya akan terlihat:
* 3 * * * *