竹子能改变JIRA中机票的状态吗

竹子能改变JIRA中机票的状态吗,jira,bamboo,Jira,Bamboo,我们有一个与JIRA集成的竹子环境 每当开发人员向git提交一个固定问题时,他都会在提交消息中记录问题编号,事实上,我可以在Bambol中看到该问题的正确链接,这将导致JIRA中的票证 我想知道——Bambor有没有办法自动将提交到构建的每个票据的票据状态设置为“Ready for QA” 例如,如果我启动一个新构建,在JIRA中提交ISSUE-123,Bambol会将ISSUE-123状态设置为“Ready for QA”是的,Bambol可以更改JIRA中票据的状态。但你需要施展一点魔法 首

我们有一个与JIRA集成的竹子环境

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

我想知道——Bambor有没有办法自动将提交到构建的每个票据的票据状态设置为“Ready for QA”


例如,如果我启动一个新构建,在JIRA中提交ISSUE-123,Bambol会将ISSUE-123状态设置为“Ready for QA”

是的,Bambol可以更改JIRA中票据的状态。但你需要施展一点魔法

首先,你需要学会如何使用。这是一个伟大的工具(值得一提的是,它已成为2010年的冠军),用于自动化日常JIRA相关任务。实际上,很少有版本的这个工具允许通过命令行脚本自动执行几乎所有的Atlassian工具(JIRA、Confluence、Bambol、Crucible、Fisheye、Stash)。尽管有点慢,但它几乎可以做任何事情,包括更改问题状态。请注意,它既可以用作JIRA插件,也可以用作独立的命令行工具。您需要在运行Bambole build agent的计算机上安装独立版本的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\u TRANSITION\u ID
,只要它指定将使用哪个工作流转换,以便将JIRA问题转换为您实际需要的状态。要查找
工作流\u转换\u ID
,您需要检查用于ISSUE-123的工作流。通常,您将快速跟踪具有相同问题类型的问题(例如,Bug、增强等)。此外,通常具有相同问题类型的问题具有相同的工作流(例如,错误工作流)

您需要进入JIRA的管理部分并找到该工作流。然后,您需要找出导致更新后问题状态的所有转换的ID。在您的情况下,您需要找到“准备好进行QA”状态及其所有传入的转换。写下这些转换的ID,并在以后使用它们,以替换模板中的
WORKFLOW\u TRANSITION\u 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”状态的转换(如果工作流实际使用该状态),就像您在上一个工作流中所做的那样

如果与所有可用的命令行选项及其值混淆,请将其用作命令行选项参考

在您确定了脚本的内容后,您需要将它包含到Bambol使用的构建脚本中,该脚本将快速跟踪问题到所需状态(在您的示例中为“Ready for QA”)

下一步是将快速跟踪脚本的内容存储到文件中:

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
./build.sh -j ${bamboo.issueKey} 
ant -Djirakey=${bamboo.issueKey}
mvn -Djirakey=${bamboo.issueKey}
<exec executable="bash" dir=".">
   <arg value="build.sh"/>
   <arg value="-j"/>
   <arg value="${jirakey}"/>
</exec>
请注意,它使用
-j
选项为脚本指定JIRA issue key作为命令行参数

其他一切都取决于您使用的构建管理工具(Ant、Maven或纯bash)。但是,在任何情况下,您都可以将jira键(Bambor从git注释中获取)作为命令行选项传递给您在Bambol上使用的构建脚本:

Bash:

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
./build.sh -j ${bamboo.issueKey} 
ant -Djirakey=${bamboo.issueKey}
mvn -Djirakey=${bamboo.issueKey}
<exec executable="bash" dir=".">
   <arg value="build.sh"/>
   <arg value="-j"/>
   <arg value="${jirakey}"/>
</exec>
Ant:

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
./build.sh -j ${bamboo.issueKey} 
ant -Djirakey=${bamboo.issueKey}
mvn -Djirakey=${bamboo.issueKey}
<exec executable="bash" dir=".">
   <arg value="build.sh"/>
   <arg value="-j"/>
   <arg value="${jirakey}"/>
</exec>
Maven:

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
./build.sh -j ${bamboo.issueKey} 
ant -Djirakey=${bamboo.issueKey}
mvn -Djirakey=${bamboo.issueKey}
<exec executable="bash" dir=".">
   <arg value="build.sh"/>
   <arg value="-j"/>
   <arg value="${jirakey}"/>
</exec>
您需要的最后一步是为您使用的构建管理工具调整快速跟踪代码

Ant(build.xml):

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
./build.sh -j ${bamboo.issueKey} 
ant -Djirakey=${bamboo.issueKey}
mvn -Djirakey=${bamboo.issueKey}
<exec executable="bash" dir=".">
   <arg value="build.sh"/>
   <arg value="-j"/>
   <arg value="${jirakey}"/>
</exec>

用于从构建脚本执行
build.sh
的插件

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

注意:我没有测试这些脚本中的任何一个,因为目前我没有安装竹子,也没有机会尝试使用CI服务器进行快速跟踪。所以,要小心,确保你明白你在做什么


希望我的建议能帮助你实现你想要的。祝你好运

我知道已经有一个答案被接受了,这确实是正确的答案

我认为Atlassian CLI缺少在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
#
需要“公式”
#用于安装atlassian CLI工具的自制公式
类NewsAtlassianCli<公式
版本“3.6.0”
主页'https://marketplace.atlassian.com/plugins/org.swift.atlassian.cli'
url'https://marketplace.atlassian.com/download/plugins/org.swift.atlassian.cli/version/360'
sha1'a56aed6b6fe19a3b59998f9aed8da0077bc9d441'
#依赖项(如果有)
#安装
def安装
#这是垃圾
放置“清理windows内容和示例…”
rm Dir[“*.bat”]
rm_rf“示例”
#修补并移动
放置“修补shell脚本并将其移动到bin…”
#通过更新lib文件夹的路径进行修补
目录['*.sh'].每一个都有| f|
系统“sed-i-e's,/lib,/../lib,g'#{f}”
结束
#将“全部”移动到垃圾箱
Dir.mkdir“bin”
目录['*.sh'],每个{f | mv f,“bin/atlas”-#{