Perlu menjadwalkan pekerjaan setiap jam di jenkins

16

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.

Ajay
sumber
3
Anda harus menjelaskan apa "tetapi tidak bekerja secara efektif." cara. Dan tambahkan entri distro & cronttab Anda
Sathyajith Bhat
gunakan @hourlyatau0 * * * *
Renju Chandran chingath
Terima kasih. Harap sebutkan sintaksnya, jika saya ingin menjadwalkan setiap 3 jam.
Ajay
Gunakan: H / 60 * * * *
Eyal Sooliman

Jawaban:

31

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 */nberarti pekerjaan akan dijadwalkan setiap njam

masegaloeh
sumber
Terima kasih atas jawabannya. Ini berfungsi dengan baik. Tetapi pekerjaan saya membutuhkan lebih dari satu jam untuk dieksekusi. Misalnya, jika saya ingin menjadwalkan pekerjaan ini setiap 3 jam, apa yang akan menjadi sintaksisnya. Silakan bagikan.
Ajay
Periksa jawaban saya yang diperbarui :)
masegaloeh
@Jay Jika jawaban ini cocok untuk masalah Anda, mohon pertimbangkan untuk menerima jawaban ini :)
masegaloeh
14

Jenkins menyarankan cara ini:

H * * * *
Ruby232
sumber
2
Jawaban yang sama dengan jawaban lain untuk pertanyaan yang berumur 1+ tahun.
JakeGould
Ini menggandakan jawaban lain dan tidak menambahkan konten baru. Harap jangan mengirim jawaban kecuali Anda benar-benar memiliki sesuatu yang baru untuk disumbangkan.
DavidPostill
4
Keuntungan dari pendekatan ini adalah bahwa jenkins akan mengelola tugas dalam antrian. Mungkin orang lain sudah punya jawabannya tetapi tetap bermanfaat. Mengapa bersikap keras jika itu berguna? jawaban dengan 20 suka TIDAK begitu baik .... bah
juan Isaza
Saya harus pergi dengan @juanIsaza. Ini bukan duplikat tetapi sebenarnya jawaban yang lebih baik. Jenkins dengan jelas menyarankan untuk lebih memilih penggunaan Halih-alih nilai yang
dikodekan
9

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 valid
  • M-N menentukan rentang nilai
  • M-N/Xatau */Xlangkah - langkah dengan interval X melalui rentang yang ditentukan atau seluruh rentang yang valid
  • A,B,...,Z menghitung beberapa nilai

Untuk 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 Hbisa juga dijelaskan sebagai

  • *diterjemahkan menjadi SETIAP
  • Hditerjemahkan menjadi APA SAJA

Jadi 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 Hnilai 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.


Jadwalkan rentang waktu

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.


Jadwalkan rentang waktu melintasi tengah malam

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) * * *
derHugo
sumber
-1
* */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

jin T
sumber
Yang pertama berjalan setiap menit antara jam 1 pagi dan jam 2 pagi, kan?
Eric Wang
@ EricWang: Tidak. Ini sama dengan * * * * *=> 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
derHugo
@derHugo Maksud Anda * * 1-2 * *?
Eric Wang
1
@ EricWang Tidak maksud saya * 1-2 * * *. Posisi pertama adalah untuk Minute of our, yang kedua untuk hour of day, yang ketiga day of month, keempat month of yeardan 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.
derHugo
1
Perbedaan yang dilewatkan oleh penulis jawaban ini adalah yang *diterjemahkan menjadi everysementara Hditerjemahkan 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.
derHugo
-5

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 * * * *
narasimha Rao
sumber
4
Ini akan dijadwalkan pukul 3 pagi setiap hari, dan tidak setiap 3 jam
lony