পুরানো বিল্ডগুলি ফেলে দেওয়ার জন্য পাইপলাইন কীভাবে লিখবেন?


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: কেবল এই সংখ্যক বিল্ডেরই তাদের নিদর্শনগুলি রাখা আছে।

ক্লাউডবিজ জ্ঞান বেস এবং ব্লকের জন্য optionsডকগুলিতে আরও তথ্য পাওয়া যাবে ।


4
এটি কি শাখা প্রতি বা পাইপলাইন প্রতি অনুমিত হয়? এটা আমার পরিবেশে কাজ করে বলে মনে হচ্ছে না।
7'19

বিভিন্ন বিকল্পের প্যারামিটারগুলি পাওয়ার জন্য কি সাধারণ অনুশীলনের উত্স কোডটি উল্লেখ করা প্রয়োজন? দস্তাবেজগুলি কেবলমাত্র উল্লেখ numToKeepStrএবং ভাগ্যক্রমে আমি অন্যান্য প্রতিক্রিয়াগুলি খুঁজে পেতে আপনার প্রতিক্রিয়াটি এখানে পেয়েছি। তারা কীভাবে বিষয়াদি নথিভুক্ত করে তা এক ধরনের গোলমাল। ধন্যবাদ যদিও আপনি জীবন রক্ষাকারী।
emmdee

এই বিল্ডডিসকার্ডার অপশন স্টেটমেন্টটিকে (মাল্টি-পাইপলাইন) স্টেজ ব্লকের ভিতরে রাখার জন্য কি কেউ প্রসঙ্গটি প্রদর্শন করতে পারেন? আমি চেষ্টা করেছি কিন্তু আমার বিল্ড ব্যর্থ হয়েছে।
ক্রিস্টোফার ডি এমারসন

54

আপনি সেই propertiesপদ্ধতিটি ব্যবহার করতে পারেন যা BuildDiscarderPropertyশেষ পর্যন্ত আপনার কী সেট করতে চান তা অন্তর্ভুক্ত। প্রতিটি কীটির সঠিক বাক্য গঠন সঠিকভাবে দেখার আমার কাছে এখনও শক্ত উপায় নেই। অনেক অনুমান এবং পরীক্ষা করার পরে:

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

নোট করুন যে এই স্নিপেট স্ক্রিপ্ট সিনট্যাক্সের জন্য।


4
এটি কাজ করে তবে কেন দুটি মানচিত্রের অভ্যন্তরে এটি বাসা বেঁধেছে এবং আপনি এটি কীভাবে কাজ করলেন?
রূপার্ট ম্যাডেন-অ্যাবট

আমি আপনার উত্তরটি খুঁজছি, এবং আমি এটি বুঝতে পারি না। এটি কি সর্বশেষ 10 বিল্ডগুলি রাখে বা শেষ 10 দিন রাখে? আমি কি গত 10 সপ্তাহ বা 3 মাসের বিল্ডগুলি রাখতে পারি? দয়া করে প্রতিটি *Strক্ষেত্রের অর্থ ব্যাখ্যা করুন strategy। একজন মানুষকে মাছ ... ইত্যাদি শিখান
অভিজিৎ সরকার

4
@ অভিজিৎসরকার সমস্ত বিকল্পের বিবরণ সেই শ্রেণীর জাভডোকে বর্ণিত হয়েছে: github.com/jenkinsci/jenkins/blob/master/core/src/main/java/…
apottere

@apottere 1. লিঙ্কটি উত্তরে নেই। ২. যদি আমি জাভাদোকটি সন্ধান করি তবে উত্তর দেওয়ার দরকার নেই। উত্তরটি যথাসম্ভব সম্পূর্ণ হওয়া উচিত। বাহ্যিক লিঙ্কগুলি ঠিক আছে, যতক্ষণ না এখানে প্রাসঙ্গিক অংশটি অনুলিপি করা হয় এবং এখানে ব্যাখ্যা করা হয়।
অভিজিৎ সরকার

4
@ অজিজিৎসরকার আমি ওপি নই, আমি আপনাকে উত্তরটি দিয়েছিলাম যে উত্তর কোথায় পাওয়া যাবে।
apottere


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'
        )
    )
}

থেক্স, তবে আপনি কোথায় তথ্যটি পেয়েছেন? কোডস?
silencej

4
আমি সাধারণত এটি এখান থেকে করি jenkins-base-url:port if any/pipeline-syntax/। এখানে আরও একটি জাভাদোক.জেনকিনস.আইও / হডসন / টাস্কস / লোগরোটার এইচটিএমএল রয়েছে । আমি কখনও কখনও বিবরণে বুঝতে প্লাগিনের গিথুব উত্স কোডটিও লক্ষ্য করি। @silencej
bhordupur

2

আপনি যদি মাল্টিব্রান্স পাইপলাইন কাজের স্তরে বিল্ড রক্ষণটি কনফিগার করতে চান (সমস্ত স্বতন্ত্রের Jenkinsfileতুলনায়) এটিও সম্ভব: https://issues.jenkins-ci.org/browse/JENKINS-30519?focusedCommentId=325601&page=com .atlassian.jira.plugin.system.issuetabpanels: মন্তব্য-ট্যাবপ্যানেল # মন্তব্য -325601

এছাড়াও আপনি এখানে এস BuildRetentionBranchPropertyএর যে কোনও অন্যটি কনফিগার করতে পারেন *BranchProperty: https://github.com/jenkinsci/branch-api-plugin/tree/master/src/main/java/jenkins/branch

সেগুলি জিইউআইতে প্রদর্শিত নাও হতে পারে, অন্তত জেনকিন্স ২. 2.৩.২ সহ আমার জন্য। তবে আপনি এখনও জবডিএসএল ব্যবহার করতে পারেন বা config.xmlসরাসরি সংশোধন করতে পারেন (আমি এটি বলিনি ;-))


আপনি কাজ ডিএসএল প্লাগইন সম্পর্কে কথা বলছেন ? এটি জেনকিনস পাইপলাইনগুলির মতো একই জিনিস নয়। মানে, পাইপলাইন ব্যবহার করা প্রত্যেকে জোব ডিএসএল প্লাগইন ব্যবহার করছে না।
ভাদিম কোতোভ

@ ভাদিমকোটভ না, আসলেই নয়। জেনকিনস পাইপলাইনে বিল্ড রক্ষণটি কনফিগার করার ক্ষেত্রে আমার সমস্যা ছিল the আমি জেনকিনসফাইলে এটি করতে চাইনি, তবে পরিবর্তে চাকরির স্তরে। আমি এখানে জব ডিএসএল ব্যবহার করেছি, তবে এটি সত্যিই গুরুত্বপূর্ণ নয় কারণ এটি কেবলমাত্র জব তৈরির সেটআপ স্বয়ংক্রিয় করার জন্য একটি উপায়। তবে, মনে হচ্ছে জিইউআই-তে একটি বাগ রয়েছে যা উপরের সেটিংসটি উপস্থিত হতে বাধা দেয় যখন আপনি ম্যানুয়ালি বিল্ড জবটি কনফিগার করেন। (জবডিএসএল অন্যথায়
জিইউআইয়ের

2

আপনার যদি কোনও প্রোগ্রামেটিক উপায় প্রয়োজন (যেমন options{}পাইপলাইন সিনট্যাক্স ব্যবহার না করে কোনও ফাংশন থেকে এটি করা ):

def someFunction() {
  ...
  properties([
    buildDiscarder(logRotator(numToKeepStr: '5'))
  ])
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.