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

master
icechen 2021-12-29 20:24:21 +08:00
parent 745daedf91
commit 9d2f9d6c32
5 changed files with 76 additions and 30 deletions

View File

@ -50,7 +50,7 @@ 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() destinationApi, err := modifiedApiList.toDestinationConfig(cfg.Name)
if err != nil { if err != nil {
logrus.Error(err) logrus.Error(err)
return nil, err return nil, err
@ -58,7 +58,7 @@ func (p *plugin) Find(ctx context.Context, req *config.Request) (*drone.Config,
// 4.2 service // 4.2 service
modifiedServiceList := getModifiedService(cfg.Service, modifiedFileList) modifiedServiceList := getModifiedService(cfg.Service, modifiedFileList)
destinationService, err := modifiedServiceList.toDestinationConfig() destinationService, err := modifiedServiceList.toDestinationConfig(cfg.Name)
if err != nil { if err != nil {
logrus.Error(err) logrus.Error(err)
return nil, err return nil, err

View File

@ -6,10 +6,10 @@ type Handler interface {
ToDestinationConfig() (string, error) ToDestinationConfig() (string, error)
} }
func (al ApiList) toDestinationConfig() (string, error) { func (al ApiList) toDestinationConfig(nameSpace string) (string, error) {
retConfig := "" retConfig := ""
for _, api := range al { for _, api := range al {
config, err := api.toDestinationConfig() config, err := api.toDestinationConfig(nameSpace)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -18,24 +18,25 @@ func (al ApiList) toDestinationConfig() (string, error) {
return retConfig, nil return retConfig, nil
} }
func (a Api) toDestinationConfig() (string, error) { func (a Api) toDestinationConfig(nameSpace string) (string, error) {
var handler Handler 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, NameSpace: nameSpace,
Root: a.Root, Name: a.Name,
Port: a.Port, Root: a.Root,
Port: a.Port,
} }
} }
return handler.ToDestinationConfig() return handler.ToDestinationConfig()
} }
func (sl ServiceList) toDestinationConfig() (string, error) { func (sl ServiceList) toDestinationConfig(nameSpace string) (string, error) {
retConfig := "" retConfig := ""
for _, service := range sl { for _, service := range sl {
config, err := service.toDestinationConfig() config, err := service.toDestinationConfig(nameSpace)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -44,14 +45,15 @@ func (sl ServiceList) toDestinationConfig() (string, error) {
return retConfig, nil return retConfig, nil
} }
func (s Service) toDestinationConfig() (string, error) { func (s Service) toDestinationConfig(nameSpace string) (string, error) {
var handler Handler var handler Handler
switch s.Type { switch s.Type {
case go_handler.TypeGolang: case go_handler.TypeGolang:
handler = go_handler.GoApiHandler{ handler = go_handler.GoApiHandler{
Name: s.Name, NameSpace: nameSpace,
Root: s.Root, Name: s.Name,
Port: s.Port, Root: s.Root,
Port: s.Port,
} }
} }

View File

@ -12,7 +12,7 @@ var cli *gitea.Client
func init() { func init() {
var err error var err error
cli, err = gitea.NewClient("https://git.icechen.cn/", gitea.SetToken("4322b0d361004db5dcea1741417f9e014a0f428f")) cli, err = gitea.NewClient("http://gitea:3000/", gitea.SetToken("4322b0d361004db5dcea1741417f9e014a0f428f"))
if err != nil { if err != nil {
panic(err) panic(err)
} }

View File

@ -1,24 +1,67 @@
package go_handler package go_handler
import (
"bytes"
"text/template"
)
const TypeGolang = "golang" const TypeGolang = "golang"
const defaultPipeline = ` const apiPipeline = `
kind: pipeline kind: pipeline
name: default type: docker
name: {{ .Name }}
steps: steps:
- name: build - name: build
image: golang image: plugins/docker
commands: volumes:
- go build - name: docker
- go test -v path: /var/run/docker.sock
settings:
username:
from_secret: reg_username
password:
from_secret: reg_password
repo: reg.icechen.cn/{{ .NameSpace }}/{{ .Name }}
registry: reg.icechen.cn
tags: ${DRONE_COMMIT:0:8}
- name: run
image: docker
volumes:
- name: docker
path: /var/run/docker.sock
commands:
- docker rm -f {{ .NameSpace }}-{{ .Name }}
- docker run -d --name="{{ .NameSpace }}-{{ .Name }}" reg.icechen.cn/{{ .NameSpace }}/{{ .Name }}:${DRONE_COMMIT:0:8}
volumes:
- name: docker
host:
path: /var/run/docker.sock
` `
type GoApiHandler struct { type GoApiHandler struct {
Name string NameSpace string
Root string Name string
Port string Root string
Port string
} }
func (GoApiHandler) ToDestinationConfig() (string, error) { func (gah GoApiHandler) ToDestinationConfig() (string, error) {
return "", nil var err error
t := template.New(gah.Name)
t, err = t.Parse(apiPipeline)
if err != nil {
return "", err
}
b := bytes.Buffer{}
err = t.Execute(&b, gah)
if err != nil {
return "", err
}
return b.String(), nil
} }

View File

@ -1,9 +1,10 @@
package go_handler package go_handler
type GoServiceHandler struct { type GoServiceHandler struct {
Name string NameSpace string
Root string Name string
Port string Root string
Port string
} }
func (GoServiceHandler) ToDestinationConfig() (string, error) { func (GoServiceHandler) ToDestinationConfig() (string, error) {