feat: 增加namespace
continuous-integration/drone/push Build is passing Details

master
icechen 2022-01-10 17:51:52 +08:00
parent 112ae73203
commit e38bf7e1af
12 changed files with 187 additions and 110 deletions

24
config/config.yaml 100644
View File

@ -0,0 +1,24 @@
reg:
registry: reg.icechen.cn
username: ananta
password: ananta01
kube:
zeus:
onl:
kube_api_server: https://paw.show:6443
kube_certificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWMrZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1USXlNakU0TVRNME1sb1hEVE14TVRJeU1ERTRNVE0wTWxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTE0zCjNDSGRweGRmMDMvR2xEME1Gb1VrYmJFR2VuRHl3U1pINERnbzZ6NzJZUGVyNi9WR3M2enVzTlRic0VKKzNHOUoKSlJteDVYUlVmZDhCVFVUblUzYVJQUFdtK0NEbDNDZERHUUdpYWNySldrMnZVaHQzdXBSbDhUOXdJL0YwejB0RgpWQW5qVmlWVmZndmIvNjliZnNQSjJtV3JPWWY3M25CVWs5VjFyRjRQRSs2cXFEUG1pTm1zb1F0SFdBNjBpclh2CkFtd3ZuMFo0S2RudFdWUlNVU3VXU21QaUlIQzVSdlZUa3QrR0hQcW5WRUl1YXlNcjlxTVI3eWRjdDJBNmptNTIKcnZ6NGlKdEV2blhFbGx3VS9QUkRoeEZjaldOTFM1akEyNEpZOVRjOE90Z2syM2FlY2NHSUZOeW9HcnRPTXVIZgpJVkQxdyt2TWVaQ0ZKMzVvdFhjQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZFakN1bEtxU0dKY2JxejUvOXVSQzBjVW1ybkFNQTBHQ1NxR1NJYjMKRFFFQkN3VUFBNElCQVFCN1RFZEtTdlNLb3F3b1FCUnZpTktlVTM0bWd5NUE2Q3JMQmwxUWQ1aVdkRitXWU1PRApub3JJOGJERmJUTy92VGpNUWo4eGJoNk5lbDdlenkxZU0wRFhHM0FESS9hVVM1VHlVaVlyNFpNd3NWY0ZaT2crCjJXam9uYzFUSzdHdk44TmdkYjZVZzUvUklVZis5S1pyZSsrQkgvRWJhMUNWU3JzcDRYNDJvOWFCQ0FzUE1zZmwKRHlCSHNiRk1Vb1BYZU5vaSsvTlZmamlvd2duVXJkY2puTUxXeUh3N3ZCSTJKeFE5Qy96MHVNVHNnU2VwRVk4ZApmSHd5R0M0Z1RTTzI0WGV2V0grb2ROOFpGQTJJZ1pJaHhhZ0dWeG1ZaWpyZ0N6dTBucWdxWUxlRitkb25jOUxMCmxFR0pxRU94R251NzU4aHJRSFlhK25QYk9heWlGbzlsOE93MwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
kube_token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlhNRC1VNk1pcXR1bEowR2pnWTNhQ0ZVTjU1YWs3d041ejFZdER6bmwxR28ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJ6ZXVzIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRyb25lLXRva2VuLWpzeDQyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRyb25lIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiOWQ3MmU1ZWEtMjk4Mi00ZWFkLWIyMzUtOTBlMjg2NjA1ZTY1Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OnpldXM6ZHJvbmUifQ.IMiYpJ5ckUESrGMaea_OpPx_D0lCg7OwhwHopKBDJmZdFHLXa321p27D2MqU8br3UtqrRnda-If77821VsPZ_h_VsILY_yxLGBS8lLEn8b2hSRmc3QIjAFZ9u4lFxON2EqOvQT2dzuZXtn_FgYx_RFwC78RleY7Wz7h6ikEVYghc7Z19FwlAGx8k9MDpDmNgYxGdGqoYt34KXAo2Syj1knzDrdheJvpkOAsmTluK__OHF9y3kAk-HPBR964EWj3eQlfJUwPxsedYgyKE1ypaOTaW4H4ZMfIzuW-RVmLQKJtYhei1IxMFWvYuhJ_RAxmKgKZarYjvmpTlZr7fzwLp2g
test:
kube_api_server: https://new.icechen.cn:6443
kube_certificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUyTkRFek5URTJNekl3SGhjTk1qSXdNVEExTURNd01ETXlXaGNOTXpJd01UQXpNRE13TURNeQpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUyTkRFek5URTJNekl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFRM1N3L1M3SFBFMnJ5WnR1ZE1TWlJzSzdROUZmUmJ2bDZldFBBRmZreU0KT1gwOEhRaTZPQWpidXh3azE0MG54b2p6T2trRHZnWkZNTmFhcUZJSlhoWEtvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVS9aMmdWVStIR0U0Mm43dnNjNEJQCmU3engyb2t3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU1xa1l4VEhSWjN4c0E0bUYxRFhnb3pIWjJMMEF3eGcKRVJUQnZDZzQvVmZ6QWlBV0gxa2k4UjczNk5MRmJHNW80bFhGeHIyYlVDcWlCRW9tU2pVdHd2VTA2QT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
kube_token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImNpSTl3LWZ5SFlZcklEbzlldlY1NnYtWGR2MjFIUm9neFpzWEgxblBQTWsifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJ6ZXVzIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRyb25lLXRva2VuLWdrMjlxIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRyb25lIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiODkwZDkxMTgtNzU0ZS00YjYwLTkzYjQtMmQyMGFjZDE5ODliIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OnpldXM6ZHJvbmUifQ.Y77dPrm9zscU6h-3wacvd8qtQBF0HR8cEX3ywiGKOu25Oqu92h8VlS-kd8QWKooOEnxgkY2t2dj7XmwMe79i85VFlNtAv5fXYjjF2bFfS_ST5GqQXeHArMRHtzPvB8BkLqDo2DfIOphyzKPj4eADw6tke5QsYheCRpV4RCyXbExTTy8Gco8jcvERkkV6Q8hpYEPnjKMyyfPURFul1ageSsWrjFTJ3E2alZOKjo6jgPlVeoCK5KzWrZtn8F0ihmFtpFWQ334uWs-KuwIm6RjiusL_3eisRY3eSqF0U2pwyIF2wyuV0AOt6iGXkh63MWMh-1LjJoftR2vPwt7pDjUL_w
brahma:
onl:
kube_api_server: https://paw.show:6443
kube_certificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWMrZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1USXlNakU0TVRNME1sb1hEVE14TVRJeU1ERTRNVE0wTWxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTE0zCjNDSGRweGRmMDMvR2xEME1Gb1VrYmJFR2VuRHl3U1pINERnbzZ6NzJZUGVyNi9WR3M2enVzTlRic0VKKzNHOUoKSlJteDVYUlVmZDhCVFVUblUzYVJQUFdtK0NEbDNDZERHUUdpYWNySldrMnZVaHQzdXBSbDhUOXdJL0YwejB0RgpWQW5qVmlWVmZndmIvNjliZnNQSjJtV3JPWWY3M25CVWs5VjFyRjRQRSs2cXFEUG1pTm1zb1F0SFdBNjBpclh2CkFtd3ZuMFo0S2RudFdWUlNVU3VXU21QaUlIQzVSdlZUa3QrR0hQcW5WRUl1YXlNcjlxTVI3eWRjdDJBNmptNTIKcnZ6NGlKdEV2blhFbGx3VS9QUkRoeEZjaldOTFM1akEyNEpZOVRjOE90Z2syM2FlY2NHSUZOeW9HcnRPTXVIZgpJVkQxdyt2TWVaQ0ZKMzVvdFhjQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZFakN1bEtxU0dKY2JxejUvOXVSQzBjVW1ybkFNQTBHQ1NxR1NJYjMKRFFFQkN3VUFBNElCQVFCN1RFZEtTdlNLb3F3b1FCUnZpTktlVTM0bWd5NUE2Q3JMQmwxUWQ1aVdkRitXWU1PRApub3JJOGJERmJUTy92VGpNUWo4eGJoNk5lbDdlenkxZU0wRFhHM0FESS9hVVM1VHlVaVlyNFpNd3NWY0ZaT2crCjJXam9uYzFUSzdHdk44TmdkYjZVZzUvUklVZis5S1pyZSsrQkgvRWJhMUNWU3JzcDRYNDJvOWFCQ0FzUE1zZmwKRHlCSHNiRk1Vb1BYZU5vaSsvTlZmamlvd2duVXJkY2puTUxXeUh3N3ZCSTJKeFE5Qy96MHVNVHNnU2VwRVk4ZApmSHd5R0M0Z1RTTzI0WGV2V0grb2ROOFpGQTJJZ1pJaHhhZ0dWeG1ZaWpyZ0N6dTBucWdxWUxlRitkb25jOUxMCmxFR0pxRU94R251NzU4aHJRSFlhK25QYk9heWlGbzlsOE93MwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
kube_token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlhNRC1VNk1pcXR1bEowR2pnWTNhQ0ZVTjU1YWs3d041ejFZdER6bmwxR28ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJicmFobWEiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoiZHJvbmUtdG9rZW4tY3pxZ3AiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZHJvbmUiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjZmY0NjFmZC01MGE2LTRkMzMtODAxNy0zNGNmMzdkNTAwMWUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6YnJhaG1hOmRyb25lIn0.SYVgYctcXDYOXg6y92b5vEpSPPPo7MXIwhZ008boz0V07tAIhNyGygFOiEBxnaWEQFqOPnuIUi1e_HAUbOOqWFGq0Do4A0yAUvb7aMYVAvaRTb7eB2UbW4MLPKyJWk00MYrq9Zxbrqh38DrWeF8nCpx6LP2m30uYgOW2OcKBSsR5cZCC6p3p_QoOGNFWhIoBrjShO2eFG64nRBB1g9uTbGulvjfS_t9Nyh_umxdaPRMv0yWL0o6wKIjN_8eunlZVZgANxvrUTfyLAA3MlVZ1FmyzbU2BrkRc6Vnpme_0o9Q_5YADdFs8YwgcMpDz1_8wOlOAaGBYN4lJyiiz_QfjKA
test:
kube_api_server: https://new.icechen.cn:6443
kube_certificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUyTkRFek5URTJNekl3SGhjTk1qSXdNVEExTURNd01ETXlXaGNOTXpJd01UQXpNRE13TURNeQpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUyTkRFek5URTJNekl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFRM1N3L1M3SFBFMnJ5WnR1ZE1TWlJzSzdROUZmUmJ2bDZldFBBRmZreU0KT1gwOEhRaTZPQWpidXh3azE0MG54b2p6T2trRHZnWkZNTmFhcUZJSlhoWEtvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVS9aMmdWVStIR0U0Mm43dnNjNEJQCmU3engyb2t3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU1xa1l4VEhSWjN4c0E0bUYxRFhnb3pIWjJMMEF3eGcKRVJUQnZDZzQvVmZ6QWlBV0gxa2k4UjczNk5MRmJHNW80bFhGeHIyYlVDcWlCRW9tU2pVdHd2VTA2QT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
kube_token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImNpSTl3LWZ5SFlZcklEbzlldlY1NnYtWGR2MjFIUm9neFpzWEgxblBQTWsifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJicmFobWEiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoiZHJvbmUtdG9rZW4teHJoczIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZHJvbmUiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIxNWMwOWFhYi1jNzc1LTRiNTUtOTFiNy1hYjM3ZmQ3NmQxZDMiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6YnJhaG1hOmRyb25lIn0.dUB76nLlzOqJtylHA4k34GMQVxVNBO440iUibcA817SODS6ZExL6HPrVhLXjrrcUyEpp7zSsojeh-BBX8L23AtX--tFHq9tUoo-0MrjT_s9BnmSvDSrLHOyk0-5CyXuYaCW_Bf8kqE-zt4yg3isyV2W8tO0nFX3fILbLRU7vWvP0wd_n_KLrn1QENF-iQQoDEaoO-Cfy6DQSoHMcwuUcgbAJYUGVP92DteyXgpwArzsACtbuEq1uCXezy_5ZLHEy_wqKmVndSQoaUgU7Z4Fir6VdKXa6p0yi7WfYALp4j1tKTDLbEixraUqDoHSTZKMD46DhY1Jr8SSjF76pMYojbQ

