[英]Can Bamboo change status of tickets in JIRA
我們在Bamboo環境中設置了JIRA集成。
每當開發人員向git提交一個固定的問題時,他都會在提交消息中注明問題編號,實際上我可以在Bamboo中看到該問題的正確鏈接,這會導致JIRA中的票證。
我在想 - 有沒有辦法讓Bamboo自動將每張承諾構建的門票的門票狀態設置為“Ready for QA”?
例如,如果我在JIRA中啟動了一個提交了ISSUE-123的新版本,Bamboo會將ISSUE-123狀態設置為“Ready for QA”?
是的,Bamboo可以更改JIRA中的門票狀態。 但是你需要做一點魔術。
首先,您需要學習如何為JIRA使用CLI插件 。 它是一個很好的工具(值得一提的是,它已成為2010年atlassian代碼主義競賽的勝利者),目的是實現常規JIRA相關任務的自動化。 實際上,這個工具的版本很少,允許通過命令行腳本自動化幾乎所有Atlassian工具(JIRA,Confluence,Bamboo,Crucible,Fisheye,Stash)。 盡管它有點慢,它可以做很多事情,包括問題狀態的變化。 請注意,它既可以用作JIRA插件,也可以用作獨立的命令行工具。 您需要在運行Bamboo構建代理的計算機上安裝獨立版本的JIRA CLI插件(此處為安裝指南 )。
為了快速跟蹤問題 (這就是atlassian開發人員如何自動調用更改問題狀態的過程),您需要使用以下命令:
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 ,這些轉換會導致您在更新后要發出的狀態。 在您的情況下,您需要找到“Ready for QA”狀態及其所有傳入的轉換。 記下這些轉換的ID並稍后使用它們以替換模板中的WORKFLOW_TRANSITION_ID
值。
如果您使用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
如果您需要快速跟蹤其他問題類型以及工作流程的問題,您將需要找到這些工作流程並找到導致“准備好QA”狀態的轉換(如果它實際上被工作流程使用),就像您使用以前的工作流
如果您對所有可用的命令行選項及其值感到困惑,請使用JIRA CLI文檔作為命令行選項參考。
在您確定要將問題快速跟蹤到所需狀態的腳本內容之后(在您的“Ready for QA”中),您需要將其包含在Bamboo使用的構建腳本中。
下一步是將快速跟蹤腳本的內容存儲到文件中:
Bash(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
請注意,它使用-j
選項以將腳本的JIRA問題密鑰指定為命令行參數。
其他一切都取決於您使用的構建管理工具(Ant,Maven或僅僅是簡單的bash)。 但是,無論如何,你將能夠傳遞jira鍵(竹子從git注釋中獲取)作為你在Bamboo上使用的構建腳本的命令行選項:
擊:
./build.sh -j ${bamboo.issueKey}
螞蟻:
ant -Djirakey=${bamboo.issueKey}
Maven的:
mvn -Djirakey=${bamboo.issueKey}
您需要的最后一步是為您使用的構建管理工具調整快速跟蹤代碼。
Ant(build.xml):
<exec executable="bash" dir=".">
<arg value="build.sh"/>
<arg value="-j"/>
<arg value="${jirakey}"/>
</exec>
對於Maven來說,它要復雜得多。 使用maven exec插件從您的構建腳本執行build.sh
。
為了避免編寫復雜的構建腳本,您可以選擇在Bamboo上添加將在成功構建后運行的獨立構建步驟 。 但在這種情況下,當構建仍在運行時,您將無法更新問題狀態(實際上,不確定,您希望這樣做)。 通常添加獨立構建步驟就足以實現您想要的效果。 只需在“Argument”字段中輸入./build.sh -j ${bamboo.issueKey}
,同時在Bamboo上添加新的構建步驟。
注意:我沒有測試任何這些腳本,因為目前我沒有安裝Bamboo,也沒有機會嘗試CI服務器的快速跟蹤。 所以,要小心,確保你明白自己在做什么。
希望我的建議可以幫助您實現您想要的目標。 祝好運!
我知道已經接受了答案,這確實是正確的答案。
我認為Atlassian CLI缺少的是在OSX上安裝工具的正確的Homebrew公式。
這是我使用的公式。
#
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忽略了這條規則,因此工具無法正確安裝。
修復它的一種方法是將所有可執行文件移動到bin文件夾,並通過使用../ lib / ...預先添加對lib / ...的所有引用來修補它們。
我還決定刪除.sh並在atlas-之前添加所有可執行文件,因為atlas-all比all或all.sh好得多。
我仍然想要為Homebrew貢獻這個公式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.