2013-01-14 5 views
8

मेरे पास एक ऐसी स्क्रिप्ट है जो कलाकृतियों को जेनकींस नौकरी से खींचती है और इसे हमारे हार्डवेयर परीक्षण प्रणाली पर स्थापित करती है। अब, आज मुझे एक सुंदर पुराने संस्करण में डाउनग्रेड करना होगा। दुर्भाग्य से, जेनकींस एपीआई केवल अंतिम कुछ बनाता है।मैं जेनकींस एपीआई रिटर्न को और अधिक कैसे बना सकता हूं?

मैं जेनकिंकी पाइथन एपीआई का उपयोग करता हूं। यह विफल रहता है इस प्रकार है:

/usr/local/lib/python2.7/dist-packages/jenkinsapi-0.1.6-py2.7.egg/jenkinsapi/job.pyc in get_build(self, buildnumber) 
    177  def get_build(self, buildnumber): 
    178   assert type(buildnumber) == int 
--> 179   url = self.get_build_dict()[ buildnumber ] 
    180   return Build(url, buildnumber, job=self) 
    181 

अजगर एपीआई यूआरएल http://jenkins/job/job-name/api/python/ पूरी करता है। तो मुझे लगता है कि अपने आप को, तो मैं निम्नलिखित प्रतिक्रिया मिलता है:

{"actions":[{},{},{},{},{},{},{}], 
"description":"text", 
"displayName":"job-name", 
"displayNameOrNull":None, 
"name":"job-name", 
"url":"http://jenkins/job/job-name/", 
"buildable":True, 
"builds":[ 
    {"number":437,"url":"http://jenkins/job/job-name/437/"}, 
    {"number":436,"url":"http://jenkins/job/job-name/436/"}, 
    {"number":435,"url":"http://jenkins/job/job-name/435/"}, 
    {"number":434,"url":"http://jenkins/job/job-name/434/"}, 
    {"number":433,"url":"http://jenkins/job/job-name/433/"}, 
    {"number":432,"url":"http://jenkins/job/job-name/432/"}, 
    {"number":431,"url":"http://jenkins/job/job-name/431/"}, 
    {"number":430,"url":"http://jenkins/job/job-name/430/"}, 
    {"number":429,"url":"http://jenkins/job/job-name/429/"}, 
    {"number":428,"url":"http://jenkins/job/job-name/428/"}, 
    {"number":427,"url":"http://jenkins/job/job-name/427/"}, 
    {"number":426,"url":"http://jenkins/job/job-name/426/"}, 
    {"number":425,"url":"http://jenkins/job/job-name/425/"}, 
    {"number":424,"url":"http://jenkins/job/job-name/424/"}, 
    {"number":423,"url":"http://jenkins/job/job-name/423/"}], 
"color":"yellow_anime", 
"firstBuild": {"number":311,"url":"http://jenkins/job/job-name/311/"}, 
"healthReport":[ 
       {"description":"Test Result: 0 tests failing out of a total of 3 tests.","iconUrl":"health-80plus.png","score":100}, 
       {"description":"Build stability: No recent builds failed.","iconUrl":"health-80plus.png","score":100}], 
"inQueue":False, 
"keepDependencies":False, 
"lastBuild":{"number":438,"url":"http://jenkins/job/job-name/438/"}, 
"lastCompletedBuild":{"number":437,"url":"http://jenkins/job/job-name/437/"}, 
"lastFailedBuild":{"number":386,"url":"http://jenkins/job/job-name/386/"}, 
"lastStableBuild":{"number":424,"url":"http://jenkins/job/job-name/424/"}, 
"lastSuccessfulBuild":{"number":437,"url":"http://jenkins/job/job-name/437/"}, 
"lastUnstableBuild":{"number":437,"url":"http://jenkins/job/job-name/437/"}, 
"lastUnsuccessfulBuild":{"number":437,"url":"http://jenkins/job/job-name/437/"}, 
"nextBuildNumber":439, 
"property":[], 
"queueItem":None, 
"concurrentBuild":False, 
"downstreamProjects":[], 
"scm":{}, 
"upstreamProjects":[]} 

अब, मैं काम संख्या 315 मैं यह करने के लिए कैसे करते प्राप्त करना चाहता था?

उत्तर

4

मैं निम्नलिखित तरीके को का उपयोग कर समाप्त हो गया:

try: 
    build=job.get_build(build_no) 
except KeyError: 
    build=jenkinsapi.build.Build('%s%d/' % (job.baseurl, build_no), build_no, job=job) 

यह बहुत नहीं है, लेकिन यह काम करता है।

0

क्या आप वाकई सभी बिल्ड मौजूद हैं और हटाए गए नहीं हैं? हो सकता है कि कुछ सेटिंग्स सक्षम हों (जैसे सीमा के माध्यम से पुराने निर्माण को हटाएं) .. मैंने अपने जेनकींस इंस्टेंस पर यूआरएल हिट करने का प्रयास किया है, यह सभी बिल्ड (लगभग 150) प्रस्तुत करता है। मैंने दोनों पायथन और एक्सएमएल एपीआई संस्करणों की कोशिश की है।

+0

मैं बिल्डों की संख्या को सीमित करता हूं, लेकिन यह बिल्ड अभी भी उस सीमा के भीतर है। साथ ही, यह विशेष निर्माण "हमेशा के लिए रखें" चिह्नित किया गया है। – martinhans

संबंधित मुद्दे