Fix fields missing when convert Jenkinsfile to JSON
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
This commit is contained in:
@@ -614,6 +614,13 @@ func AddPipelineToWebService(webservice *restful.WebService, devopsClient devops
|
||||
Writes(devops.ResJenkinsfile{}))
|
||||
|
||||
// match /pipeline-model-converter/toJson
|
||||
/*
|
||||
* Considering the following reasons, we use a generic data struct here.
|
||||
* - A fixed go struct might need to change again once Jenkins has new features.
|
||||
* - No refer requirement for the specific data struct
|
||||
* Please read the official document if you want to know more details
|
||||
* https://github.com/jenkinsci/pipeline-model-definition-plugin/blob/fc8d22192d7d3a17badc3b8af7191a84bb7fd4ca/EXTENDING.md#conversion-to-json-representation-from-jenkinsfile
|
||||
*/
|
||||
webservice.Route(webservice.POST("/tojson").
|
||||
To(projectPipelineHandler.ToJson).
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsfileTag}).
|
||||
@@ -621,8 +628,8 @@ func AddPipelineToWebService(webservice *restful.WebService, devopsClient devops
|
||||
Produces("application/json", "charset=utf-8").
|
||||
Doc("Convert jenkinsfile to json format. Usually the frontend uses json to show or edit pipeline").
|
||||
Reads(devops.ReqJenkinsfile{}).
|
||||
Returns(http.StatusOK, RespOK, devops.ResJson{}).
|
||||
Writes(devops.ResJson{}))
|
||||
Returns(http.StatusOK, RespOK, map[string]interface{}{}).
|
||||
Writes(map[string]interface{}{}))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ type DevopsOperator interface {
|
||||
CheckCron(projectName string, req *http.Request) (*devops.CheckCronRes, error)
|
||||
|
||||
ToJenkinsfile(req *http.Request) (*devops.ResJenkinsfile, error)
|
||||
ToJson(req *http.Request) (*devops.ResJson, error)
|
||||
ToJson(req *http.Request) (map[string]interface{}, error)
|
||||
}
|
||||
|
||||
type devopsOperator struct {
|
||||
@@ -932,7 +932,7 @@ func (d devopsOperator) ToJenkinsfile(req *http.Request) (*devops.ResJenkinsfile
|
||||
return res, err
|
||||
}
|
||||
|
||||
func (d devopsOperator) ToJson(req *http.Request) (*devops.ResJson, error) {
|
||||
func (d devopsOperator) ToJson(req *http.Request) (map[string]interface{}, error) {
|
||||
|
||||
res, err := d.devopsClient.ToJson(convertToHttpParameters(req))
|
||||
if err != nil {
|
||||
|
||||
@@ -297,7 +297,7 @@ func (d *Devops) CheckCron(projectName string, httpParameters *devops.HttpParame
|
||||
func (d *Devops) ToJenkinsfile(httpParameters *devops.HttpParameters) (*devops.ResJenkinsfile, error) {
|
||||
return nil, nil
|
||||
}
|
||||
func (d *Devops) ToJson(httpParameters *devops.HttpParameters) (*devops.ResJson, error) {
|
||||
func (d *Devops) ToJson(httpParameters *devops.HttpParameters) (map[string]interface{}, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -872,7 +872,7 @@ func (j *Jenkins) ToJenkinsfile(httpParameters *devops.HttpParameters) (*devops.
|
||||
return res, err
|
||||
}
|
||||
|
||||
func (j *Jenkins) ToJson(httpParameters *devops.HttpParameters) (*devops.ResJson, error) {
|
||||
func (j *Jenkins) ToJson(httpParameters *devops.HttpParameters) (map[string]interface{}, error) {
|
||||
PipelineOjb := &Pipeline{
|
||||
HttpParameters: httpParameters,
|
||||
Jenkins: j,
|
||||
|
||||
@@ -856,19 +856,10 @@ func (p *Pipeline) ToJenkinsfile() (*devops.ResJenkinsfile, error) {
|
||||
return &jenkinsfile, err
|
||||
}
|
||||
|
||||
func (p *Pipeline) ToJson() (*devops.ResJson, error) {
|
||||
res, err := p.Jenkins.SendPureRequest(p.Path, p.HttpParameters)
|
||||
if err != nil {
|
||||
klog.Error(err)
|
||||
return nil, err
|
||||
func (p *Pipeline) ToJson() (result map[string]interface{}, err error) {
|
||||
var data []byte
|
||||
if data, err = p.Jenkins.SendPureRequest(p.Path, p.HttpParameters); err == nil {
|
||||
err = json.Unmarshal(data, &result)
|
||||
}
|
||||
|
||||
var toJson devops.ResJson
|
||||
err = json.Unmarshal(res, &toJson)
|
||||
if err != nil {
|
||||
klog.Error(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &toJson, err
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1025,40 +1025,6 @@ type ReqJenkinsfile struct {
|
||||
Jenkinsfile string `json:"jenkinsfile,omitempty" description:"jenkinsfile"`
|
||||
}
|
||||
|
||||
type ResJson struct {
|
||||
Status string `json:"status,omitempty" description:"status e.g. ok"`
|
||||
Data struct {
|
||||
Result string `json:"result,omitempty" description:"result e.g. success"`
|
||||
JSON struct {
|
||||
Pipeline struct {
|
||||
Stages []interface{} `json:"stages,omitempty" description:"stages"`
|
||||
Agent struct {
|
||||
Type string `json:"type,omitempty" description:"type"`
|
||||
Arguments []struct {
|
||||
Key string `json:"key,omitempty" description:"key"`
|
||||
Value struct {
|
||||
IsLiteral bool `json:"isLiteral,omitempty" description:"is literal or not"`
|
||||
Value string `json:"value,omitempty" description:"value"`
|
||||
} `json:"value,omitempty"`
|
||||
} `json:"arguments,omitempty"`
|
||||
} `json:"agent,omitempty"`
|
||||
Parameters struct {
|
||||
Parameters []struct {
|
||||
Name string `json:"name,omitempty" description:"name"`
|
||||
Arguments []struct {
|
||||
Key string `json:"key,omitempty" description:"key"`
|
||||
Value struct {
|
||||
IsLiteral bool `json:"isLiteral,omitempty" description:"is literal or not"`
|
||||
Value interface{} `json:"value,omitempty" description:"value"`
|
||||
} `json:"value,omitempty"`
|
||||
} `json:"arguments,omitempty"`
|
||||
} `json:"parameters,omitempty"`
|
||||
} `json:"parameters,omitempty"`
|
||||
} `json:"pipeline,omitempty"`
|
||||
} `json:"json,omitempty"`
|
||||
} `json:"data,omitempty"`
|
||||
}
|
||||
|
||||
type NodesDetail struct {
|
||||
Class string `json:"_class,omitempty" description:"It’s a fully qualified name and is an identifier of the producer of this resource's capability."`
|
||||
Links struct {
|
||||
@@ -1202,5 +1168,5 @@ type PipelineOperator interface {
|
||||
CheckScriptCompile(projectName, pipelineName string, httpParameters *HttpParameters) (*CheckScript, error)
|
||||
CheckCron(projectName string, httpParameters *HttpParameters) (*CheckCronRes, error)
|
||||
ToJenkinsfile(httpParameters *HttpParameters) (*ResJenkinsfile, error)
|
||||
ToJson(httpParameters *HttpParameters) (*ResJson, error)
|
||||
ToJson(httpParameters *HttpParameters) (map[string]interface{}, error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user