2013-05-12 7 views
7

में टिकटों की बांस बदल सकती है हमारे पास जिर एकीकरण के साथ एक बांस पर्यावरण स्थापित है।जेआईआरए

जब भी कोई डेवलपर गिट करने के लिए एक निश्चित मुद्दा करता है, तो वह प्रतिबद्ध संदेश में समस्या संख्या को नोट करता है, और वास्तव में मैं बांस में उस मुद्दे के लिए उचित लिंक देख सकता हूं, जो जेरा में टिकट में जाता है।

मैं सोच रहा था - वहाँ एक रास्ता बांस का निर्माण करने के लिए "गुणवत्ता आश्वासन के लिए तैयार" करने के लिए प्रतिबद्ध हर टिकट की टिकट स्थिति सेट को स्वचालित करने के लिए है?

तो उदाहरण के लिए, यदि मैं एक नया निर्माण शुरू करता हूं जिसमें जेआईआरए में आईएसयूयूई-123 की प्रतिबद्धता है, तो बांस आईएसयूयू-123 स्थिति "क्यूए के लिए तैयार" पर सेट करेगा?

उत्तर

8

हाँ, बांस JIRA में टिकटों की स्थिति बदल सकते हैं। लेकिन आपको थोड़ा सा जादू करने की आवश्यकता होगी।

सबसे पहले, आप CLI plugin for JIRA का उपयोग सीखने की जरूरत है। यह एक महान उपकरण है (यह उल्लेखनीय है कि यह 2010 में atlassian codegeist contest का विजेता बन गया है) नियमित जेरा-संबंधित कार्यों को स्वचालित करने के उद्देश्य से। दरअसल, इस उपकरण के कुछ संस्करण हैं जो कमांड लाइन स्क्रिप्टिंग के माध्यम से लगभग सभी एटलसियन उपकरण (जेआईआरए, संगम, बांस, क्रूसिबल, फिशिए, स्टैश) को स्वचालित करने की अनुमति देते हैं। हालांकि यह थोड़ा धीमा है, यह मुद्दा स्थिति परिवर्तन सहित काफी कुछ कर सकता है। कृपया ध्यान दें कि इसे एक जेरा प्लगइन और स्टैंडअलोन कमांड लाइन टूल के रूप में इस्तेमाल किया जा सकता है। आप (यहाँ installation guide है) मशीन जहाँ आपके बांस निर्माण एजेंट चलाया जाता है पर स्थापित करने के लिए JIRA CLI प्लगइन का स्टैंडअलोन संस्करण की आवश्यकता है।

java -jar jira-cli-3.3.0.jar --action progressIssue --issue ISSUE-123 --step WORKFLOW_TRANSITION_ID --user USERNAME --password PASSWORD --server http://yourjira.company.com 

बदलें टेम्पलेट विकल्प मान:

फास्ट ट्रैक एक मुद्दा JIRA में (कि कैसे Atlassian डेवलपर्स स्वचालित रूप से इस मुद्दे स्थितियां बदलने की प्रक्रिया कहते हैं) करने के लिए, आप निम्न आदेश का उपयोग करने की आवश्यकता होगी आपके वास्तविक मूल्यों के साथ। महत्वपूर्ण मूल्य WORKFLOW_TRANSITION_ID है जब तक यह निर्दिष्ट करता है कि आपके जेआईआरए मुद्दे को वास्तव में आवश्यक स्थिति में स्थानांतरित करने के लिए कौन सा वर्कफ़्लो संक्रमण का उपयोग किया जाएगा। WORKFLOW_TRANSITION_ID खोजने के लिए, आपको वर्कफ़्लो की जांच करने की आवश्यकता है जिसका उपयोग ISSUE-123 के लिए किया जाता है। आम तौर पर, आप उन मुद्दों को तेजी से ट्रैक करने वाले हैं जिनके पास एक ही समस्या प्रकार है (उदाहरण के लिए, बग, एन्हांसमेंट, आदि)। साथ ही, आमतौर पर एक ही समस्या प्रकार के साथ समस्याएं समान वर्कफ़्लो होती हैं (उदाहरण के लिए, बग वर्कफ़्लो)।

आप JIRA के प्रशासनिक खंड के लिए मिलता है और उस कार्यप्रवाह खोजने की जरूरत है। फिर आपको उन सभी संक्रमणों के ids को खोजने की आवश्यकता है जो आपके अपडेट के बाद जारी होने वाली स्थिति की ओर ले जाते हैं। आपके मामले में आपको 'क्यूए के लिए तैयार' स्थिति और इसके सभी आने वाले संक्रमणों को खोजने की आवश्यकता है। उन संक्रमणों की आईडी लिखें और टेम्पलेट में WORKFLOW_TRANSITION_ID मान को प्रतिस्थापित करने के लिए बाद में उनका उपयोग करें।

