是的,Bamboo 可以更改 JIRA 中的票证状态。但是你需要做一点魔法。
首先,您需要学习如何使用JIRA 的 CLI 插件。它是一个很棒的工具(值得一提的是,它已成为2010 年atlassian codegeist 竞赛的获胜者),用于自动执行与 JIRA 相关的例行任务。实际上,这个工具的几个版本允许通过命令行脚本自动化几乎所有的 Atlassian 工具(JIRA、Confluence、Bamboo、Crucible、Fisheye、Stash)。尽管它有点慢,但它几乎可以做任何事情,包括问题状态更改。请注意,它既可以用作 JIRA 插件,也可以用作独立的命令行工具。您需要在运行 Bamboo 构建代理的机器上安装独立版本的 JIRA CLI 插件(这里是安装指南)。
为了在 JIRA 中快速跟踪问题(即 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、Enhancement 等)。此外,通常具有相同问题类型的问题具有相同的工作流程(例如,Bug 工作流程)。
您需要进入 JIRA 的管理部分并找到该工作流程。然后,您需要找出所有转换的ID,这些转换会导致更新后您希望问题具有的状态。在您的情况下,您需要找到“准备好进行 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 文档作为命令行选项参考。
在您确定了将问题快速跟踪到所需状态的脚本内容后(在您的情况下为“准备好进行 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
请注意,它使用-j
选项来将脚本的 JIRA 问题键指定为命令行参数。
其他一切都取决于您使用的构建管理工具(Ant、Maven 或只是简单的 bash)。但是,无论如何,您都可以将 jira 密钥(竹子从 git 注释中为您获取)作为您在 Bamboo 上使用的构建脚本的命令行选项传递:
重击:
./build.sh -j ${bamboo.issueKey}
蚂蚁:
ant -Djirakey=${bamboo.issueKey}
马文:
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 上添加独立构建步骤,该步骤将在成功构建后运行。但是在这种情况下,您将无法在构建仍在运行时更新问题状态(实际上,不确定,您想这样做)。通常添加独立构建步骤足以实现您想要的。只需./build.sh -j ${bamboo.issueKey}
在 Bamboo 上添加新的构建步骤时输入“参数”字段。
注意:我没有测试任何这些脚本,因为目前我没有安装竹子,也没有机会尝试 CI 服务器的快速跟踪。因此,请小心并确保您了解自己在做什么。
希望我的建议能帮助你实现你想要的。祝你好运!