diff --git a/README.md b/README.md index 9529953ec8736eae31c1d516c1523ba9ef8d4fbc..8e065355aa31619703421914cc3f45760fcb2bc2 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ AtomCI 致力于让中小企业快速落地Kubernetes,代码均已开源, __ ├──────► ├────► │ │ └────────────────┘ │ ┌──────────┐ │ │ │ │ ├───► │ │ │ │ │ Backend (Go) ◄────┤ Jenkins │ │ ┌────────────────┐ │ -│ Harbor ├─────┤ │ │ │ │ │ │ jnlp-agent pod2│ │ +│ Registry ├─────┤ │ │ │ │ │ │ jnlp-agent pod2│ │ │ │ │ │ │ │ │ │ └────────────────┘ │ └──────────┘ │ └──────────┬────────────┘ │ │ │ .... │ │ │ │ │ │ ┌────────────────┐ │ diff --git a/core/kuberes/application.go b/core/kuberes/application.go index ca22034eaeef2421461910a7cc9abb72ab0e9505..768ecee95d1032068d5ab63bd04189aee6f1408a 100644 --- a/core/kuberes/application.go +++ b/core/kuberes/application.go @@ -288,7 +288,7 @@ func (ar *AppRes) InstallApp( template Template, eparam *ExtensionParam) error { CreateK8sNamespace(ar.Cluster, namespace) - CreateHarborSecret(ar.Cluster, namespace, ar.EnvID) + CreateRegistrySecret(ar.Cluster, namespace, ar.EnvID) if err := template.Validate(); err != nil { return errors.NewBadRequest().SetCause(err) } @@ -504,45 +504,45 @@ func CreateK8sNamespace(cluster, namespace string) error { return nil } -func CreateHarborSecret(cluster, namespace string, envID int64) error { +func CreateRegistrySecret(cluster, namespace string, envID int64) error { client, err := kube.GetClientset(cluster) if err != nil { - log.Log.Warning(fmt.Sprintf("create harbor secret failed: %v", err.Error())) + log.Log.Warning(fmt.Sprintf("create registry secret failed: %v", err.Error())) return err } // TODO: refactor code combine projectEnv, err := dao.NewProjectModel().GetProjectEnvByID(envID) if err != nil { - log.Log.Error("when create harbor secret get project env by id: %v, error: %s", envID, err.Error()) + log.Log.Error("when create registry secret get project env by id: %v, error: %s", envID, err.Error()) return err } - integrateSettingHarbor, err := settings.NewSettingManager().GetIntegrateSettingByID(projectEnv.Harbor) + integrateSettingRegistry, err := settings.NewSettingManager().GetIntegrateSettingByID(projectEnv.Registry) if err != nil { - log.Log.Error("when create harbor secret get integrate setting by id: %v, error: %s", projectEnv.Harbor, err.Error()) + log.Log.Error("when create registry secret get integrate setting by id: %v, error: %s", projectEnv.Registry, err.Error()) return err } - var harborAddr, harborUser, harborPassword, harborAuth string - harborName := integrateSettingHarbor.Name - if harborConf, ok := integrateSettingHarbor.Config.(*settings.HarborConfig); ok { - harborAddr = harborConf.URL - harborPassword = harborConf.Password - harborUser = harborConf.User - harborAuth = base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%v:%v", harborConf.User, harborConf.Password))) + var registryAddr, registryUser, registryPassword, registryAuth string + registryName := strings.ToLower(integrateSettingRegistry.Name) + if registryConf, ok := integrateSettingRegistry.Config.(*settings.RegistryConfig); ok { + registryAddr = registryConf.URL + registryPassword = registryConf.Password + registryUser = registryConf.User + registryAuth = base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%v:%v", registryConf.User, registryConf.Password))) } else { - log.Log.Error("parse integrate setting harbor config error") - return fmt.Errorf("parse integrate setting harbor config error") + log.Log.Error("parse integrate setting registry config error") + return fmt.Errorf("parse integrate setting registry config error") } - harborSecretName := fmt.Sprintf("harbor-%v", harborName) - harborInfo := make(map[string]interface{}) - harborInfo[harborAddr] = map[string]string{ - "username": harborUser, - "password": harborPassword, - "auth": harborAuth, + registrySecretName := fmt.Sprintf("registry-%v", registryName) + registryInfo := make(map[string]interface{}) + registryInfo[registryAddr] = map[string]string{ + "username": registryUser, + "password": registryPassword, + "auth": registryAuth, } - auth, _ := json.Marshal(harborInfo) - harborSec, err := client.CoreV1().Secrets(namespace).Get(harborSecretName, metav1.GetOptions{}) + auth, _ := json.Marshal(registryInfo) + registrySec, err := client.CoreV1().Secrets(namespace).Get(registrySecretName, metav1.GetOptions{}) if err != nil { if !k8serrors.IsNotFound(err) { return err @@ -550,7 +550,7 @@ func CreateHarborSecret(cluster, namespace string, envID int64) error { _, err = client.CoreV1().Secrets(namespace).Create(&apiv1.Secret{ ObjectMeta: metav1.ObjectMeta{ Namespace: namespace, - Name: harborSecretName, + Name: registrySecretName, }, Type: apiv1.SecretTypeDockercfg, Data: map[string][]byte{ @@ -558,14 +558,14 @@ func CreateHarborSecret(cluster, namespace string, envID int64) error { }, }) } else { - if string(harborSec.Data[".dockercfg"]) == string(auth) { + if string(registrySec.Data[".dockercfg"]) == string(auth) { return nil } - harborSec.Data = map[string][]byte{".dockercfg": auth} - _, err = client.CoreV1().Secrets(namespace).Update(harborSec) + registrySec.Data = map[string][]byte{".dockercfg": auth} + _, err = client.CoreV1().Secrets(namespace).Update(registrySec) } if err != nil { - log.Log.Warning(fmt.Sprintf("set harbor secret failed: %v", err.Error())) + log.Log.Warning(fmt.Sprintf("set registry secret failed: %v", err.Error())) } return err } diff --git a/core/kuberes/deployworker.go b/core/kuberes/deployworker.go index c0c1530c1db752d9114e42c16d2e3cbcc2f1a245..70ee2c640daaecd1efd1bcb907b0bd62cc7b1ad6 100644 --- a/core/kuberes/deployworker.go +++ b/core/kuberes/deployworker.go @@ -18,6 +18,7 @@ package kuberes import ( "fmt" + "strings" "github.com/go-atomci/atomci/core/settings" "github.com/go-atomci/atomci/dao" @@ -136,26 +137,27 @@ func (wk *DeployWorker) deleteApplication(appname string) { } } -func getDefaultPullSecretAndHarborAddr(envID int64) (string, string, error) { +func getDefaultPullSecretAndRegistryAddr(envID int64) (string, string, error) { projectEnv, err := dao.NewProjectModel().GetProjectEnvByID(envID) if err != nil { - log.Log.Error("when create harbor secret get project env by id: %v, error: %s", envID, err.Error()) + log.Log.Error("when create registry secret get project env by id: %v, error: %s", envID, err.Error()) return "", "", err } - integrateSettingHarbor, err := dao.NewSysSettingModel().GetIntegrateSettingByID(projectEnv.Harbor) + integrateSettingRegistry, err := dao.NewSysSettingModel().GetIntegrateSettingByID(projectEnv.Registry) if err != nil { - log.Log.Error("when create harbor secret get integrate setting by id: %v, error: %s", projectEnv.Harbor, err.Error()) + log.Log.Error("when create registry secret get integrate setting by id: %v, error: %s", projectEnv.Registry, err.Error()) return "", "", err } config := settings.Config{} - configJSON, err := config.Struct(integrateSettingHarbor.Config, integrateSettingHarbor.Type) + configJSON, err := config.Struct(integrateSettingRegistry.Config, integrateSettingRegistry.Type) if err != nil { - log.Log.Error("when parse harbor config error: %s", err.Error()) + log.Log.Error("when parse registry config error: %s", err.Error()) return "", "", err } var url string - if harborConf, ok := configJSON.(*settings.HarborConfig); ok { - url = harborConf.URL + if registryConf, ok := configJSON.(*settings.RegistryConfig); ok { + url = registryConf.URL } - return "harbor-" + integrateSettingHarbor.Name, url, nil + + return "registry-" + strings.ToLower(integrateSettingRegistry.Name), url, nil } diff --git a/core/kuberes/nativeapptemplate.go b/core/kuberes/nativeapptemplate.go index 6fe8141546ea47b5a586fbbd273aeee849e59c1b..23d899cef46844722661ce9badf9a3691c6928bc 100644 --- a/core/kuberes/nativeapptemplate.go +++ b/core/kuberes/nativeapptemplate.go @@ -233,7 +233,7 @@ func (tp *NativeAppTemplate) newPodTemplateSpec(spec apiv1.PodTemplateSpec, podV } IncludeEnvImage := false for _, item := range podContainers { - if strings.Contains(item.Image, tp.Config.HarborAddr) { + if strings.Contains(item.Image, tp.Config.RegistryAddr) { IncludeEnvImage = true break } diff --git a/core/kuberes/nativetemplate.go b/core/kuberes/nativetemplate.go index 082ce11b60daee196aa5956bbaaeb7564f6bb270..f693b5eee60cd7598396fbb13a5828fff2a1aaad 100644 --- a/core/kuberes/nativetemplate.go +++ b/core/kuberes/nativetemplate.go @@ -72,7 +72,7 @@ type DeployConfig struct { DefaultPort int32 `json:"default_port"` //默认服务端口 DeployStrategy string `json:"deploy_strategy"` ImagePullSecret string `json:"image_pull_secret"` - HarborAddr string `json:"harbor_addr"` + RegistryAddr string `json:"registry_addr"` Description string `json:"description"` } @@ -89,12 +89,12 @@ func NewNativeTemplate() *NativeTemplate { // set default value for template config func (t *NativeTemplate) Default(envID int64) Template { if t.Config.ImagePullSecret == "" && envID != 0 { - defSecret, harborURL, err := getDefaultPullSecretAndHarborAddr(envID) + defSecret, registryURL, err := getDefaultPullSecretAndRegistryAddr(envID) if err != nil { log.Log.Error("get default pull secret failed:", err) } t.Config.ImagePullSecret = defSecret - t.Config.HarborAddr = harborURL + t.Config.RegistryAddr = registryURL } return t } diff --git a/core/pipelinemgr/uitls.go b/core/pipelinemgr/uitls.go index 274ed62b552a46bf846a91a090693cf45f2b60f6..dfc13b42b2a8a578818cfe98293747b8af1bba3e 100644 --- a/core/pipelinemgr/uitls.go +++ b/core/pipelinemgr/uitls.go @@ -235,7 +235,7 @@ func (pm *PipelineManager) CreateBuildJob(creator string, projectID, publishID i log.Log.Error("getDeployInfo occur error: %s", err.Error()) return 0, "", err } - if len(deployInfo) != 3 { + if len(deployInfo) != 4 { log.Log.Error("deploy info is validate, len: %v", len(deployInfo)) } // Create publishJob publishJobApps @@ -1039,7 +1039,7 @@ func (pm *PipelineManager) renderAppBuildItemsForBuild(projectID, stageID, publi func (pm *PipelineManager) renderAppImageitemsForBuild(projectID, publishID, stageID, publishJobID int64, allParms []*RunBuildAllParms, ciConfig []string, deployInfo []string) ([]*jenkins.StepItem, error) { appImageItems := []*jenkins.StepItem{} - if len(ciConfig) != 4 { + if len(ciConfig) != 5 { log.Log.Error("ciConfig is invalide, real len: %v", len(ciConfig)) } @@ -1101,7 +1101,11 @@ func (pm *PipelineManager) renderAppImageitemsForBuild(projectID, publishID, sta if dockerfile == "" { dockerfile = "Dockerfile" } - Command := fmt.Sprintf("sh \"cd %v; export DOCKER_CONFIG=$DOCKER_CONFIG; /kaniko/executor -f %v -c ./ -d %v --insecure --skip-tls-verify --insecure-pull \"", appPath, dockerfile, imageURL) + var insecure = "" + if isHttps, _ := strconv.ParseBool(deployInfo[3]); !isHttps { + insecure = "--insecure --skip-tls-verify --insecure-pull" + } + Command := fmt.Sprintf("sh \"cd %v; export DOCKER_CONFIG=$DOCKER_CONFIG; /kaniko/executor -f %v -c ./ -d %v %s \"", appPath, dockerfile, imageURL, insecure) item.Command = Command appImageItems = append(appImageItems, item) } @@ -1197,7 +1201,7 @@ func (pm *PipelineManager) GetCIConfig(stageID int64) ([]string, error) { return []string{url, user, token, workSpace, namespace}, nil } -// getDeployInfo cluster,harbor auth info,arrangeEnv +// getDeployInfo cluster,registry auth info,arrangeEnv func (pm *PipelineManager) getDeployInfo(stageID int64) ([]string, int64, error) { envStage, err := pm.modelProject.GetProjectEnvByID(stageID) if err != nil { @@ -1214,24 +1218,26 @@ func (pm *PipelineManager) getDeployInfo(stageID int64) ([]string, int64, error) return []string{}, 0, fmt.Errorf("settings type is: %s, current deploy server only support kubernetes", settingKubernetesItem.Type) } - settingHarborItem, err := pm.settingsHandler.GetIntegrateSettingByID(envStage.Harbor) + settingRegistryItem, err := pm.settingsHandler.GetIntegrateSettingByID(envStage.Registry) if err != nil { - log.Log.Error("integrate setting harbor by id: %v error: %s", envStage.Harbor, err.Error()) - return []string{}, 0, fmt.Errorf("integrate setting harbor by id: %v error: %s", envStage.Harbor, err.Error()) + log.Log.Error("integrate setting registry by id: %v error: %s", envStage.Registry, err.Error()) + return []string{}, 0, fmt.Errorf("integrate setting registry by id: %v error: %s", envStage.Registry, err.Error()) } - if settingHarborItem.Type != "harbor" { - return []string{}, 0, fmt.Errorf("settings type is: %s, current deploy server only support kubernetes", settingHarborItem.Type) + if settingRegistryItem.Type != "registry" { + return []string{}, 0, fmt.Errorf("settings type is: %s, current deploy server only support kubernetes", settingRegistryItem.Type) } - var harborAddr, harborAuth string - if harborConf, ok := settingHarborItem.Config.(*settings.HarborConfig); ok { - harborAddr = harborConf.URL - harborAuth = base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%v:%v", harborConf.User, harborConf.Password))) + var registryAddr, registryAuth string + var isHttps bool + if registryConf, ok := settingRegistryItem.Config.(*settings.RegistryConfig); ok { + registryAddr = registryConf.URL + registryAuth = base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%v:%v", registryConf.User, registryConf.Password))) + isHttps = registryConf.IsHttps } else { log.Log.Error("parse kubernetes config error") return []string{}, 0, fmt.Errorf("parse jenkins config error") } - return []string{settingKubernetesItem.Name, harborAddr, harborAuth}, envStage.ID, nil + return []string{settingKubernetesItem.Name, registryAddr, registryAuth, strconv.FormatBool(isHttps)}, envStage.ID, nil } func (pm *PipelineManager) publishStepVerify(publishID int64, step string) (bool, error) { diff --git a/core/projects/settings.go b/core/projects/settings.go index 1787deb236bf798ac5f8e4fc3ddf17f9fa3a1427..19396b2091153b08c9f3bfa2de822b84159bac86 100644 --- a/core/projects/settings.go +++ b/core/projects/settings.go @@ -52,7 +52,7 @@ type ProjectEnvReq struct { Namespace string `json:"namespace"` ArrangeEnv string `json:"arrange_env"` CIServer int64 `json:"ci_server"` - Harbor int64 `json:"harbor"` + Registry int64 `json:"registry"` } func (s *PipelineReq) String() (string, error) { @@ -231,8 +231,8 @@ func (pm *ProjectManager) UpdateProjectEnv(request *ProjectEnvReq, stepID int64) if request.CIServer != 0 { stageModel.CIServer = request.CIServer } - if request.Harbor != 0 { - stageModel.Harbor = request.Harbor + if request.Registry != 0 { + stageModel.Registry = request.Registry } return pm.model.UpdateProjectEnv(stageModel) @@ -266,7 +266,7 @@ func (pm *ProjectManager) CreateProjectEnv(request *ProjectEnvReq, creator strin Cluster: request.Cluster, Namespace: request.Namespace, CIServer: request.CIServer, - Harbor: request.Harbor, + Registry: request.Registry, ArrangeEnv: request.ArrangeEnv, Creator: creator, } diff --git a/core/settings/registryhub.go b/core/settings/registryhub.go new file mode 100644 index 0000000000000000000000000000000000000000..e4f13c11373c5fb7180499032b256c63dd42cd15 --- /dev/null +++ b/core/settings/registryhub.go @@ -0,0 +1,61 @@ +package settings + +import ( + "errors" + "fmt" + "net/http" + "strings" +) + +func TryLoginRegistry(basicUrl, username, password string, insecure bool) error { + var schema string + if insecure { + schema = "http" + } else { + schema = "https" + } + url := fmt.Sprintf("%s://%s/v2", schema, strings.TrimRight(basicUrl, "/")) + resp, err := http.Get(url) + if err != nil || resp.StatusCode != 401 { + return errors.New("error basicUrl") + } + //get Auth Info + auth := resp.Header.Get("Www-Authenticate") + if !strings.HasPrefix(auth, "Bearer") { + return errors.New("basicUrl is incorrect") + } + //Bearer realm="https://dockerauth.cn-hangzhou.aliyuncs.com/auth",service="registry.aliyuncs.com:cn-hangzhou:26842" + kvArr := strings.Split(strings.TrimPrefix(auth, "Bearer "), ",") + + var authBaseUrl, authFullUrl string + var queryParams []string + for _, i2 := range kvArr { + temp := strings.Split(i2, "=") + if strings.HasPrefix(i2, "realm") { + authBaseUrl = strings.Trim(temp[1], "\"") + } else { + queryParams = append(queryParams, temp[0]+"="+strings.Trim(temp[1], "\"")) + } + } + if len(queryParams) > 0 { + authFullUrl = authBaseUrl + "?" + strings.Join(queryParams, "&") + } else { + authFullUrl = authBaseUrl + } + req, err := http.NewRequest("GET", authFullUrl, nil) + req.SetBasicAuth(username, password) + if err != nil { + return errors.New("incorrect username or password") + } + client := http.Client{} + resp, err = client.Do(req) + if err != nil { + return err + } + if resp.StatusCode != 200 { + return errors.New("incorrect username or password") + } + //body, err := ioutil.ReadAll(resp.Body) + //fmt.Println(string(body)) + return nil +} diff --git a/core/settings/settings.go b/core/settings/settings.go index 271d1e4f67fc88d9f6521c25041141717a9ef32d..52b3e4a8f1ea71e64cd088607b5bac79a88984dd 100644 --- a/core/settings/settings.go +++ b/core/settings/settings.go @@ -27,7 +27,6 @@ import ( "github.com/go-atomci/atomci/dao" "github.com/go-atomci/atomci/middleware/log" "github.com/go-atomci/atomci/models" - "github.com/go-atomci/atomci/pkg/harbor" "github.com/go-atomci/atomci/utils/query" "github.com/go-atomci/atomci/utils/validate" @@ -68,7 +67,7 @@ type IntegrateSettingReq struct { // const variables const ( KubernetesType = "kubernetes" - HarborType = "harbor" + RegistryType = "registry" JenkinsType = "jenkins" ) @@ -83,10 +82,11 @@ type KubeConfig struct { URL string `json:"url,omitempty"` Conf string `json:"conf,omitempty"` } -type HarborConfig struct { +type RegistryConfig struct { BaseConfig Name string `json:"name,omitempty"` Password string `json:"password,omitempty"` + IsHttps bool `json:"isHttps,omitempty"` } type JenkinsConfig struct { @@ -112,10 +112,10 @@ func (config *Config) Struct(sc string, settingType string) (interface{}, error) jenkins := &JenkinsConfig{} err := json.Unmarshal([]byte(sc), jenkins) return jenkins, err - case "harbor": - harbor := &HarborConfig{} - err := json.Unmarshal([]byte(sc), harbor) - return harbor, err + case "registry": + registry := &RegistryConfig{} + err := json.Unmarshal([]byte(sc), registry) + return registry, err default: log.Log.Warn("this settings type %s is not support, return origin string", settingType) return sc, nil @@ -262,18 +262,19 @@ func (pm *SettingManager) VerifyIntegrateSetting(request *IntegrateSettingReq) V } msg := fmt.Sprintf("Connected to Kubernetes %s", k8sVersion.GitVersion) resp.Msg = msg - case HarborType: - harborConf := &HarborConfig{} - err := json.Unmarshal([]byte(config), harborConf) + case RegistryType: + registryConf := &RegistryConfig{} + err := json.Unmarshal([]byte(config), registryConf) if err != nil { - log.Log.Error("harborConf conf format error: %v", err.Error()) + log.Log.Error("registryConf conf format error: %v", err.Error()) resp.Error = err } else { - log.Log.Debug("verify harbor conf: %v", harborConf) - if err := harbor.PingHarbor(harborConf.URL, harborConf.User, harborConf.Password, false); err != nil { + log.Log.Debug("verify registry conf: %v", registryConf) + + if err := TryLoginRegistry(registryConf.URL, registryConf.User, registryConf.Password, !registryConf.IsHttps); err != nil { resp.Error = err } else { - resp.Msg = "Connected to Harbor" + resp.Msg = "Connected to Registry" } } case JenkinsType: diff --git a/deploy/release/sql/v1.3.2_00.sql b/deploy/release/sql/v1.3.2_00.sql new file mode 100644 index 0000000000000000000000000000000000000000..c92a9c3d3be4fe858250a299bbc0447fbd67c60e --- /dev/null +++ b/deploy/release/sql/v1.3.2_00.sql @@ -0,0 +1,4 @@ +# support normal docker registry +UPDATE `sys_integrate_setting` SET `type`='registry' WHERE `type`='harbor'; + +ALTER TABLE `project_env` CHANGE COLUMN `harbor` `registry` bigint(20) NOT NULL DEFAULT 0 AFTER `ci_server`; \ No newline at end of file diff --git a/models/project.go b/models/project.go index 5917f33c415918189d33bb32481c563f8d454b0e..c0453b6fbfa785359136c88e6124de66bb98a29d 100644 --- a/models/project.go +++ b/models/project.go @@ -135,7 +135,7 @@ type ProjectEnv struct { Namespace string `orm:"column(namespace);size(256)" json:"namespace"` ArrangeEnv string `orm:"column(arrange_env);size(64)" json:"arrange_env"` CIServer int64 `orm:"column(ci_server);" json:"ci_server"` - Harbor int64 `orm:"column(harbor);" json:"harbor"` + Registry int64 `orm:"column(registry);" json:"registry"` Creator string `orm:"column(creator);size(64)" json:"creator"` } diff --git a/web/src/store/modules/index.js b/web/src/store/modules/index.js index f1091ccceff0b44374702c0b402f437af7e8c900..e646ce321a400bd290d90a06b868a6549386cfdb 100644 --- a/web/src/store/modules/index.js +++ b/web/src/store/modules/index.js @@ -5,7 +5,7 @@ const initializeState = { isNeedLoading: true, userInfo: {}, clusterList: [], - harborList: [], + registryList: [], }; const getters = { getLoading(state) { @@ -23,8 +23,8 @@ const getters = { getClusterList(state) { return state.clusterList; }, - getHarborList(state) { - return state.harborList; + getRegistryList(state) { + return state.registryList; }, }; // actions @@ -44,8 +44,8 @@ const actions = { setClusterList({ commit }, obj) { commit('CHANGE_CLUSTER_LIST', { obj }); }, - setHarborList({ commit }, obj) { - commit('CHANGE_HARBOR_LIST', { obj }); + setRegistryList({ commit }, obj) { + commit('CHANGE_REGISTRY_LIST', { obj }); }, }; // mutations @@ -68,8 +68,8 @@ const mutations = { state.curCluster = state.clusterList[0].name; } }, - CHANGE_HARBOR_LIST(state, { obj }) { - state.harborList = obj; + CHANGE_REGISTRY_LIST(state, { obj }) { + state.registryList = obj; }, }; export default { diff --git a/web/src/views/project/components/EnvCreate.vue b/web/src/views/project/components/EnvCreate.vue index da317af927b6eb9a16a0d5cef2ce5c18f790a7e0..567dc420b6fd91a516fed7377a8be77e25ad57d7 100644 --- a/web/src/views/project/components/EnvCreate.vue +++ b/web/src/views/project/components/EnvCreate.vue @@ -25,9 +25,9 @@ - - - + + + @@ -67,7 +67,7 @@ export default { name: '', clusterList: [], jenkinsList: [], - harborList: [], + registryList: [], namespaceList: [], // 是否属于编辑状态 isEdit: false, @@ -87,7 +87,7 @@ export default { arrange_env: [ { required: true, message: '请输入ENV标识', trigger: 'blur' }, ], - harbor: [ + registry: [ { required: true, message: '请输入镜像仓库', trigger: 'blur' }, ], ci_server: [ @@ -122,8 +122,8 @@ export default { case 'jenkins': this.jenkinsList.push(element) break; - case 'harbor': - this.harborList.push(element) + case 'registry': + this.registryList.push(element) break; default: console.log("this type not support", element.type) @@ -144,7 +144,7 @@ export default { cluster: item.cluster || undefined, ci_server: item.ci_server || undefined, namespace: item.namespace || 'default', - harbor: item.harbor || undefined, + registry: item.registry || undefined, description: item.description || '', arrange_env: item.arrange_env || '', }; @@ -154,18 +154,18 @@ export default { this.rowId = item.id; } else { this.title = '新增'; - let defaultJenkins, defaultHarbor + let defaultJenkins, defaultRegistry if (this.jenkinsList.length > 0){ defaultJenkins = this.jenkinsList[0].id } - if (this.harborList.length > 0){ - defaultHarbor = this.harborList[0].id + if (this.registryList.length > 0){ + defaultRegistry = this.registryList[0].id } this.form = { name: '', cluster: undefined, ci_server: defaultJenkins, - harbor: defaultHarbor, + registry: defaultRegistry, namespace: 'default', description: '', arrange_env: '', @@ -188,7 +188,7 @@ export default { cluster: this.form.cluster, namespace: this.form.namespace || 'default', ci_server: this.form.ci_server, - harbor: this.form.harbor, + registry: this.form.registry, description: this.form.description, arrange_env: this.form.arrange_env }; diff --git a/web/src/views/setting/IntegrateSetting.vue b/web/src/views/setting/IntegrateSetting.vue index 3cb0e85aba801958c4f68e61b7127ec4d6bd68e5..bf8df4cbfa34289754c28b775c24c458840e4e2c 100644 --- a/web/src/views/setting/IntegrateSetting.vue +++ b/web/src/views/setting/IntegrateSetting.vue @@ -27,7 +27,7 @@
{{scope.row.type}}
-
+
{{scope.row.type}}
diff --git a/web/src/views/setting/components/IntegrateCreate.vue b/web/src/views/setting/components/IntegrateCreate.vue index ee423541c6e95c9ea52058392c0c2df3bfbb2688..f2835b2765e5bad4df89c7f9df84ba1b0a5b7ad9 100644 --- a/web/src/views/setting/components/IntegrateCreate.vue +++ b/web/src/views/setting/components/IntegrateCreate.vue @@ -57,17 +57,20 @@
-
- - +
+ + - + - + + + +
@@ -107,7 +110,7 @@ export default { settingTypeList: [ {"name": "kubernetes"}, {"name": "jenkins"}, - {"name": "harbor"} + {"name": "registry"} ], direction: 'rtl', // 是否属于编辑状态 @@ -161,6 +164,7 @@ export default { .catch(_ => {}); }, doCreate(flag, item) { + console.log("test",item) this.isEdit = flag; this.isKubernetes = false if (flag) {