आप आईडी 51, 62 और 83 के साथ संक्रमण है, तो अपनी स्क्रिप्ट के रूप में दिखाई देगा इस प्रकार है:

java -jar jira-cli-3.3.0.jar --action progressIssue --issue ISSUE-123 --step 51 --user USERNAME --password PASSWORD --server http://yourjira.company.com 
java -jar jira-cli-3.3.0.jar --action progressIssue --issue ISSUE-123 --step 62 --user USERNAME --password PASSWORD --server http://yourjira.company.com 
java -jar jira-cli-3.3.0.jar --action progressIssue --issue ISSUE-123 --step 83 --user USERNAME --password PASSWORD --server http://yourjira.company.com 

आप अन्य मुद्दा प्रकार है और इसलिए, वर्कफ़्लो की समस्याओं को ट्रैक उपवास रखने की जरूरत है, तो आप करेंगे उन वर्कफ़्लो को ढूंढने और उन संक्रमणों को ढूंढने की आवश्यकता है जो 'क्यूए के लिए तैयार' स्थिति (यदि वास्तव में वर्कफ़्लो द्वारा उपयोग की जाती हैं) की ओर जाता है जैसे आपने पिछले वर्कफ़्लो के साथ किया था।

मामले में आप सभी उपलब्ध कमांड लाइन विकल्प और उनके मूल्यों के साथ भ्रमित कर रहे हैं, एक कमांड लाइन विकल्पों संदर्भ के रूप में JIRA CLI documentation का उपयोग करें।

आपके द्वारा आवश्यक स्थिति में तेजी से ट्रैक करने के लिए जा रहे स्क्रिप्ट की सामग्री का पता लगाने के बाद (आपके मामले में 'क्यूए के लिए तैयार') में, आपको इसे बांस द्वारा उपयोग की जाने वाली बिल्ड स्क्रिप्ट में शामिल करने की आवश्यकता होगी।

बैश (build.sh):

while getopts "j:" opt; do 
    case $opt in 
    j) 
     java -jar jira-cli-3.3.0.jar --action progressIssue --issue $OPTARG --step 51 --user USERNAME --password PASSWORD --server http://yourjira.company.com 
     java -jar jira-cli-3.3.0.jar --action progressIssue --issue $OPTARG --step 62 --user USERNAME --password PASSWORD --server http://yourjira.company.com 
     java -jar jira-cli-3.3.0.jar --action progressIssue --issue $OPTARG --step 83 --user USERNAME --password PASSWORD --server http://yourjira.company.com 
     ;; 
    \?) 
     echo "No issue key has been passed: -$OPTARG" >&2 
     ;; 
    esac 
done 

ध्यान दें कि यह आदेश JIRA निर्दिष्ट करने के लिए में -j विकल्प का उपयोग करता

अगला चरण फाइल करने के लिए तेजी से ट्रैकिंग स्क्रिप्ट की सामग्री को संग्रहीत किया जाएगा स्क्रिप्ट लाइन तर्क के रूप में स्क्रिप्ट के लिए समस्या कुंजी।

बाकी सब कुछ क्या निर्माण प्रबंधन उपकरण आप (चींटी, Maven या पूरी तरह से पार्टी) का उपयोग पर निर्भर करता है।

बैश:

लेकिन, किसी भी मामले में, आप jira कुंजी पारित करने में सक्षम बनाने के स्क्रिप्ट के लिए एक कमांड लाइन विकल्प आपको बांस पर उपयोग के रूप में (जो बांस Git टिप्पणी से आप के लिए हो जाता है) हो जाएगा
./build.sh -j ${bamboo.issueKey} 

चींटी:

ant -Djirakey=${bamboo.issueKey} 

Maven:

mvn -Djirakey=${bamboo.issueKey} 

अंतिम चरण की जरूरत है आप का उपयोग निर्माण प्रबंधन उपकरण के लिए फास्ट ट्रैक कोड अनुकूल करने के लिए है।

चींटी (build.xml):

<exec executable="bash" dir="."> 
    <arg value="build.sh"/> 
    <arg value="-j"/> 
    <arg value="${jirakey}"/> 
</exec> 

लिए Maven यह और अधिक जटिल है। अपनी बिल्ड स्क्रिप्ट से build.sh निष्पादित करने के लिए maven exec प्लगइन का उपयोग करें।