58
config/kube.go 100644
View File

@ -0,0 +1,58 @@
package config
import (
_ "embed"
"gopkg.in/yaml.v3"
)
//go:embed "config.yaml"
var configData []byte
type Config struct {
Reg Registry `json:"reg" yaml:"reg"`
Kube map[string]Kube `json:"kube" yaml:"kube"`
}
// Registry 镜像仓库信息
type Registry struct {
Registry string `json:"registry" yaml:"registry"`
Username string `json:"username" yaml:"username"`
Password string `json:"password" yaml:"password"`
}
// Kube kube信息
type Kube struct {
Onl KubeConfig `json:"onl" yaml:"onl"`
Test KubeConfig `json:"test" yaml:"test"`
}
type KubeConfig struct {
KubeApiServer string `json:"kube_api_server" yaml:"kube_api_server"`
KubeCertificate string `json:"kube_certificate" yaml:"kube_certificate"`
KubeToken string `json:"kube_token" yaml:"kube_token"`
}
var config Config
func init() {
err := yaml.Unmarshal(configData, &config)
if err != nil {
panic(err)
}
}
// GetOnlKubeConfigByNamespace 获取namespace的线上kube配置
func GetOnlKubeConfigByNamespace(namespace string) KubeConfig {
return config.Kube[namespace].Onl
}
// GetTestKubeConfigByNamespace 获取namespace的测试kube配置
func GetTestKubeConfigByNamespace(namespace string) KubeConfig {
return config.Kube[namespace].Onl
}
// GetRegistryConfig 获取镜像仓库配置
func GetRegistryConfig() Registry {
return config.Reg
}

