Serbest stil bir proje kullanırken, 20 dakika sonra, sonuçlandırılmamışsa, yapının iptal edileceğini ayarlayabilirsiniz. Jenkins Multi Branch Pipeline Project ile bu nasıl mümkün olabilir?
Yanıtlar:
Zaman aşımı adımını kullanabilirsiniz :
timeout(20) {
node {
sh 'foo'
}
}
MINUTESTimeUnit
dışında bir değere ihtiyacınız varsa , bağımsız değişkeni sağlayabilirsiniz :unit
timeout(time: 20, unit: 'SECONDS') {
DÜZENLEME Ağustos 2018: Günümüzde daha yaygın bildirimsel ardışık düzenlerle (üst düzey pipeline
yapı tarafından kolayca tanınır ), zaman aşımları options
farklı düzeylerde (genel ardışık düzen veya aşama başına) kullanılarak da belirlenebilir:
pipeline {
options {
timeout(time: 1, unit: 'HOURS')
}
stages { .. }
// ..
}
Yine de, bildirime dayalı bir ardışık düzen içinde tek bir adıma zaman aşımı uygulamak istiyorsanız, yukarıda açıklandığı gibi kullanılabilir.
def n=Jenkins.instance.getNode("ETService3") if (n!=null && n.computer && n.computer.online) { echo "Online" } else { echo "Offline" // wait a little bit and try again }
Düğümü iki kez edinmenin zor bir yolu. İlk kez dış zaman aşımıyla, ikincisi iç zaman aşımıyla. Ben de özelliği kaçırıyorum.
Bir İçin Bildirimsel Boru Hattı bunun kullanılması tavsiye edilir aşımı adımını içinde seçenekler kesiti .
Kodu belirli bir zaman aşımı limiti ile bloğun içinde yürütür. Zaman sınırına ulaşılırsa, bir istisna (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException) atılır, bu da yapının iptal edilmesine yol açar (bir şekilde yakalanmadığı ve işlenmediği sürece). Birim isteğe bağlıdır ancak varsayılan olarak dakikadır.
Zaman aşımı adımında yapılandırabileceğiniz 3 parametre vardır :
zaman (gerekli, int)
etkinlik (isteğe bağlı, boole)
birim (isteğe bağlı, değerler: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS)
Örnekler:
timeout(time: 10) // would lead to a timeout of 10 minutes (MINUTES is default value)
timeout(time: 10, unit: 'SECONDS') // a 10 seconds timeout
timeout(time: 10, activity: false, unit: 'MILLISECONDS')
Resmi Jenkins dokümantasyon zaman aşımı kullanımı için çok güzel bir örnek vardır:
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
activity
varsayılan olarak false değerine sahiptir. Ne zaman activity
yanlıştır - tüm iş true
için, etkinlik için zaman aşımı için zaman aşımı (her şeyi günlüğe yazdırmak için).
timeout
Belirli bir aşama için, sonraki aşamanın zarif bir şekilde çalışacağı şekilde eklemek istiyorum . Yukarıdaki örnekte, zaman aşımından sonra boru hattı iptal edilir ve sonraki aşamalar yürütülmez. Gereksinimi yerine getirmenin bir yolu var mı? Belirli bir aşamanın zaman aşımı için Örnek Kod (resmi Jenkins Doc'tan):pipeline { agent any stages { stage('Example') { options { timeout(time: 1, unit: 'HOURS') } steps { echo 'Hello World' } } } }
JENKINS_URL/job/<any Pipeline project>/pipeline-syntax/
→ Step Reference altında da mevcuttur .