update
continuous-integration/drone/push Build is passing Details

master
icechen 2021-12-29 19:40:57 +08:00
parent de700cfdef
commit 745daedf91
5 changed files with 90 additions and 11 deletions

View File

@ -50,20 +50,33 @@ func (p *plugin) Find(ctx context.Context, req *config.Request) (*drone.Config,
// 4. 根据文件树以及原始配置文件的信息组装需要构建的服务的ci信息 // 4. 根据文件树以及原始配置文件的信息组装需要构建的服务的ci信息
// 4.1 api // 4.1 api
modifiedApiList := getModifiedApi(cfg.Api, modifiedFileList) modifiedApiList := getModifiedApi(cfg.Api, modifiedFileList)
destinationApi, err := modifiedApiList.toDestinationConfig()
if err != nil {
logrus.Error(err)
return nil, err
}
_ = modifiedApiList
// 4.2 service // 4.2 service
modifiedServiceList := getModifiedService(cfg.Service, modifiedFileList)
destinationService, err := modifiedServiceList.toDestinationConfig()
if err != nil {
logrus.Error(err)
return nil, err
}
// 5. 组装所有ci信息并输出 // 5. 组装所有ci信息并输出
return nil, nil return &drone.Config{
Data: destinationApi + "\n\n" + destinationService,
Kind: "pipeline",
}, nil
} }
func getGitClient(req *config.Request) git.Client { func getGitClient(req *config.Request) git.Client {
return git.New(req.Repo.Namespace, req.Repo.Name, req.Build.After, req.Repo.Config) return git.New(req.Repo.Namespace, req.Repo.Name, req.Build.After, req.Repo.Config)
} }
func getModifiedApi(api []Api, modifiedFileList []string) []Api { func getModifiedApi(api ApiList, modifiedFileList []string) ApiList {
ret := make([]Api, 0) ret := make(ApiList, 0)
tempIndex := NewSet() tempIndex := NewSet()
for i, a := range api { for i, a := range api {
for _, file := range modifiedFileList { for _, file := range modifiedFileList {
@ -78,3 +91,20 @@ func getModifiedApi(api []Api, modifiedFileList []string) []Api {
} }
return ret return ret
} }
func getModifiedService(service ServiceList, modifiedFileList []string) ServiceList {
ret := make(ServiceList, 0)
tempIndex := NewSet()
for i, s := range service {
for _, file := range modifiedFileList {
if strings.HasSuffix(file, s.Root) {
tempIndex.Add(i)
}
}
}
for _, i := range tempIndex.ToSlice() {
ret = append(ret, service[i])
}
return ret
}

View File

@ -2,26 +2,58 @@ package config_handler
import "git.icechen.cn/pkg/drone_plugin/go_handler" import "git.icechen.cn/pkg/drone_plugin/go_handler"
type ApiHandler interface { type Handler interface {
ToDestinationConfig() (string, error) ToDestinationConfig() (string, error)
} }
func (al ApiList) toDestinationConfig() (string, error) { func (al ApiList) toDestinationConfig() (string, error) {
return "", nil retConfig := ""
for _, api := range al {
config, err := api.toDestinationConfig()
if err != nil {
return "", err
}
retConfig += config + "\n\n---\n\n"
}
return retConfig, nil
} }
func (a Api) toDestinationConfig() (string, error) { func (a Api) toDestinationConfig() (string, error) {
var handler ApiHandler var handler Handler
switch a.Type { switch a.Type {
case go_handler.TypeGolang: case go_handler.TypeGolang:
handler = go_handler.GoApiHandler{} handler = go_handler.GoApiHandler{
Name: a.Name,
Root: a.Root,
Port: a.Port,
}
} }
return handler.ToDestinationConfig() return handler.ToDestinationConfig()
} }
func (sl ServiceList) toDestinationConfig() { func (sl ServiceList) toDestinationConfig() (string, error) {
retConfig := ""
for _, service := range sl {
config, err := service.toDestinationConfig()
if err != nil {
return "", err
}
retConfig += config + "\n\n---\n\n"
}
return retConfig, nil
} }
func (s Service) toDestinationConfig() { func (s Service) toDestinationConfig() (string, error) {
var handler Handler
switch s.Type {
case go_handler.TypeGolang:
handler = go_handler.GoApiHandler{
Name: s.Name,
Root: s.Root,
Port: s.Port,
}
}
return handler.ToDestinationConfig()
} }

View File

@ -21,6 +21,7 @@ type (
Name string `json:"name" yaml:"name"` Name string `json:"name" yaml:"name"`
Root string `json:"root" yaml:"root"` Root string `json:"root" yaml:"root"`
Type string `json:"type" yaml:"type"` Type string `json:"type" yaml:"type"`
Port string `json:"port" yaml:"port"`
} }
) )
@ -30,6 +31,7 @@ type (
Name string `json:"name" yaml:"name"` Name string `json:"name" yaml:"name"`
Root string `json:"root" yaml:"root"` Root string `json:"root" yaml:"root"`
Type string `json:"type" yaml:"type"` Type string `json:"type" yaml:"type"`
Port string `json:"port" yaml:"port"`
} }
) )

View File

@ -13,7 +13,11 @@ steps:
- go test -v - go test -v
` `
type GoApiHandler struct{} type GoApiHandler struct {
Name string
Root string
Port string
}
func (GoApiHandler) ToDestinationConfig() (string, error) { func (GoApiHandler) ToDestinationConfig() (string, error) {
return "", nil return "", nil

View File

@ -0,0 +1,11 @@
package go_handler
type GoServiceHandler struct {
Name string
Root string
Port string
}
func (GoServiceHandler) ToDestinationConfig() (string, error) {
return "", nil
}