View File

@ -5,10 +5,10 @@ import (
"git.icechen.cn/pkg/drone_plugin/go_handler"
)
func (al ApiList) toDestinationConfig(nameSpace string, deployEnv consts.Env, serviceEnv map[string]string) (string, error) {
func (al ApiList) toDestinationConfig(deployEnv consts.Env) (string, error) {
retConfig := ""
for _, api := range al {
config, err := api.toDestinationConfig(nameSpace, deployEnv, serviceEnv)
config, err := api.toDestinationConfig(deployEnv)
if err != nil {
return "", err
}
@ -17,20 +17,19 @@ func (al ApiList) toDestinationConfig(nameSpace string, deployEnv consts.Env, se
return retConfig, nil
}
func (a Api) toDestinationConfig(nameSpace string, deployEnv consts.Env, serviceEnv map[string]string) (string, error) {
func (a Api) toDestinationConfig(deployEnv consts.Env) (string, error) {
var handler Handler
switch a.Type {
case go_handler.TypeGolang:
handler = go_handler.GoApiHandler{
NameSpace: nameSpace,
Name: a.Name,
AliasName: a.AliasName,
Root: a.Root,
Port: a.Port,
Host: a.Host,
Path: a.Path,
ServiceEnv: serviceEnv,
DeployEnv: deployEnv,
NameSpace: a.Namespace,
Name: a.Name,
AliasName: a.AliasName,
Root: a.Root,
Port: a.Port,
Host: a.Host,
Path: a.Path,
DeployEnv: deployEnv,
}
}

View File

@ -62,7 +62,7 @@ func (p *plugin) Find(ctx context.Context, req *config.Request) (*drone.Config,
// 4. 根据文件树以及原始配置文件的信息组装需要构建的服务的ci信息
// 4.1 api
modifiedApiList := getModifiedApi(cfg.Api, modifiedFileList, foundAppByMessage(req.Build.Message), foundAppByParams(req.Build.Params))
destinationApi, err := modifiedApiList.toDestinationConfig(cfg.Name, getDeployEnv(req), cfg.toServiceEnv())
destinationApi, err := modifiedApiList.toDestinationConfig(getDeployEnv(req))
if err != nil {
logrus.Error(err)
return nil, err
@ -70,7 +70,7 @@ func (p *plugin) Find(ctx context.Context, req *config.Request) (*drone.Config,
// 4.2 service
modifiedServiceList := getModifiedService(cfg.Service, modifiedFileList, foundAppByMessage(req.Build.Message), foundAppByParams(req.Build.Params))
destinationService, err := modifiedServiceList.toDestinationConfig(cfg.Name, getDeployEnv(req), cfg.toServiceEnv())
destinationService, err := modifiedServiceList.toDestinationConfig(getDeployEnv(req))
if err != nil {
logrus.Error(err)
return nil, err
@ -136,8 +136,13 @@ func getDeployApiByAppSlice(api ApiList, appSlice []string) ApiList {
ret := make(ApiList, 0)
for _, app := range appSlice {
for _, a := range api {
if "api-"+a.Name == strings.TrimSpace(app) {
ret = append(ret, a)
appWithNamespace := strings.Split(app, ".")
if len(appWithNamespace) == 2 {
name := appWithNamespace[0]
namespace := appWithNamespace[1]
if a.Namespace == strings.TrimSpace(namespace) && "api-"+a.Name == strings.TrimSpace(name) {
ret = append(ret, a)
}
}
}
}
@ -166,8 +171,13 @@ func getDeployServiceByAppSlice(service ServiceList, appSlice []string) ServiceL
ret := make(ServiceList, 0)
for _, app := range appSlice {
for _, s := range service {
if "service-"+s.Name == strings.TrimSpace(app) {
ret = append(ret, s)
appWithNamespace := strings.Split(app, ".")
if len(appWithNamespace) == 2 {
name := appWithNamespace[0]
namespace := appWithNamespace[1]
if s.Namespace == strings.TrimSpace(namespace) && "service-"+s.Name == strings.TrimSpace(name) {
ret = append(ret, s)
}
}
}
}

View File

@ -3,7 +3,6 @@ package config_handler
import (
"git.icechen.cn/pkg/drone_plugin/git"
"gopkg.in/yaml.v3"
"strings"
)
const TypeMonorepo = "monorepo" // 单库类型
@ -16,18 +15,10 @@ type Config struct {
Service ServiceList `json:"service" yaml:"service"`
}
func (c Config) toServiceEnv() map[string]string {
sl := c.Service
retMap := make(map[string]string)
for _, service := range sl {
retMap[strings.ToUpper("SERVICE_"+service.Name)] = c.Name + "-" + service.Name + ":" + service.Port
}
return retMap
}
type (
ApiList []Api
Api struct {
Namespace string `json:"namespace" yaml:"namespace"`
Name string `json:"name" yaml:"name"`
AliasName string `json:"alias_name" yaml:"aliasName"`
Root string `json:"root" yaml:"root"`
@ -37,9 +28,11 @@ type (
Path string `json:"path" yaml:"path"`
}
)
type (
ServiceList []Service
Service struct {
Namespace string `json:"namespace" yaml:"namespace"`
Name string `json:"name" yaml:"name"`
AliasName string `json:"alias_name" yaml:"aliasName"`
Root string `json:"root" yaml:"root"`

View File

@ -5,10 +5,10 @@ import (
"git.icechen.cn/pkg/drone_plugin/go_handler"
)
func (sl ServiceList) toDestinationConfig(nameSpace string, deployEnv consts.Env, serviceEnv map[string]string) (string, error) {
func (sl ServiceList) toDestinationConfig(deployEnv consts.Env) (string, error) {
retConfig := ""
for _, service := range sl {
config, err := service.toDestinationConfig(nameSpace, deployEnv, serviceEnv)
config, err := service.toDestinationConfig(deployEnv)
if err != nil {
return "", err
}
@ -17,18 +17,17 @@ func (sl ServiceList) toDestinationConfig(nameSpace string, deployEnv consts.Env
return retConfig, nil
}
func (s Service) toDestinationConfig(nameSpace string, deployEnv consts.Env, serviceEnv map[string]string) (string, error) {
func (s Service) toDestinationConfig(deployEnv consts.Env) (string, error) {
var handler Handler
switch s.Type {
case go_handler.TypeGolang:
handler = go_handler.GoServiceHandler{
NameSpace: nameSpace,
Name: s.Name,
AliasName: s.AliasName,
Root: s.Root,
Port: s.Port,
ServiceEnv: serviceEnv,
DeployEnv: deployEnv,
NameSpace: s.Namespace,
Name: s.Name,
AliasName: s.AliasName,
Root: s.Root,
Port: s.Port,
DeployEnv: deployEnv,
}
}

View File

@ -4,6 +4,8 @@ import (
"bytes"
"text/template"
"git.icechen.cn/pkg/drone_plugin/config"
"git.icechen.cn/pkg/drone_plugin/go_handler/go_handler_template"
"git.icechen.cn/pkg/drone_plugin/consts"
@ -12,24 +14,29 @@ import (
const TypeGolang = "golang"
type GoApiHandler struct {
NameSpace string
Name string
AliasName string
Root string
Port string
Host string
Path string
ServiceEnv map[string]string
DeployEnv consts.Env
NameSpace string
Name string
AliasName string
Root string
Port string
Host string
Path string
DeployEnv consts.Env
Reg config.Registry
Kube config.KubeConfig
}
func (gah GoApiHandler) ToDestinationConfig() (string, error) {
var err error
t := template.New(gah.Name)
gah.Reg = config.GetRegistryConfig()
apiPipeline := go_handler_template.ApiTestPipeline
gah.Kube = config.GetTestKubeConfigByNamespace(gah.NameSpace)
if gah.DeployEnv == consts.EnvProduction {
apiPipeline = go_handler_template.ApiProductionPipeline
gah.Kube = config.GetOnlKubeConfigByNamespace(gah.NameSpace)
}
t, err = t.Parse(apiPipeline)

View File

@ -3,7 +3,7 @@ package go_handler_template
const ApiProductionPipeline = `
kind: pipeline
type: docker
name: production-api-{{ .Name }}
name: production-api-{{ .Name }}.{{ .NameSpace }}
steps:
- name: build
@ -12,12 +12,10 @@ steps:
- name: docker
path: /var/run/docker.sock
settings:
username:
from_secret: reg_username
password:
from_secret: reg_password
repo: reg.icechen.cn/{{ .NameSpace }}/api-{{ .Name }}
registry: reg.icechen.cn
username: {{ .Reg.Password }}
password: {{ .Reg.Registry }}
repo: {{ .Reg.Registry }}/{{ .NameSpace }}/api-{{ .Name }}
registry: {{ .Reg.Registry }}
tags:
- ${DRONE_TAG}
- latest
@ -27,12 +25,9 @@ steps:
- name: deploy
image: bitsbeats/drone-helm3
settings:
kube_api_server:
from_secret: kubernetes_server
kube_token:
from_secret: kubernetes_token
kube_certificate:
from_secret: kubernetes_cert
kube_api_server: {{ .Kube.KubeApiServer }}
kube_token: {{ .Kube.KubeToken }}
kube_certificate: {{ .Kube.KubeCertificate }}
chart: ./{{ .Root }}/deploy
release: api-{{ .Name }}
wait: true
@ -40,7 +35,7 @@ steps:
values:
- nameSpace={{ .NameSpace }}
- aliasName={{ .AliasName }}
- image=reg.icechen.cn/{{ .NameSpace }}/api-{{ .Name }}
- image={{ .Reg.Registry }}/{{ .NameSpace }}/api-{{ .Name }}
- imageTag=${DRONE_TAG}
- port={{ .Port }}
{{ if .Host }}

View File

@ -3,7 +3,7 @@ package go_handler_template
const ApiTestPipeline = `
kind: pipeline
type: docker
name: test-api-{{ .Name }}
name: test-api-{{ .Name }}.{{ .NameSpace }}
steps:
- name: build
@ -12,12 +12,10 @@ steps:
- name: docker
path: /var/run/docker.sock
settings:
username:
from_secret: reg_username
password:
from_secret: reg_password
repo: reg.icechen.cn/{{ .NameSpace }}/api-{{ .Name }}
registry: reg.icechen.cn
username: {{ .Reg.Password }}
password: {{ .Reg.Registry }}
repo: {{ .Reg.Registry }}/{{ .NameSpace }}/api-{{ .Name }}
registry: {{ .Reg.Registry }}
tags:
- ${DRONE_COMMIT:0:8}
- latest
@ -27,12 +25,9 @@ steps:
- name: deploy
image: bitsbeats/drone-helm3
settings:
kube_api_server:
from_secret: kubernetes_server_test
kube_token:
from_secret: kubernetes_token_test
kube_certificate:
from_secret: kubernetes_cert_test
kube_api_server: {{ .Kube.KubeApiServer }}
kube_token: {{ .Kube.KubeToken }}
kube_certificate: {{ .Kube.KubeCertificate }}
chart: ./{{ .Root }}/deploy
release: api-{{ .Name }}-test
wait: true
@ -40,7 +35,7 @@ steps:
values:
- nameSpace={{ .NameSpace }}
- aliasName={{ .AliasName }}
- image=reg.icechen.cn/{{ .NameSpace }}/api-{{ .Name }}
- image={{ .Reg.Registry }}/{{ .NameSpace }}/api-{{ .Name }}
- imageTag=${DRONE_COMMIT:0:8}
- port={{ .Port }}
{{ if .Host }}

View File

@ -3,7 +3,7 @@ package go_handler_template
const ServiceProductionPipeline = `
kind: pipeline
type: docker
name: production-service-{{ .Name }}
name: production-service-{{ .Name }}.{{ .NameSpace }}
steps:
- name: build
@ -12,12 +12,10 @@ steps:
- name: docker
path: /var/run/docker.sock
settings:
username:
from_secret: reg_username
password:
from_secret: reg_password
repo: reg.icechen.cn/{{ .NameSpace }}/service-{{ .Name }}
registry: reg.icechen.cn
username: {{ .Reg.Password }}
password: {{ .Reg.Registry }}
repo: {{ .Reg.Registry }}/{{ .NameSpace }}/service-{{ .Name }}
registry: {{ .Reg.Registry }}
tags:
- "${DRONE_TAG}"
- latest
@ -27,12 +25,9 @@ steps:
- name: deploy
image: bitsbeats/drone-helm3
settings:
kube_api_server:
from_secret: kubernetes_server
kube_token:
from_secret: kubernetes_token
kube_certificate:
from_secret: kubernetes_cert
kube_api_server: {{ .Kube.KubeApiServer }}
kube_token: {{ .Kube.KubeToken }}
kube_certificate: {{ .Kube.KubeCertificate }}
chart: ./{{ .Root }}/deploy
release: service-{{ .Name }}
wait: true
@ -40,7 +35,7 @@ steps:
values:
- nameSpace={{ .NameSpace }}
- aliasName={{ .AliasName }}
- image=reg.icechen.cn/{{ .NameSpace }}/service-{{ .Name }}
- image={{ .Reg.Registry }}/{{ .NameSpace }}/service-{{ .Name }}
- imageTag=${DRONE_TAG}
- port={{ .Port }}

View File

@ -3,7 +3,7 @@ package go_handler_template
const ServiceTestPipeline = `
kind: pipeline
type: docker
name: test-service-{{ .Name }}
name: test-service-{{ .Name }}.{{ .NameSpace }}
steps:
- name: build
@ -12,12 +12,10 @@ steps:
- name: docker
path: /var/run/docker.sock
settings:
username:
from_secret: reg_username
password:
from_secret: reg_password
repo: reg.icechen.cn/{{ .NameSpace }}/service-{{ .Name }}
registry: reg.icechen.cn
username: {{ .Reg.Password }}
password: {{ .Reg.Registry }}
repo: {{ .Reg.Registry }}/{{ .NameSpace }}/service-{{ .Name }}
registry: {{ .Reg.Registry }}
tags:
- ${DRONE_COMMIT:0:8}
- latest
@ -27,12 +25,9 @@ steps:
- name: deploy
image: bitsbeats/drone-helm3
settings:
kube_api_server:
from_secret: kubernetes_server_test
kube_token:
from_secret: kubernetes_token_test
kube_certificate:
from_secret: kubernetes_cert_test
kube_api_server: {{ .Kube.KubeApiServer }}
kube_token: {{ .Kube.KubeToken }}
kube_certificate: {{ .Kube.KubeCertificate }}
chart: ./{{ .Root }}/deploy
release: service-{{ .Name }}-test
wait: true
@ -40,7 +35,7 @@ steps:
values:
- nameSpace={{ .NameSpace }}
- aliasName={{ .AliasName }}
- image=reg.icechen.cn/{{ .NameSpace }}/service-{{ .Name }}
- image={{ .Reg.Registry }}/{{ .NameSpace }}/service-{{ .Name }}
- imageTag=${DRONE_COMMIT:0:8}
- port={{ .Port }}

View File

@ -4,28 +4,35 @@ import (
"bytes"
"text/template"
"git.icechen.cn/pkg/drone_plugin/config"
"git.icechen.cn/pkg/drone_plugin/go_handler/go_handler_template"
"git.icechen.cn/pkg/drone_plugin/consts"
)
type GoServiceHandler struct {
NameSpace string
Name string
AliasName string
Root string
Port string
ServiceEnv map[string]string
DeployEnv consts.Env
NameSpace string
Name string
AliasName string
Root string
Port string
DeployEnv consts.Env
Reg config.Registry
Kube config.KubeConfig
}
func (gsh GoServiceHandler) ToDestinationConfig() (string, error) {
var err error
t := template.New(gsh.Name)
gsh.Reg = config.GetRegistryConfig()
servicePipeline := go_handler_template.ServiceTestPipeline
gsh.Kube = config.GetTestKubeConfigByNamespace(gsh.NameSpace)
if gsh.DeployEnv == consts.EnvProduction {
servicePipeline = go_handler_template.ServiceProductionPipeline
gsh.Kube = config.GetOnlKubeConfigByNamespace(gsh.NameSpace)
}
t, err = t.Parse(servicePipeline)