2011-02-08 17 views
7

मेरी कंपनी में, हमने हाल ही में हमारे प्रोजेक्ट प्रबंधन टूल के लिए Rally का उपयोग करना शुरू कर दिया है। प्रारंभ में, हमारी टीम के बाहरी व्यक्ति ने नामकरण सम्मेलन का उपयोग करके मैन्युअल रूप से पुनरावृत्तियों का निर्माण करने में काफी समय लगाया जो कि हमारी टीम की मौजूदा योजना के साथ नहीं जा रहा है। इस गरीब आत्मा को हाथ से इन रिक्त पुनरावृत्तियों को हटाने के बजाय, एक-एक करके, मैं रैली के आरईएसटी एपीआई का उपयोग करके इस प्रक्रिया को स्वचालित करना चाहता हूं। संक्षेप में, हमें इन 100+ रिक्त पुनरावृत्तियों को हटाना होगा जो 3 अलग-अलग परियोजनाओं में फैले हुए हैं (जो सभी एक आम माता-पिता साझा करते हैं)।सीआरयूडी परिचालनों के लिए रैली रेस्ट एपीआई का उपयोग

मैं कुछ समय बिताया है rally-rest-api माणिक रत्न को देख, और यद्यपि मैं कुछ सीमित रूबी अनुभव है, एपीआई के क्वेरी इंटरफेस मेरे लिए भ्रमित रहता है, और मैं कुछ परेशानी उसके चारों ओर मेरे सिर लपेटकर हो रहा है। मुझे पता है कि मेरा रेगेक्स क्या पसंद करेगा, लेकिन मुझे नहीं पता कि क्वेरी को कैसे आपूर्ति करें।

require 'rubygems' 
require 'rally_rest_api' 

rally = RallyRestAPI.new(:username => "myuser", 
         :password => "mypass") 
regex = /ET-VT-100/  
# get all names that match criteria 
iterations = rally.find(:iteration) { "query using above regex?" } 
# delete all the matching iterations 
iterations.each do |iteration| 
    iteration.delete  
end 

सही दिशा में किसी भी संकेत दिए गए बहुत सराहना की जाएगी:

यहाँ मैं अब तक है। मुझे लगता है कि मैं लगभग वहाँ हूँ।

उत्तर

8

मुझे कुछ महीनों पहले ऐसा कुछ करना पड़ा जब मैं पुनरावृत्तियों के एक बड़े समूह का नाम बदलना चाहता था।

सबसे पहले, सुनिश्चित करें कि जिस उपयोगकर्ता के साथ आप प्रमाणीकरण कर रहे हैं, कम से कम "संपादक" भूमिका उन सभी परियोजनाओं में असाइन की गई है जिनसे आप पुनरावृत्तियों को हटाना चाहते हैं। साथ ही, यदि आपके पास आपके वर्कस्पेस में कोई भी प्रोजेक्ट है जिसमें आपके पास पढ़ने की अनुमति नहीं है, तो आपको पहले से शुरू करने के लिए क्वेरी के लिए एक प्रोजेक्ट (ओं) तत्व प्रदान करना होगा। (आप उनके बारे में भी नहीं जानते हैं, आपके संगठन में कोई और उन्हें बना सकता था)।

require 'rubygems' 
require 'rally_rest_api' 

rally = RallyRestAPI.new(:username => "myuser", 
         :password => "mypass") 

# Assumes all projects contain "FooBar" in name 
projects = rally.find(:project) { contains :name, "FooBar"} 
projects.each do |project| 
    project.iterations.each do |iteration| 
    if iteration.name =~ /ET-VT-100/ 
     iteration.delete 
    end 
    end 
end 
+1

धन्यवाद, यह काम किया! – envigo

4

प्रयास करें:

iterations = rally.find(:iteration) { contains :name, "ET-VT-100" } 

मतलब यह है कि यात्रा के नाम पर ईटी VT-100 है, तो आपको कुछ अन्य क्षेत्र के खिलाफ क्वेरी करने के लिए आवश्यकता हो सकती है। Regexes आरईएसटी एपीआई, afaict द्वारा समर्थित नहीं हैं।

+1

मैं निम्नलिखित त्रुटि मिलती है:

निम्नलिखित परियोजनाओं के लिए एक संदर्भ हो जाता है और उसके बाद निर्दिष्ट regex के साथ पुनरावृत्तियों के माध्यम से लूप ' पढ़ने के लिए अधिकृत नहीं: पुनरावृत्ति 357,306,536 '। मैंने प्रत्येक परियोजनाओं पर अपनी अनुमतियों को दोबारा जांच लिया और मेरे पास प्रत्येक पर संपादक है। – envigo

+1

इस प्रश्न के उपरोक्त उत्तर को देखें, आपको सबसे पहले किसी प्रोजेक्ट का संदर्भ प्राप्त करना होगा। – csamuel