devops refactor (#1739)
* add devops client interface Signed-off-by: runzexia <runzexia@yunify.com> * direct return jenkins Signed-off-by: runzexia <runzexia@yunify.com> * add some interface Signed-off-by: runzexia <runzexia@yunify.com> * update Signed-off-by: runzexia <runzexia@yunify.com> * update interface Signed-off-by: runzexia <runzexia@yunify.com> * update Signed-off-by: runzexia <runzexia@yunify.com> * credential op structs Signed-off-by: runzexia <runzexia@yunify.com> * status Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update interface Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * credential handler Signed-off-by: runzexia <runzexia@yunify.com> * update devopsoperator func Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * get build sonar Signed-off-by: runzexia <runzexia@yunify.com> * sonar handler * mv code to cilent Signed-off-by: runzexia <runzexia@yunify.com> * update Signed-off-by: runzexia <runzexia@yunify.com> * project member handler Signed-off-by: runzexia <runzexia@yunify.com> * update pipeline operator interface Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add tenant devops handler Signed-off-by: runzexia <runzexia@yunify.com> * update merge Signed-off-by: runzexia <runzexia@yunify.com> * clean Signed-off-by: runzexia <runzexia@yunify.com> * fmt Signed-off-by: runzexia <runzexia@yunify.com> * update ListPipelineRuns Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * complate pipelineOperator interface Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update HttpParameters Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add pipeline steps interface Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update pipeline GetNodesDetail Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add s2i api Signed-off-by: runzexia <runzexia@yunify.com> * add branch pipeline interface and update handler Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add scan branch interface and update handler Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add common interface and update handler Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add SCM interface and update handler Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add handler Signed-off-by: runzexia <runzexia@yunify.com> * add fake s3 Signed-off-by: runzexia <runzexia@yunify.com> * add webhook&check interface and update handler Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * clean Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * clean Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * format Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add some func Signed-off-by: runzexia <runzexia@yunify.com> * clean code Signed-off-by: runzexia <runzexia@yunify.com> * implement interface Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * fix interface GetBranchArtifacts Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add s2ibinary upload test Signed-off-by: runzexia <runzexia@yunify.com> * tenant devops Signed-off-by: runzexia <runzexia@yunify.com> * update tenant Signed-off-by: runzexia <runzexia@yunify.com> * fake Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add some unit test Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add devops tenant handler Signed-off-by: runzexia <runzexia@yunify.com> * status Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * status Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * status Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update fake test Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update unit test and fake data Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update Co-authored-by: Xiaoyang Zhu <sunzhu@yunify.com>
This commit is contained in:
@@ -1,8 +1,68 @@
|
||||
package sonarqube
|
||||
|
||||
type Interface interface {
|
||||
//
|
||||
GetIssues()
|
||||
import (
|
||||
sonargo "github.com/kubesphere/sonargo/sonar"
|
||||
"k8s.io/klog"
|
||||
"kubesphere.io/kubesphere/pkg/simple/client/devops"
|
||||
)
|
||||
|
||||
//
|
||||
type SonarInterface interface {
|
||||
GetSonarResultsByTaskIds(taskId ...string) ([]*SonarStatus, error)
|
||||
}
|
||||
|
||||
type sonarQube struct {
|
||||
client *sonargo.Client
|
||||
}
|
||||
|
||||
const (
|
||||
SonarAnalysisActionClass = "hudson.plugins.sonar.action.SonarAnalysisAction"
|
||||
SonarMetricKeys = "alert_status,quality_gate_details,bugs,new_bugs,reliability_rating,new_reliability_rating,vulnerabilities,new_vulnerabilities,security_rating,new_security_rating,code_smells,new_code_smells,sqale_rating,new_maintainability_rating,sqale_index,new_technical_debt,coverage,new_coverage,new_lines_to_cover,tests,duplicated_lines_density,new_duplicated_lines_density,duplicated_blocks,ncloc,ncloc_language_distribution,projects,new_lines"
|
||||
SonarAdditionalFields = "metrics,periods"
|
||||
)
|
||||
|
||||
type SonarStatus struct {
|
||||
Measures *sonargo.MeasuresComponentObject `json:"measures,omitempty"`
|
||||
Issues *sonargo.IssuesSearchObject `json:"issues,omitempty"`
|
||||
GeneralAction *devops.GeneralAction `json:"generalAction,omitempty"`
|
||||
Task *sonargo.CeTaskObject `json:"task,omitempty"`
|
||||
}
|
||||
|
||||
func (s *sonarQube) GetSonarResultsByTaskIds(taskIds ...string) ([]*SonarStatus, error) {
|
||||
sonarStatuses := make([]*SonarStatus, 0)
|
||||
for _, taskId := range taskIds {
|
||||
sonarStatus := &SonarStatus{}
|
||||
taskOptions := &sonargo.CeTaskOption{
|
||||
Id: taskId,
|
||||
}
|
||||
ceTask, _, err := s.client.Ce.Task(taskOptions)
|
||||
if err != nil {
|
||||
klog.Errorf("get sonar task error [%+v]", err)
|
||||
continue
|
||||
}
|
||||
sonarStatus.Task = ceTask
|
||||
measuresComponentOption := &sonargo.MeasuresComponentOption{
|
||||
Component: ceTask.Task.ComponentKey,
|
||||
AdditionalFields: SonarAdditionalFields,
|
||||
MetricKeys: SonarMetricKeys,
|
||||
}
|
||||
measures, _, err := s.client.Measures.Component(measuresComponentOption)
|
||||
if err != nil {
|
||||
klog.Errorf("get sonar task error [%+v]", err)
|
||||
continue
|
||||
}
|
||||
sonarStatus.Measures = measures
|
||||
|
||||
issuesSearchOption := &sonargo.IssuesSearchOption{
|
||||
AdditionalFields: "_all",
|
||||
ComponentKeys: ceTask.Task.ComponentKey,
|
||||
Resolved: "false",
|
||||
Ps: "10",
|
||||
S: "FILE_LINE",
|
||||
Facets: "severities,types",
|
||||
}
|
||||
issuesSearch, _, err := s.client.Issues.Search(issuesSearchOption)
|
||||
sonarStatus.Issues = issuesSearch
|
||||
sonarStatuses = append(sonarStatuses, sonarStatus)
|
||||
}
|
||||
return sonarStatuses, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user