我们设置了一个使用JIRA集成的Bamboo环境。
每当开发人员向git提交一个固定的问题时,他都会在提交消息中注明问题编号,实际上我可以在Bamboo中看到该问题的正确链接,这会导致JIRA中的故障单。
我在想 - 有没有办法让Bamboo自动将每个承诺构建的票证的票证状态设置为“Ready for QA”?
例如,如果我开始在JIRA中提交了ISSUE-123的新版本,Bamboo会将ISSUE-123状态设置为“Ready for QA”?
答案 0 :(得分: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开发人员如何调用自动更改问题状态的过程),您需要使用以下命令:
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的管理部分并找到该工作流程。然后,您需要找到导致您想要在更新后发布的状态的所有转换的 ids 。在您的情况下,您需要找到“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
如果您需要快速跟踪其他问题类型以及工作流程的问题,您需要找到这些工作流程并找到导致“Ready for QA”状态的转换(如果它实际上被工作流程使用)就像你做过以前的工作流程。
如果您对所有可用的命令行选项及其值感到困惑,请使用JIRA CLI documentation作为命令行选项参考。
在您确定要将问题快速跟踪到所需状态的脚本内容之后(在您的“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上add standalone build step。但在这种情况下,当构建仍在运行时,您将无法更新问题状态(实际上,不确定,您希望这样做)。通常添加独立构建步骤就足以实现您想要的效果。只需将./build.sh -j ${bamboo.issueKey}
放在字段'Argument'中,同时在Bamboo上添加新的构建步骤。
注意:我没有测试任何这些脚本,因为目前我没有安装Bamboo,也没有机会尝试CI服务器进行快速跟踪。所以,要小心,确保你明白自己在做什么。
希望我的建议可以帮助您实现您想要的目标。祝你好运!
答案 1 :(得分:1)
我知道已经接受了答案,这确实是正确答案。
我认为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因为我不太了解的原因而忽略此规则,因此工具无法正确安装。
解决它的一种方法是所有的可执行文件移动到的仓强>文件夹,并通过用的 prelacing为 LIB /...强>的所有引用修补他们.. / lib中/...强>。
我也决定放弃的 .SH 并在前面加上所有可执行与的图谱 - 下,由于<强>图谱-所有强>比好得多<强>全部或 all.sh 。
我仍然想要将这个公式贡献给Homebrew。