jenkins जेनकींस/हडसन में नौकरी का नाम बदलना




hudson (6)

मैंने एक हडसन / जेनकींस नौकरी का नाम बदलने की कोशिश की है। हालांकि यह नाम बदलने में विफल रहा।

क्या कोई रास्ता है इसलिए मैं नौकरी का नाम बदल सकता हूं?


पूरी तरह से पूर्णता के लिए, ग्रोवी स्क्रिप्ट कंसोल का उपयोग करके हडसन नौकरी के नाम के अपडेट का जिक्र करना चाहते हैं:

// Groovy script to rename job in Hudson
import hudson.model.*;

def JOB_PATTERN = ~/^MY_JOB.*$/; //find all jobs starting with "MY_JOB".
def NEW_PART = "_NEW"

(Hudson.instance.items.findAll { job -> job.name =~ JOB_PATTERN }).each { job_to_update -> 
    println ("Updating job " + job_to_update.name);
    def new_job_name = job_to_update.name + NEW_PART; //Append new part to the job name
    println ("New name: " + new_job_name);
    job_to_update.renameTo(new_job_name);
    println ("Updated name: " + job_to_update.name);
    println("="*80);
}

इसके बजाय यदि आपको एक ही समय में कई दर्जनों नौकरियों को अपडेट करने की आवश्यकता है तो सहायक।

नोट : निम्न कोड काम नहीं करेगा:

job_to_update.name = new_job_name;
job_to_update.save();

नौकरी का नाम नया और सहेजने की कॉन्फ़िगरेशन को सेट करना वर्तमान नौकरी का नाम नहीं देगा, लेकिन नए नाम के साथ जॉब कॉन्फ़िगरेशन की एक प्रति बनाएं। इसके अलावा, इस मामले में, टूटी संदर्भ हो सकते हैं, इसलिए हडसन को कॉन्फ़िगरेशन पुनः लोड करने की आवश्यकता होगी।


मैं मार्क की लिपि काम नहीं कर सकता, इसलिए नीचे दिखाए गए सभी नौकरियों की स्क्रिप्ट को अक्षम करने के आधार पर एक लिखें। यह "Findur.OpenComponent" के साथ "Findur.OpenComponents" के साथ किसी भी प्रोजेक्ट का नाम बदलना है।

import hudson.model.*

renameChildren(Hudson.instance.items)

def renameChildren(items) {
  for (item in items) {
    if (item.class.canonicalName != 'com.cloudbees.hudson.plugins.folder.Folder') {     
      if (( m = item.name =~ /^(Findur.OpenComponent)(\..*)$/)){
        println(item.name)
        println m.group(1) + " " + m.group(2)
        newname = m[0][1] + 's' + m.group(2)
        item.renameTo(newname)
      }

    } else {
        renameChildren(((com.cloudbees.hudson.plugins.folder.Folder) item).getItems())
    }
  }
}

नौकरी का नाम बदलने का सामान्य तरीका:

स्क्रीन कॉन्फ़िगर करें पर जाएं और प्रोजेक्ट नाम फ़ील्ड को शीर्ष पर संपादित करें। फिर हां पर क्लिक करके सहेजें और पुष्टि करें पर क्लिक करें( सहेजें के बगल में लागू करें बटन पर क्लिक करें, जो आपको एक त्रुटि संदेश देगा: JENKINS-17474 )

प्रदर्शन नाम बदलने से नौकरी का नाम बदल नहीं जाएगा, यह केवल यह दिखाएगा कि यह कैसे प्रदर्शित किया जाएगा। यह अभी भी खोज बॉक्स के माध्यम से इसके मूल नाम के तहत पाया जाएगा और यह यूआरएल में भी दिखाई देगा।

फाइल सिस्टम स्तर पर निर्देशिकाओं का नाम बदलना वास्तव में आवश्यक नहीं होना चाहिए।


  1. नए नाम के साथ एक नया काम बनाएं, मौजूदा नौकरी copy from का एक विकल्प होगा।
  2. उस नौकरी copy from जिसका आप नाम बदलना चाहते हैं।
  3. मूल नौकरी हटाएं।

अब आपके पास एक अलग नाम के साथ एक समान नौकरी है।


[जॉब जेनरेटर] (जॉब जेनरेटर प्लगइन) (फैक्ट्री) के भीतर ग्रोवी स्क्रिप्ट का उपयोग करके कई नौकरियों का नाम बदलने के लिए जॉब Job.previousNames() फ़ंक्शन का उपयोग करें।

निम्नलिखित उदाहरण नौकरियों का नाम बदलता है ci.*_2 से ci.* (यह पिछला _2 हटा देता है)।

[
    [env: '01', hostname: 'host01.intranet'],
    [env: '02', hostname: 'host02.intranet'],
    [env: '03', hostname: 'host03.intranet'],
    [env: '04', hostname: 'host04.intranet'],
    [env: '05', hostname: 'host05.intranet'],
    [env: '06', hostname: 'host06.intranet'],
    [env: '07', hostname: 'host07.intranet'],
    [env: '08', hostname: 'host08.intranet'],
    [env: '09', hostname: 'host09.intranet'],
    [env: '10', hostname: 'host10.intranet'],
    [env: '11', hostname: 'host11.intranet'],
    [env: '12', hostname: 'host12.intranet'],
    [env: '13', hostname: 'host13.intranet'],
    [env: '14', hostname: 'host14.intranet'],
    [env: '15', hostname: 'host15.intranet'],
    [env: '16', hostname: 'host16.intranet'],
    [env: '17', hostname: 'host17.intranet'],
    [env: '18', hostname: 'host18.intranet'],
    [env: '19', hostname: 'host19.intranet'],
    [env: '20', hostname: 'host20.intranet'],
].each { Map config ->
    job("ci.${config.env}") {
        previousNames("ci.${config.env}_2")
        description("Continuous Integration on host ${config.env}")
        logRotator {
            numToKeep(5)
            daysToKeep(45)
        }
        label('build')
        wrappers {
            colorizeOutput('gnome-terminal')
        }
    }
}

आप इन चरणों का पालन करके जेनकींस यूआई के माध्यम से चयनित नौकरी का नाम बदल सकते हैं:

job>configure>Advanced Project Options>Display Name

अन्य तरीका Jenkins/hudson सर्वर पर निर्देशिका का नाम बदलना है और फिर Jenkins restart है।





hudson