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{}))
|
Writes(devops.ResJenkinsfile{}))
|
||||||
|
|
||||||
// match /pipeline-model-converter/toJson
|
// 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").
|
webservice.Route(webservice.POST("/tojson").
|
||||||
To(projectPipelineHandler.ToJson).
|
To(projectPipelineHandler.ToJson).
|
||||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsfileTag}).
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.DevOpsJenkinsfileTag}).
|
||||||
@@ -621,8 +628,8 @@ func AddPipelineToWebService(webservice *restful.WebService, devopsClient devops
|
|||||||
Produces("application/json", "charset=utf-8").
|
Produces("application/json", "charset=utf-8").
|
||||||
Doc("Convert jenkinsfile to json format. Usually the frontend uses json to show or edit pipeline").
|
Doc("Convert jenkinsfile to json format. Usually the frontend uses json to show or edit pipeline").
|
||||||
Reads(devops.ReqJenkinsfile{}).
|
Reads(devops.ReqJenkinsfile{}).
|
||||||
Returns(http.StatusOK, RespOK, devops.ResJson{}).
|
Returns(http.StatusOK, RespOK, map[string]interface{}{}).
|
||||||
Writes(devops.ResJson{}))
|
Writes(map[string]interface{}{}))
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ type DevopsOperator interface {
|
|||||||
CheckCron(projectName string, req *http.Request) (*devops.CheckCronRes, error)
|
CheckCron(projectName string, req *http.Request) (*devops.CheckCronRes, error)
|
||||||
|
|
||||||
ToJenkinsfile(req *http.Request) (*devops.ResJenkinsfile, 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 {
|
type devopsOperator struct {
|
||||||
@@ -932,7 +932,7 @@ func (d devopsOperator) ToJenkinsfile(req *http.Request) (*devops.ResJenkinsfile
|
|||||||
return res, err
|
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))
|
res, err := d.devopsClient.ToJson(convertToHttpParameters(req))
|
||||||
if err != nil {
|
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) {
|
func (d *Devops) ToJenkinsfile(httpParameters *devops.HttpParameters) (*devops.ResJenkinsfile, error) {
|
||||||
return nil, nil
|
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
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -872,7 +872,7 @@ func (j *Jenkins) ToJenkinsfile(httpParameters *devops.HttpParameters) (*devops.
|
|||||||
return res, err
|
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{
|
PipelineOjb := &Pipeline{
|
||||||
HttpParameters: httpParameters,
|
HttpParameters: httpParameters,
|
||||||
Jenkins: j,
|
Jenkins: j,
|
||||||
|
|||||||
@@ -856,19 +856,10 @@ func (p *Pipeline) ToJenkinsfile() (*devops.ResJenkinsfile, error) {
|
|||||||
return &jenkinsfile, err
|
return &jenkinsfile, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pipeline) ToJson() (*devops.ResJson, error) {
|
func (p *Pipeline) ToJson() (result map[string]interface{}, err error) {
|
||||||
res, err := p.Jenkins.SendPureRequest(p.Path, p.HttpParameters)
|
var data []byte
|
||||||
if err != nil {
|
if data, err = p.Jenkins.SendPureRequest(p.Path, p.HttpParameters); err == nil {
|
||||||
klog.Error(err)
|
err = json.Unmarshal(data, &result)
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
return
|
||||||
var toJson devops.ResJson
|
|
||||||
err = json.Unmarshal(res, &toJson)
|
|
||||||
if err != nil {
|
|
||||||
klog.Error(err)
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &toJson, err
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1025,40 +1025,6 @@ type ReqJenkinsfile struct {
|
|||||||
Jenkinsfile string `json:"jenkinsfile,omitempty" description:"jenkinsfile"`
|
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 {
|
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."`
|
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 {
|
Links struct {
|
||||||
@@ -1202,5 +1168,5 @@ type PipelineOperator interface {
|
|||||||
CheckScriptCompile(projectName, pipelineName string, httpParameters *HttpParameters) (*CheckScript, error)
|
CheckScriptCompile(projectName, pipelineName string, httpParameters *HttpParameters) (*CheckScript, error)
|
||||||
CheckCron(projectName string, httpParameters *HttpParameters) (*CheckCronRes, error)
|
CheckCron(projectName string, httpParameters *HttpParameters) (*CheckCronRes, error)
|
||||||
ToJenkinsfile(httpParameters *HttpParameters) (*ResJenkinsfile, 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