4
我試圖寫一個小腳本,SonarQube 6.0獲取代碼覆蓋率的一個項目的特定版本
獲取是在特定環境中的所有microserves的版本(解決)
對於每個項目/版本,獲取該確切版本的sonarqube代碼覆蓋率。我在爲特定項目的確切版本獲得sonarqube覆蓋率方面遇到問題。
我使用sonarqube 6.0(按我/ API /服務器/版本端點)(我希望我們能夠儘快升級到6.4最新的,但是這不是我的直接控制,我不希望等待它)
我的問題是 - 我不能將數據綁定在一起,因爲當我調用/ api/events端點時,我只能獲取項目的日期和覆蓋範圍,而不是版本。這裏是一個工作代碼示例(憑據和基本URL不包括在內)
我很樂意在任何語言中解決這個問題 - ruby,python,php,java,js,無論什麼作品。
#!/usr/bin/ruby
require 'rest-client'
require 'json'
require 'ostruct'
require 'date'
require 'nokogiri'
projects_endpoint='/api/projects/'
time_machine_endpoint='/api/timemachine/'
events_endpoint='/api/events'
rc = RestClient::Resource.new(server_url, user, pass)
sonarqube_projects = JSON.parse(rc["#{projects_endpoint}index?format=json"].get, object_class: OpenStruct)
coverage_per_project = sonarqube_projects.map {|sq_project|
# data shape: #<OpenStruct id="1687", k="foo-project", nm="foo-project", sc="PRJ", qu="TRK", lv="0.0.617", v=#<OpenStruct 0.0.617=#<OpenStruct sid="4197", d="2017-07-18T03:50:48+0000">>>
project_name = sq_project.k
url = "#{time_machine_endpoint}?format=json&resource=#{project_name}&metrics=coverage"
events = JSON.parse(rc[url].get, object_class: OpenStruct)
# data shape:
# [#<OpenStruct cols=[#<OpenStruct metric="coverage">], cells=[#<OpenStruct d="2016-12-08T19:26:24+0000", v=[68.0]>, #<OpenStruct d="2016-12-08T19:36:46+0000", v=[68.0]>, #<OpenStruct d="2016-12-08T20:26:28+0000", v=[79.5]>, #<OpenStruct d="2016-12-08T20:36:53+0000", v=[79.5]>]
# my problem is right here- I need a version of the app in each cells object so that I can search for one that matches my deployed version!
# idealistic pseudo-code that doesn't work:
correct_event = events.first {|event|
event.version == my_deployed_app_version
}
return {project_name: project_name, coverage: correct_event.coverage}
}
puts coverage_per_project
合同謝謝你把精力進入這個!當我使用/ project_analyses端點時,我得到了一個404。當我開始工作時,我會繼續嘗試 - 可能我在某處做錯了「project_name」字段。 =>「/ api/project_analyses/search?project = foo-api&category = VERSION」 2.4.0-rc1:396> events = JSON.parse(rc [url] .get,object_class:OpenStruct) RestClient ::未找到:404未找到 – compiledwrong
仔細閱讀您的問題,我已經看到您使用的是SonarQube的「舊版」。因此,我更新了我的答案,以提供有關使用哪個WS的提示,而不是我最初在答案中提供的新提示。 –
謝謝!它爲我工作:) – compiledwrong