我們有一個與JIRA集成建立的竹子環境。可竹改變JIRA門票的狀態
每當開發人員向git提交固定問題時,他會在提交消息中記下問題編號,並且實際上我可以在Bamboo中看到適用於該問題的正確鏈接,這會導致JIRA中的票證。
我想知道 - 有沒有一種方法讓Bamboo自動化設置承諾構建的每張故障單的故障單狀態爲「Ready for QA」?例如,如果我開始在JIRA中提交ISSUE-123的新版本,Bamboo會將ISSUE-123狀態設置爲「準備好QA」?
我們有一個與JIRA集成建立的竹子環境。可竹改變JIRA門票的狀態
每當開發人員向git提交固定問題時,他會在提交消息中記下問題編號,並且實際上我可以在Bamboo中看到適用於該問題的正確鏈接,這會導致JIRA中的票證。
我想知道 - 有沒有一種方法讓Bamboo自動化設置承諾構建的每張故障單的故障單狀態爲「Ready for QA」?例如,如果我開始在JIRA中提交ISSUE-123的新版本,Bamboo會將ISSUE-123狀態設置爲「準備好QA」?
是的,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服務器的快速跟蹤。所以,要小心,並確保你明白你在做什麼。
希望我的建議能幫助你實現你想要的。祝你好運!
我知道已經有一個答案被接受了,而且這確實是一個正確的答案。
我認爲從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。
謝謝你這個驚人的精心設計和深思熟慮的答案!我以前不知道CLI插件。這看起來是一個好方法。 – OpherV 2013-05-17 09:09:15
嗯,我似乎無法訪問竹構建內的$ {bamboo.issueKey}。不要認爲它實際上是一個竹子變量 – lucidlogic 2014-09-04 11:43:53