(cmd *cobra.Command, workspaceInfo workspace.WorkspaceInfo, kubernetes *k8s.KubernetesUtil, originK8sConfig *config.SmartIdeK8SConfig, tempK8sConfig config.SmartIdeK8SConfig, runAsUserName string)
| 359 | } |
| 360 | |
| 361 | func execPod(cmd *cobra.Command, workspaceInfo workspace.WorkspaceInfo, |
| 362 | kubernetes *k8s.KubernetesUtil, |
| 363 | originK8sConfig *config.SmartIdeK8SConfig, tempK8sConfig config.SmartIdeK8SConfig, |
| 364 | runAsUserName string) error { |
| 365 | // 等待启动 |
| 366 | common.SmartIDELog.Info("等待 deployment 启动...") |
| 367 | for { |
| 368 | ready, err := getDevContainerPodReady(*kubernetes, *originK8sConfig) |
| 369 | if err != nil { |
| 370 | common.SmartIDELog.ImportanceWithError(err) |
| 371 | } |
| 372 | if ready { |
| 373 | common.SmartIDELog.Debug("deployment pending") |
| 374 | break |
| 375 | } else { |
| 376 | time.Sleep(time.Second * 2) |
| 377 | } |
| 378 | } |
| 379 | devContainerPod, _, err := GetDevContainerPod(*kubernetes, tempK8sConfig) |
| 380 | if err != nil { |
| 381 | return err |
| 382 | } |
| 383 | |
| 384 | //5.5. agent |
| 385 | common.SmartIDELog.Info("install agent") |
| 386 | if workspaceInfo.CacheEnv == workspace.CacheEnvEnum_Server { // 只有是server的模式下才会去安装 agent, 因为镜像中会有 |
| 387 | err := kubernetes.CopyToPod(*devContainerPod, tempK8sConfig.Workspace.DevContainer.ServiceName, common.PathJoin("/usr/local/bin", "smartide-agent"), common.PathJoin("/", "smartide-agent"), runAsUserName) |
| 388 | if err != nil { |
| 389 | return err |
| 390 | } |
| 391 | // 通过对 actual repo url的判断,如果不上http打头,都是ssh模式clone |
| 392 | if workspaceInfo.GitCloneRepoUrl != "" && |
| 393 | strings.Index(workspaceInfo.GitCloneRepoUrl, "http") != 0 { |
| 394 | err = kubernetes.CopyLocalSSHConfigToPod(*devContainerPod, tempK8sConfig.Workspace.DevContainer.ServiceName, runAsUserName) |
| 395 | } |
| 396 | if err != nil { |
| 397 | return err |
| 398 | } |
| 399 | err = FeeadbackContainerId(cmd, workspaceInfo, devContainerPod.Name) |
| 400 | if err != nil { |
| 401 | return err |
| 402 | } |
| 403 | kubernetes.StartAgent(cmd, *devContainerPod, tempK8sConfig.Workspace.DevContainer.ServiceName, runAsUserName, workspaceInfo.ServerWorkSpace.ID) |
| 404 | |
| 405 | } |
| 406 | time.Sleep(time.Second * 10) // ? |
| 407 | |
| 408 | //5.1. git config |
| 409 | // 会通过agent生成 |
| 410 | if workspaceInfo.CliRunningEnv == workspace.CliRunningEnvEnum_Client { |
| 411 | if originK8sConfig.Workspace.DevContainer.Volumes.HasGitConfig.Value() { |
| 412 | common.SmartIDELog.Info("git config") |
| 413 | err = kubernetes.CopyLocalGitConfigToPod(*devContainerPod, tempK8sConfig.Workspace.DevContainer.ServiceName, runAsUserName) |
| 414 | if err != nil { |
| 415 | return err |
| 416 | } |
| 417 | } |
| 418 | } |
no test coverage detected