जटिल निर्माण स्क्रिप्ट लिखने से बचने के लिए, आप बांस पर add standalone build step चुन सकते हैं जो सफल निर्माण के बाद चलाया जाएगा। लेकिन इस मामले में आप अभी भी जारी होने के दौरान समस्या स्थिति को अपडेट करने में सक्षम नहीं होंगे (वास्तव में, सुनिश्चित नहीं है, आप ऐसा करना चाहते हैं)। आमतौर पर स्टैंडअलोन बिल्ड चरण जोड़ना जो आप चाहते हैं उसे प्राप्त करने के लिए पर्याप्त है। बांस पर नया निर्माण चरण जोड़ने के दौरान बस 'तर्क' क्षेत्र में ./build.sh -j ${bamboo.issueKey} डालें।

नोट: मैंने उन स्क्रिप्ट का परीक्षण नहीं किया क्योंकि वर्तमान में मेरे पास बांस स्थापित नहीं है और सीआई सर्वर द्वारा तेज़ ट्रैकिंग के साथ प्रयोग करने का मौका नहीं है। तो, सावधान रहें और सुनिश्चित करें कि आप समझ रहे हैं कि आप क्या कर रहे हैं।

आशा है कि मेरी सिफारिशें प्राप्त करने के लिए आप क्या चाहते हैं आप में मदद मिलेगी। सौभाग्य!

+0

इस आश्चर्यजनक विस्तृत और विचार के उत्तर के लिए धन्यवाद! मुझे पहले सीएलआई प्लगइन के बारे में पता नहीं था। यह इसके बारे में जाने का एक अच्छा तरीका लगता है। – OpherV

+0

हम्म, मैं एक बांस के निर्माण से $ {bamboo.issueKey} तक पहुंच नहीं प्रतीत कर सकता हूं। ऐसा मत सोचो कि यह वास्तव में एक बांस चर है – lucidlogic

1

मैं वहाँ पहले से ही एक जवाब को स्वीकार कर लिया है, और यह सही जवाब वास्तव में है।

क्या मुझे लगता है कि Atlassian CLI से लापता है एक उचित Homebrew सूत्र पर OSX उपकरण स्थापित करने के लिए है।

यहाँ फार्मूला है कि मैं का उपयोग है।

# 

require 'formula' 

# Homebrew formula to install atlassian CLI tools 

class NewsAtlassianCli < Formula 

    version "3.6.0" 

    homepage 'https://marketplace.atlassian.com/plugins/org.swift.atlassian.cli' 
    url 'https://marketplace.atlassian.com/download/plugins/org.swift.atlassian.cli/version/360' 
    sha1 'a56aed6b6fe19a3b59998f9aed8da0077bc9d441' 

    # dependencies (if any) 

    # Install 
    def install 

     # this is garbage 
     puts "Cleaning up windows stuff and examples..." 
     rm Dir["*.bat"] 
     rm_rf "examples" 

     # patch and move 
     puts "Patching shell scripts and moving them to bin..." 
     # patch by updating path to lib folder 
     Dir['*.sh'].each do |f| 
      system "sed -i -e 's,/lib,/../lib,g' #{f}" 
     end 

     # move the all to bin 
     Dir.mkdir "bin" 
     Dir['*.sh'].each { |f| mv f, "bin/atlas-#{f.sub('.sh', '')}" } 

     prefix.install_metafiles 
     prefix.install Dir['*'] 
    end 

    test do 
     puts "version: #{version}" 
    end 
end 

जैसा कि आप देख सकते हैं, यह सभी विंडोज शोर और उदाहरणों को साफ़ करता है।

फिर यह फ़ोल्डर संरचना को ठीक करता है। सभी टूल्ससेट में आमतौर पर बिन, lib और अन्य फ़ोल्डर्स हैं। होमब्रू /usr/local/bin, * /usr/local/lib और अन्य में लिंक बनाता है।

एटलसियन इस नियम को उन कारणों से अनदेखा करता है जिन्हें मैं बिल्कुल नहीं जानता, इसलिए उपकरण ठीक से इंस्टॉल नहीं होंगे।

एक तरह से इसे ठीक करने बिन फ़ोल्डर में सभी निष्पादन योग्य ले जाते हैं, और lib/...साथ ../ lib/... के सभी संदर्भ prelacing द्वारा उन्हें पैच करने के लिए है।

मैं भी के बाद से .sh ड्रॉप और atlas- साथ सभी निष्पादन योग्य पहले जोड़ें करने का निर्णय लिया एटलस-सब है ज्यादा सभी की तुलना में बेहतर या all.sh

मैं अभी भी होमब्रू में इस सूत्र को योगदान देने के विचार से टकरा रहा हूं।

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