簡體   English   中英

Bamboo可以在JIRA中更改門票的狀態

[英]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噪音和示例。

然后它修復了文件夾結構。 所有工具集通常都有binlib和其他文件夾。 Homebrew然后在/ usr / local / bin ,* / usr / local / lib等中創建鏈接。

出於我不太了解的原因,Atlassian忽略了這條規則,因此工具無法正確安裝。

修復它的一種方法是將所有可執行文件移動到bin文件夾,並通過使用../ lib / ...預先添加對lib / ...的所有引用來修補它們。

我還決定刪除.sh並在atlas-之前添加所有可執行文件,因為atlas-allallall.sh好得多。

我仍然想要為Homebrew貢獻這個公式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM