2013-05-12 65 views
7

我們有一個與JIRA集成建立的竹子環境。可竹改變JIRA門票的狀態

每當開發人員向git提交固定問題時,他會在提交消息中記下問題編號,並且實際上我可以在Bamboo中看到適用於該問題的正確鏈接,這會導致JIRA中的票證。

我想知道 - 有沒有一種方法讓Bamboo自動化設置承諾構建的每張故障單的故障單狀態爲「Ready for QA」?例如,如果我開始在JIRA中提交ISSUE-123的新版本,Bamboo會將ISSUE-123狀態設置爲「準備好QA」?

回答

8

是的,Bamboo可以改變JIRA中門票的狀態。但你需要做一點魔術。

首先,您需要了解如何使用CLI plugin for JIRA。這是一個很棒的工具(值得一提的是,它在2010年已經成爲atlassian codegeist contest的贏家),目的是實現JIRA相關任務的自動化。實際上,這個工具的幾個版本允許通過命令行腳本自動執行幾乎所有的Atlassian工具(JIRA,Confluence,Bamboo,Crucible,Fisheye,Stash)。即使它有點慢,它可以做幾乎所有的事情,包括問題狀態的變化。請注意,它既可以用作JIRA插件,也可以用作獨立的命令行工具。您需要在運行Bamboo構建代理的計算機上安裝獨立版本的 JIRA CLI插件(此處爲installation guide)。

爲了快車道的問題(即Atlassian的開發商如何調用自動更改問題狀態的過程)的JIRA,你需要使用下面的命令:

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 

更換模板選項值與你的實際價值。重要的價值是WORKFLOW_TRANSITION_ID,只要它指定將使用哪個工作流程轉換將您的JIRA問題轉換爲您實際需要的狀態。爲了找到WORKFLOW_TRANSITION_ID,您需要檢查用於ISSUE-123的工作流程。通常,您將快速跟蹤具有相同問題類型的問題(例如,Bug,增強等)。此外,通常相同問題類型的問題具有相同的工作流程(例如,Bug工作流程)。

您需要到JIRA的管理部分並找到該工作流程。然後,您需要找出ID的所有轉換,這些轉換會導致更新後希望發佈的狀態。在你的情況下,你需要找到'準備好QA'狀態和所有進入的轉換。記下這些轉換的ID並稍後使用它們以便替換模板中的WORKFLOW_TRANSITION_ID值。

如果你有IDS 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 

如果需要快速通關的問題與其他問題的類型,因此,工作流,你會需要找到這些工作流程並找到導致「準備好QA」狀態(如果它實際上由工作流程使用)的轉換,就像您以前的工作流程一樣。

如果您對所有可用的命令行選項及其值感到困惑,請使用JIRA CLI documentation作爲命令行選項參考。

確定腳本的內容後,快速將問題追蹤到所需狀態(在您的案例中,「準備好QA」)後,您需要將其包含到Bamboo使用的構建腳本中。

下一步將快速跟蹤腳本的內容保存到文件中:

擊(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選項作爲命令行參數的腳本問題鍵。

其他一切都取決於您使用的構建管理工具(Ant,Maven或者純粹的bash)。但是,在任何情況下,你將能夠通過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的它要複雜得多。使用maven exec插件從您的構建腳本執行build.sh

爲了避免編寫複雜的構建腳本,您可以在Bamboo上選擇add standalone build step,這將在成功構建後運行。但在這種情況下,當構建仍在運行時,您將無法更新問題狀態(實際上,不確定,您希望這樣做)。通常添加獨立的構建步驟足以實現你想要的。只需將./build.sh -j ${bamboo.issueKey}放在字段「參數」中,同時在Bamboo上添加新的構建步驟。

注意:我沒有測試任何這些腳本,因爲目前我沒有安裝竹子,也沒有機會嘗試CI服務器的快速跟蹤。所以,要小心,並確保你明白你在做什麼。

希望我的建議能幫助你實現你想要的。祝你好運!

+0

謝謝你這個驚人的精心設計和深思熟慮的答案!我以前不知道CLI插件。這看起來是一個好方法。 – OpherV 2013-05-17 09:09:15

+0

嗯,我似乎無法訪問竹構建內的$ {bamboo.issueKey}。不要認爲它實際上是一個竹子變量 – lucidlogic 2014-09-04 11:43:53

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 

正如您所看到的,它可以清除所有Windows噪音和示例。

然後它修復了文件夾結構。所有工具集通常都有bin,lib等文件夾。然後Homebrew創建鏈接/usr/local/bin,* /usr/local/lib等等。

Atlassian由於我不太瞭解的原因而忽略這條規則,所以工具無法正確安裝。

人去修補方法是將所有可執行文件移動到文件夾,並通過prelacing所有引用修補他們的lib/...../的lib/...

我也決定放棄.SH和前面加上所有可執行文件與atlas-,因爲圖譜,所有大大優於所有all.sh

我仍然想着將這個公式貢獻給Homebrew。