Bamboo可以在JIRA中更改门票的状态

Oph*_*erV 7 jira bamboo

我们在Bamboo环境中设置了JIRA集成.

每当开发人员向git提交一个固定的问题时,他都会在提交消息中注明问题编号,实际上我可以在Bamboo中看到该问题的正确链接,这会导致JIRA中的票证.

我在想 - 有没有办法让Bamboo自动将每张承诺构建的门票的门票状态设置为"Ready for QA"?

例如,如果我在JIRA中启动了一个提交了ISSUE-123的新版本,Bamboo会将ISSUE-123状态设置为"Ready for QA"?

alt*_*ern 8

是的,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 
Run Code Online (Sandbox Code Playgroud)

将模板选项值替换为实际值.重要的是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
Run Code Online (Sandbox Code Playgroud)

如果您需要快速跟踪其他问题类型以及工作流程的问题,您将需要找到这些工作流程并找到导致"准备好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
Run Code Online (Sandbox Code Playgroud)

请注意,它使用-j选项以将脚本的JIRA问题密钥指定为命令行参数.

其他一切都取决于您使用的构建管理工具(Ant,Maven或仅仅是简单的bash).但是,无论如何,你将能够传递jira键(竹子从git注释中获取)作为你在Bamboo上使用的构建脚本的命令行选项:

击:

./build.sh -j ${bamboo.issueKey} 
Run Code Online (Sandbox Code Playgroud)

蚂蚁:

ant -Djirakey=${bamboo.issueKey}
Run Code Online (Sandbox Code Playgroud)

Maven的:

mvn -Djirakey=${bamboo.issueKey}
Run Code Online (Sandbox Code Playgroud)

您需要的最后一步是为您使用的构建管理工具调整快速跟踪代码.

Ant(build.xml):

<exec executable="bash" dir=".">
   <arg value="build.sh"/>
   <arg value="-j"/>
   <arg value="${jirakey}"/>
</exec>
Run Code Online (Sandbox Code Playgroud)

对于Maven来说,它要复杂得多.使用maven exec插件build.sh从您的构建脚本执行.

为了避免编写复杂的构建脚本,您可以选择在Bamboo上添加将在成功构建后运行的独立构建步骤.但在这种情况下,当构建仍在运行时,您将无法更新问题状态(实际上,不确定,您希望这样做).通常添加独立构建步骤就足以实现您想要的效果../build.sh -j ${bamboo.issueKey}在Bamboo上添加新的构建步骤时,只需在"Argument"字段中输入.

注意:我没有测试任何这些脚本,因为目前我没有安装Bamboo,也没有机会尝试CI服务器的快速跟踪.所以,要小心,确保你明白自己在做什么.

希望我的建议可以帮助您实现您想要的目标.祝好运!