पुरानी बिल्डिंग्स को छोड़ने के लिए पाइपलाइन कैसे लिखें?


88

नमूना चरण के लिए ग्रूवी सिंटैक्स जनरेटर काम नहीं कर रहा है properties: Set Job Properties। मैंने चुना है Discard old buildsऔर फिर क्षेत्र 10में प्रवेश किया है Max # of builds to keepऔर फिरGenerate Groovy कुछ भी नहीं दिखाता है।

जेनकिंस संस्करण: 2.7


जेनकिंस 2.32.3 के साथ मेरे लिए ठीक काम करता है
मिशेल जुंग

जवाबों:


182

घोषित सिंटैक्स के लिए, आप optionsब्लॉक का उपयोग कर सकते हैं :

pipeline {
  options {
    buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '30'))
  }
  ...
}

logRotator( स्रोत कोड से ) के लिए पैरामीटर :

  • daysToKeepStr: इतिहास केवल आज तक ही रखा गया है।
  • numToKeepStr: बिल्ड लॉग की केवल यह संख्या रखी गई है।
  • artifactDaysToKeepStr: कलाकृतियों को केवल इस दिन तक रखा जाता है।
  • artifactNumToKeepStr: बिल्ड की केवल इस संख्या में उनकी कलाकृतियाँ रखी गई हैं।

अधिक जानकारी Cloudbees नॉलेज बेस और ब्लॉक के लिए डॉक्सoptions में पाई जा सकती है ।


1
क्या यह प्रति शाखा या प्रति पाइपलाइन होना चाहिए? यह मेरे वातावरण में काम नहीं करता है।
nroose

क्या विभिन्न विकल्पों के मापदंडों को प्राप्त करने के लिए स्रोत कोड को संदर्भित करना सामान्य अभ्यास है? डॉक्स केवल संदर्भों numToKeepStrऔर सौभाग्य से मुझे आपकी प्रतिक्रिया के लिए यहां अन्य पार्म्स को खोजने के लिए मिला। एक तरह की गड़बड़ी कि वे चीजों को कैसे दस्तावेज करते हैं। धन्यवाद हालांकि आप एक जीवन रक्षक हैं।
इमदी

क्या कोई इस बिल्डडिस्कर्डर विकल्प स्टेटमेंट को एक (मल्टी-पाइपलाइन) स्टेज ब्लॉक के अंदर डालने के लिए संदर्भ दिखा सकता है? मैंने कोशिश की है, लेकिन मेरा निर्माण विफल है।
क्रिस्टोफर डी। एमर्सन

54

आप उस propertiesविधि का उपयोग कर सकते हैं, जिसे BuildDiscarderPropertyअंततः आपके द्वारा सेट की जाने वाली कुंजी है। मेरे पास अभी भी प्रत्येक कुंजी का सही सिंटैक्स देखने का ठोस तरीका नहीं है। बहुत अनुमान लगाने और जाँचने के बाद:

properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '10']]]);

ध्यान दें कि यह स्निपेट स्क्रिप्टेड सिंटैक्स के लिए है।


1
यह काम करता है लेकिन यह दो नक्शे के अंदर क्यों है और आपने इसे कैसे काम किया है?
रूपर्ट मैडेन-एबट

मैं आपके उत्तर को देख रहा हूं, और मुझे समझ नहीं आ रहा है कि यह क्या करता है। क्या यह पिछले 10 बिल्ड या पिछले 10 दिनों को रखता है? क्या मैं पिछले 10 सप्ताह या 3 महीने का निर्माण कर सकता हूं? कृपया प्रत्येक *Strक्षेत्र का अर्थ स्पष्ट करें strategy। एक आदमी को मछली सिखाना ... आदि
अभिजीत सरकार

1
@AbhijitSarkar सभी विकल्पों का वर्णन उस वर्ग के javadoc में किया गया है: github.com/jenkinsci/jenkins/blob/master/core/src/main/java/…
apottere

@apottere 1. लिंक उत्तर में नहीं है। 2. अगर मुझे जावदोक में देखना है, तो जवाब की कोई आवश्यकता नहीं है। उत्तर यथासंभव पूरा होना चाहिए। बाहरी लिंक ठीक हैं, जब तक संबंधित भाग कॉपी-पेस्ट किया जाता है और यहां समझाया जाता है।
अभिजीत सरकार

1
@ अभिजितसरकर मैं ओपी नहीं हूं, मैं आपको केवल यह बता रहा था कि आपको जवाब कहां मिल सकता है।
apottere

18

स्क्रिप्टेड पाइपलाइनों के उपयोग के लिए:

properties([
    buildDiscarder(logRotator(daysToKeepStr: '3', numToKeepStr: '3')),
])

17

जेनकिन्स में अंतर्निर्मित सिंटैक्स जनरेटर पृष्ठ हैं।

पाइपलाइन-सिंटैक्स: स्निपेट जेनरेटर
<your jenkins url > / पाइपलाइन-सिंटैक्स /

पाइप लाइन-सिंटैक्स: डायरेक्टिव जेनरेटर
<your jenkins url निर्देशात्मक > / निर्देश-जनरेटर /

Discard old builds डायरेक्टिव जेनरेटर से उदाहरण पुरानी बिल्ड उदाहरणों को त्यागें


