我们要求强制用户将用户故事ID放在每个SVN提交注释中。将有一个precommit钩子,它将检查注释是否以User Story编号开头(只是一个正则表达式模式匹配)。验证结束后,我们必须验证此用户故事是否确实存在于集会中。
我试图从集会宁静的API指南中获得一些有用的想法,但无法成功。我无力地认识到它与HierarchialRequirement有关,但这种知识还不够。
请告诉我如何说出用户故事编号(格式为US12345)对于给定工作区是否有效。
@nickm使用restful服务检索故事信息存在问题。 如果我给出正确的用户故事ID,例如US12345,它可以通过获取信息按预期工作。 但是当我给出像US123451111111这样的无效用户ID时,它会抛出解析错误("无法解析US123451111111")。对于提供给restful服务的所有无效故事ID,情况并非如此。如果我给出US12345cccccc(一个有效的storyID后跟aplhabets),我仍然得到正确的用户故事US12345的回复。
请告知如何解决此问题。
谢谢, VENU
答案 0 :(得分:0)
以下是基于Rally REST toolkit for Ruby的Ruby脚本示例,您可以对其进行自定义,以便precommit挂钩调用它来查看故事是否实际存在于工作空间中
编写时,需要运行命令行参数,例如
ruby find_story.rb US123
require 'rally_api'
headers = RallyAPI::CustomHttpHeader.new()
headers.name = "find story"
headers.vendor = "Nick M RallyLab"
headers.version = "1.0"
config = {:base_url => "https://rally1.rallydev.com/slm"}
config[:api_key] = "_abc123"
config[:workspace] = "W1"
config[:project] = "Sample Project"
config[:version] = "v2.0"
config[:headers] = headers #from RallyAPI::CustomHttpHeader.new()
unless ARGV.length == 1
puts "enter one argument, e.g. US123, with no spaces"
exit
end
story = nil
story_id = ARGV[0]
puts "find story by FormattedID: #{story_id}"
@rally = RallyAPI::RallyRestJson.new(config)
query = RallyAPI::RallyQuery.new()
query.type = :story
query.fetch = "Name,FormattedID,ScheduleState"
query.workspace = {"_ref" => "https://rally1.rallydev.com/slm/webservice/v2.0/workspace/111" }
query.query_string = "(FormattedID = \"#{story_id}\")"
result = @rally.find(query)
if(result.length > 0)
puts "found the story"
story = result.first
puts "FormattedID: #{story["FormattedID"]}, Name: #{story["Name"]}, ScheduleState: #{story["ScheduleState"]}"
else
puts "did not find a story with FormattedID #{story_id}"
end
该工具包提供了一个语法糖,但下面有hierarchicalrequirement
端点,通过FormattedID查询
(FormattedID = US123)
其中1111应替换为/workspace/1111
中工作区的对象ID:
https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement?workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/1111&query=(FormattedID%20%3D%20US123)&start=1&pagesize=20
您可以直接在浏览器中测试此网址。如果您当前未在同一浏览器的另一个选项卡中登录Rally,系统将提示您登录。