आप उस स्क्रिप्टिंग भाषा का कोई उल्लेख नहीं करते हैं जिसका आप उपयोग करना चाहते हैं, इसलिए मैं विशेष रूप से बिटकॉइन के HTTP अनुरोधों के बारे में बात करूंगा:
मान्यताओं
यदि आपके पास एक बिटबकेट रिपॉजिटरी है, जिसमें तीन कमिट हैं, तो पहला और आखिरी बिल्ड फेल हो रहा है, मध्य गुजर रहा है:
- 4768815 ❌
- 49d7110 ✅
- 42d357f ❌
कमिट की सूची प्राप्त करें
आप निम्नलिखित एपीआई विधि को कॉल करके कमिट्स की सूची प्राप्त कर सकते हैं:
https://api.bitbucket.org/2.0/repositories/{{owner}}/{{repo_slug}}/commits
owner: रिचर्डस्लेटर
repo_slug: हरितकंपनीप्रतिरोध
प्रतिक्रिया इस तरह दिखती है:
{
"pagelen": 30,
"values": [
{
"hash": "4768815fdc27abf4be17096e7c460f7f68f5d39b",
"repository": { ... },
"links": {
...
"statuses": {
"href": "https://api.bitbucket.org/2.0/repositories/RichardSlater/greencommitproofofconcept/commit/4768815fdc27abf4be17096e7c460f7f68f5d39b/statuses"
}
},
"author": { ... },
"parents": [ ... ],
"date": "2017-04-10T11:38:18+00:00",
"message": "README.md edited online with Bitbucket",
"type": "commit"
},
{
"hash": "49d7110b98616358d16055960a4abdf2926b890d",
...
},
{
"hash": "42d357f1df7a7d7bcf1f10a9f3a5a40d85d5b11c",
...
}
]
}
यदि आप JSON को पार्स करते हैं और उन प्रतिक्रियाओं पर लूप करते हैं जिनसे आप स्टेटस निकाल सकते हैं:
values[n].links.statuses.href
nसूचकांक कहां है 0, 1या 2उपरोक्त उदाहरण में। यदि आप इसे स्क्रैच से बनाना चाहते हैं तो यह निम्नलिखित प्रारूप में होगा।
समितियों की सूची प्राप्त करें
https://api.bitbucket.org/2.0/repositories/{{owner}}/{{repo_slug}}/commit/{{sha}}/statuses"
owner: रिचर्डस्लेटर
repo_slug: हरितकंपनीप्रतिरोध
sha: 4768815fdc27abf4be17096e7c460f7f68f5d39b
नोट: यह एक हाइपरमीडिया एपीआई है जिसका अर्थ है कि यूआरएल बदल सकता है इसलिए मैं उन्हें खरोंच से उत्पन्न करने की कोशिश करने के बजाय पिछली प्रतिक्रिया के लिंक का उपयोग करने की सलाह दूंगा।
उपरोक्त HTTP अनुरोध से प्रतिक्रिया कुछ इस तरह होगी:
{
"pagelen": 10,
"values": [
{
"key": "POC-01",
"name": "Build #1",
"repository": { ... },
"url": "http://devops.stackexchange.com/q/809/397",
"links": { ... },
"refname": null,
"state": "FAILED",
"created_on": "2017-04-10T13:04:28.261734+00:00",
"updated_on": "2017-04-10T13:04:28.261759+00:00",
"type": "build",
"description": "Changes by Richard Slater"
}
],
"page": 1,
"size": 1
}
इस प्रतिक्रिया से आप निम्नलिखित stateका उपयोग कर सकते हैं :
values[n].state
फिर जहां nहै status- वहाँ अगर उनमें से कई प्रतिबद्धताओं के परिणामस्वरूप कई बिल्ड हो सकते हैं।
यदि आप जिस बिल्ड की परवाह करते हैं SUCCESSFULउसके लिए राज्य है तो आपके पास आपका जवाब है और आप तुरंत shaकमिट के लिए वापस आ सकते हैं।
पहले चरण से सभी कमियों पर लूप करें, यदि आप कमिट्स से बाहर निकलते हैं, तो उस nextपृष्ठ का अनुसरण linkकरें जो कॉल में शामिल है /commits।
पूर्ण प्रवाह आरेख
उच्च स्तर पर प्रवाह इस तरह दिखेगा:

यह मत भूलो कि यह एक हाइपरमेडिया एपीआई है इसलिए जहाँ भी संभव हो आपके कोड को "उन्हें अनुमान लगाने" की कोशिश करने के बजाय एपीआई में लिंक का पालन करना चाहिए।