8
  1. दिनों की विशेष संख्या के बाद निर्माण को त्यागने के लिए :

     options {
         buildDiscarder(logRotator(daysToKeepStr: '7'))
     }
    
  2. त्यागें निर्माण करने के लिए विशेष रूप से संख्या के बाद बनाता है :

     options {
         buildDiscarder(logRotator(numToKeepStr: '7'))
     }
    

बिल्ड रखने के लिए बस दिनों की संख्या जोड़ी गई, रखने के लिए बिल्ड की कुल संख्या के अलावा :)
जेराल्ड साबू एम

आपको इस प्रकार की चीजों के लिए टिप्पणियों का उपयोग करना चाहिए। मैंने उसी के अनुसार अपना उत्तर अपडेट किया है।
वादिम कोटोव

टिप्पणी जोड़ने के लिए मेरे पास प्रतिष्ठा नहीं है।
जेराल्ड साबू एम

अब आपके पास है। लेकिन सामान्य तौर पर, अगर आपकी कोई प्रतिष्ठा नहीं है, तो आपको टिप्पणी करने के बजाय जवाब नहीं देना चाहिए
वादिम कोटोव

6

वादिम का जवाब मेरे लिए किसी अज्ञात कारण से काम नहीं आया। मैंने इसे निम्नानुसार सरल किया और यह अब काम करता है:

options {
    buildDiscarder(logRotator(numToKeepStr: '3'))
}

6

घोषणात्मक पाइपलाइन के लिए आप इसे जोड़ सकते हैं:

options {

    buildDiscarder(
        logRotator(
            // number of build logs to keep
            numToKeepStr:'5',
            // history to keep in days
            daysToKeepStr: '15',
            // artifacts are kept for days
            artifactDaysToKeepStr: '15',
            // number of builds have their artifacts kept
            artifactNumToKeepStr: '5'
        )
    )
}

Thx, लेकिन आपको जानकारी कहां से मिली? कोड्स?
3

1
मैं सामान्य रूप से यहां से करता हूं jenkins-base-url:port if any/pipeline-syntax/। यहाँ एक और javadoc.jenkins.io/hudson/tasks/LogRotator.html भी है । मैं कभी-कभी विवरण में समझने के लिए प्लगइन के गीथब स्रोत कोड को भी देखता हूं। @ सुनीलज
भोरूपुर

2

यदि आप मल्टीब्रंच पाइपलाइन जॉब लेवल पर बिल्ड रिटेंशन को कॉन्फ़िगर करना चाहते हैं (बनाम सभी व्यक्ति में Jenkinsfile) तो यह भी संभव है: https://issues.jenkins-ci.org/browse/JENKINS-30519?fnedCommentId=325601&page=com .atlassian.jira.plugin.system.issuetabpanels: टिप्पणी-tabpanel # टिप्पणी-325,601

इसके अलावा BuildRetentionBranchPropertyआप *BranchPropertyयहाँ से किसी भी अन्य को कॉन्फ़िगर कर सकते हैं: https://github.com/jenkinsci/branch-ap-plugin/tree/master/src/main/java/jenkins/branch

वे जीयूआई में नहीं दिखाए जा सकते हैं, हालांकि कम से कम मेरे लिए जेनकिंस 2.73.2 के साथ। लेकिन आप अभी भी JobDSL का उपयोग कर सकते हैं या config.xmlसीधे संशोधित कर सकते हैं (मैंने ऐसा नहीं कहा; ;-))


क्या आप जॉब डीएसएल प्लगिन के बारे में बात कर रहे हैं ? यह जेनकिंस पाइपलाइन के समान नहीं है। मेरा मतलब है, जो हर कोई पाइपलाइन का उपयोग नहीं करता है वह जॉब डीएसएल प्लगइन का उपयोग कर रहा है।
वादिम कोटोव

@VadimKotov नहीं, वास्तव में नहीं। मुझे जेनकिन्स पाइपलाइनों में बिल्ड रिटेंशन को कॉन्फ़िगर करने की समस्या थी। मैं जेनकिंसफाइल में ऐसा नहीं करना चाहता था, लेकिन इसके बजाय नौकरी के स्तर पर। मैंने यहां जॉब डीएसएल का इस्तेमाल किया है, लेकिन यह वास्तव में मायने नहीं रखता है क्योंकि यह केवल बिल्ड जॉब्स के सेटअप को स्वचालित करने के लिए एक साधन है। हालांकि, ऐसा लगता है कि जीयूआई में बग है जो उपरोक्त सेटिंग्स को प्रकट करने से रोकता है जब आप मैन्युअल रूप से बिल्ड जॉब को कॉन्फ़िगर करते हैं। (जॉबडीएसएल कुछ भी नहीं करता है जो आप जीयूआई के माध्यम से नहीं कर सकते हैं)
टोरबेन किनर

2

यदि आपको प्रोग्रामेटिक तरीके की जरूरत है (जैसे कि फंक्शन से ऐसा करना, बजाय इस्तेमाल करने के options{} पाइपलाइन सिंटैक्स ):

def someFunction() {
  ...
  properties([
    buildDiscarder(logRotator(numToKeepStr: '5'))
  ])
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.