diff --git a/constant/const.go b/constant/const.go index 7ecd791f6d96e12232192b26ef28ad678a3eaa0f..b8ede9d3e9f0027e06279a58ea3ea5d835d323c0 100644 --- a/constant/const.go +++ b/constant/const.go @@ -54,3 +54,17 @@ const ( // HelmDeployType helm 部署 HelmDeployType = "helm" ) + +// integrate type +const ( + SCMGitlab = "gitlab" + SCMGithub = "github" + SCMGitea = "gitea" + SCMGitee = "gitee" + IntegrateKubernetes = "kubernetes" + IntegrateJenkins = "jenkins" + IntegrateRegistry = "registry" +) + +var Integratetypes = []string{IntegrateKubernetes, IntegrateJenkins, IntegrateRegistry} +var ScmIntegratetypes = []string{SCMGitlab, SCMGithub, SCMGitea, SCMGitee} diff --git a/internal/api/integrate.go b/internal/api/integrate.go index 036c60be80776c90bca72a5719d41e2142eaad91..0769180846b6481acfd34a567bb2187cf8667062 100644 --- a/internal/api/integrate.go +++ b/internal/api/integrate.go @@ -17,6 +17,8 @@ limitations under the License. package api import ( + "github.com/go-atomci/atomci/constant" + "github.com/go-atomci/atomci/internal/core/settings" "github.com/go-atomci/atomci/internal/middleware/log" ) @@ -28,7 +30,7 @@ type IntegrateController struct { func (p *IntegrateController) GetClusterIntegrateSettings() { pm := settings.NewSettingManager() - rsp, err := pm.GetIntegrateSettings("kubernetes") + rsp, err := pm.GetIntegrateSettings([]string{constant.IntegrateKubernetes}) if err != nil { p.HandleInternalServerError(err.Error()) log.Log.Error("Get integrate settings occur error: %s", err.Error()) @@ -41,7 +43,7 @@ func (p *IntegrateController) GetClusterIntegrateSettings() { // GetIntegrateSettings .. func (p *IntegrateController) GetIntegrateSettings() { pm := settings.NewSettingManager() - rsp, err := pm.GetIntegrateSettings("") + rsp, err := pm.GetIntegrateSettings(constant.Integratetypes) if err != nil { p.HandleInternalServerError(err.Error()) log.Log.Error("Get integrate settings occur error: %s", err.Error()) @@ -55,7 +57,21 @@ func (p *IntegrateController) GetIntegrateSettings() { func (p *IntegrateController) GetIntegrateSettingsByPagination() { filterQuery := p.GetFilterQuery() pm := settings.NewSettingManager() - rsp, err := pm.GetIntegrateSettingsByPagination(filterQuery) + rsp, err := pm.GetIntegrateSettingsByPagination(filterQuery, constant.Integratetypes) + if err != nil { + p.HandleInternalServerError(err.Error()) + log.Log.Error("Get integrate settings occur error: %s", err.Error()) + return + } + p.Data["json"] = NewResult(true, rsp, "") + p.ServeJSON() +} + +// GetSCMIntegrateSettingsByPagination .. +func (p *IntegrateController) GetSCMIntegrateSettingsByPagination() { + filterQuery := p.GetFilterQuery() + pm := settings.NewSettingManager() + rsp, err := pm.GetIntegrateSettingsByPagination(filterQuery, constant.ScmIntegratetypes) if err != nil { p.HandleInternalServerError(err.Error()) log.Log.Error("Get integrate settings occur error: %s", err.Error()) diff --git a/internal/core/settings/settings.go b/internal/core/settings/settings.go index 436bf741ad3c7d489a16cf4e22e2113162002910..9beb27f5ffef4ffd60a6c0d3d17de7a4ffc882ca 100644 --- a/internal/core/settings/settings.go +++ b/internal/core/settings/settings.go @@ -89,6 +89,16 @@ type RegistryConfig struct { IsHttps bool `json:"isHttps,omitempty"` } +type ScmBaseConfig struct { + URL string `json:"url,omitempty"` + Token string `json:"token,omitempty"` +} + +type ScmGitlabConfig struct { + ScmBaseConfig + User string `json:"user,omitempty"` +} + type JenkinsConfig struct { BaseConfig Token string `json:"token,omitempty"` @@ -116,6 +126,14 @@ func (config *Config) Struct(sc string, settingType string) (interface{}, error) registry := &RegistryConfig{} err := json.Unmarshal([]byte(sc), registry) return registry, err + case "gitlab": + scmConf := &ScmGitlabConfig{} + err := json.Unmarshal([]byte(sc), scmConf) + return scmConf, err + case "gitea", "gitee", "github": + scmConf := &ScmBaseConfig{} + err := json.Unmarshal([]byte(sc), scmConf) + return scmConf, err default: log.Log.Warn("this settings type %s is not support, return origin string", settingType) return sc, nil @@ -130,8 +148,8 @@ func NewSettingManager() *SettingManager { } // GetIntegrateSettings .. -func (pm *SettingManager) GetIntegrateSettings(integrateType string) ([]*IntegrateSettingResponse, error) { - items, err := pm.model.GetIntegrateSettings(integrateType) +func (pm *SettingManager) GetIntegrateSettings(integrateTypes []string) ([]*IntegrateSettingResponse, error) { + items, err := pm.model.GetIntegrateSettings(integrateTypes) if err != nil { log.Log.Error("get interate settings error: %s", err.Error()) return nil, err @@ -152,8 +170,8 @@ func (pm *SettingManager) GetIntegrateSettingByID(id int64) (*IntegrateSettingRe } // GetIntegrateSettingsByPagination .. -func (pm *SettingManager) GetIntegrateSettingsByPagination(filter *query.FilterQuery) (*query.QueryResult, error) { - queryResult, settingsList, err := pm.model.GetIntegrateSettingsByPagination(filter) +func (pm *SettingManager) GetIntegrateSettingsByPagination(filter *query.FilterQuery, intergrateTypes []string) (*query.QueryResult, error) { + queryResult, settingsList, err := pm.model.GetIntegrateSettingsByPagination(filter, intergrateTypes) if err != nil { return nil, err } diff --git a/internal/dao/integrate_settings.go b/internal/dao/integrate_settings.go index dcc99d423c2de11829b0de01ff6196dd944add2c..3958ae4603592e85f196e6f1e60f0de29d6df566 100644 --- a/internal/dao/integrate_settings.go +++ b/internal/dao/integrate_settings.go @@ -50,11 +50,11 @@ func (model *SysSettingModel) GetIntegrateSettingByID(integrateSettingID int64) } // GetIntegrateSettings ... -func (model *SysSettingModel) GetIntegrateSettings(integrateType string) ([]*models.IntegrateSetting, error) { +func (model *SysSettingModel) GetIntegrateSettings(integrateTypes []string) ([]*models.IntegrateSetting, error) { integrateSettings := []*models.IntegrateSetting{} qs := model.ormer.QueryTable(model.IntegrateSettingTableName).Filter("deleted", false) - if integrateType != "" { - qs = qs.Filter("type", integrateType) + if len(integrateTypes) > 0 { + qs = qs.Filter("type__in", integrateTypes) } _, err := qs.All(&integrateSettings) if err != nil { @@ -64,7 +64,7 @@ func (model *SysSettingModel) GetIntegrateSettings(integrateType string) ([]*mod } // GetIntegrateSettingsByPagination .. -func (model *SysSettingModel) GetIntegrateSettingsByPagination(filter *query.FilterQuery) (*query.QueryResult, []*models.IntegrateSetting, error) { +func (model *SysSettingModel) GetIntegrateSettingsByPagination(filter *query.FilterQuery, intergrateTypes []string) (*query.QueryResult, []*models.IntegrateSetting, error) { rst := &query.QueryResult{Item: []*models.IntegrateSetting{}} queryCond := orm.NewCondition().AndCond(orm.NewCondition().And("deleted", false)) @@ -72,6 +72,9 @@ func (model *SysSettingModel) GetIntegrateSettingsByPagination(filter *query.Fil queryCond = queryCond.AndCond(filterCond) } qs := model.ormer.QueryTable(model.IntegrateSettingTableName).OrderBy("-create_at").SetCond(queryCond) + if len(intergrateTypes) > 0 { + qs = qs.Filter("type__in", intergrateTypes) + } count, err := qs.Count() if err != nil { return nil, nil, err diff --git a/internal/routers/router.go b/internal/routers/router.go index b8f0040cdddf362b86e51ad3d89fa06f0c67f91f..7e5a147dfdd1becf8781c2acbe00b3e881ada852 100644 --- a/internal/routers/router.go +++ b/internal/routers/router.go @@ -81,6 +81,7 @@ func RegisterRoutes() { // Integrate Settings beego.NSRouter("/integrate/settings", &api.IntegrateController{}, "get:GetIntegrateSettings;post:GetIntegrateSettingsByPagination"), beego.NSRouter("/integrate/settings/create", &api.IntegrateController{}, "post:CreateIntegrateSetting"), + beego.NSRouter("/integrate/settings/scms", &api.IntegrateController{}, "post:GetSCMIntegrateSettingsByPagination"), beego.NSRouter("/integrate/settings/:id", &api.IntegrateController{}, "put:UpdateIntegrateSetting;delete:DeleteIntegrateSetting"), beego.NSRouter("/integrate/settings/verify", &api.IntegrateController{}, "post:VerifyIntegrateSetting"), beego.NSRouter("/integrate/clusters", &api.IntegrateController{}, "get:GetClusterIntegrateSettings"), diff --git a/web/src/api/backend.js b/web/src/api/backend.js index 8356c2f1e25b445d83a8cc7c3e9067025aa401f8..0dcece6fb7e5009086e17fb45e8acfc9bc05a655 100644 --- a/web/src/api/backend.js +++ b/web/src/api/backend.js @@ -713,8 +713,8 @@ const backendAPI = { getIntegrateSettings(body, cb) { Package.httpMethods('post', '/atomci/api/v1/integrate/settings', cb, body); }, - getStagesAll(cb) { - Package.httpMethods('get', '/atomci/api/v1/integrate/settings', cb); + getSCMIntegrateSettings(body, cb) { + Package.httpMethods('post', '/atomci/api/v1/integrate/settings/scms', cb, body); }, AddIntegrateSetting(body,cb) { Package.httpMethods('post', '/atomci/api/v1/integrate/settings/create', cb, body); diff --git a/web/src/router/index.js b/web/src/router/index.js index 281ced69d47b1d1c743aa13dccf959c67402e5f7..a871d3c8e43adc4b285439730be82cfd8a524ac8 100644 --- a/web/src/router/index.js +++ b/web/src/router/index.js @@ -80,6 +80,12 @@ export const asyncRoutes = [ name: 'serviceIntegrate', meta: { title: '服务集成', noCache: true } }, + { + path: '/settings/smcintegrate', + component: () => import('@/views/setting/ScmIntegrate.vue'), + name: 'scmIntegrate', + meta: { title: '代码源集成', noCache: true } + }, { path: '/settings/task', component: () => import('@/views/setting/Node.vue'), diff --git a/web/src/views/project/components/EnvCreate.vue b/web/src/views/project/components/EnvCreate.vue index 567dc420b6fd91a516fed7377a8be77e25ad57d7..44167d2844ba0d7d21125d1018391044b766c479 100644 --- a/web/src/views/project/components/EnvCreate.vue +++ b/web/src/views/project/components/EnvCreate.vue @@ -125,8 +125,6 @@ export default { case 'registry': this.registryList.push(element) break; - default: - console.log("this type not support", element.type) } }); } diff --git a/web/src/views/setting/ScmIntegrate.vue b/web/src/views/setting/ScmIntegrate.vue new file mode 100644 index 0000000000000000000000000000000000000000..671318d8c7df599ec72bb463bfd9f2b40068dac1 --- /dev/null +++ b/web/src/views/setting/ScmIntegrate.vue @@ -0,0 +1,146 @@ + + diff --git a/web/src/views/setting/components/ScmIntegrateCreate.vue b/web/src/views/setting/components/ScmIntegrateCreate.vue new file mode 100644 index 0000000000000000000000000000000000000000..1bcb467fe1d562a2113a5499b316544b6bc49e29 --- /dev/null +++ b/web/src/views/setting/components/ScmIntegrateCreate.vue @@ -0,0 +1,213 @@ + + +