检测远程服务器的环境,是否安装docker、docker-compose、git
()
| 349 | |
| 350 | // 检测远程服务器的环境,是否安装docker、docker-compose、git |
| 351 | func (instance *SSHRemote) CheckRemoteEnv() error { |
| 352 | var errMsg []string |
| 353 | |
| 354 | //1. 环境监测 |
| 355 | //1.1. GIT |
| 356 | output, err := instance.ExeSSHCommand("git version") |
| 357 | if err != nil || strings.Contains(strings.ToLower(output), "error:") { |
| 358 | if err != nil { |
| 359 | SmartIDELog.Importance(i18nInstance.Main.Err_env_git_check, err.Error(), output) |
| 360 | } |
| 361 | return errors.New("请检查当前环境是否满足要求,参考:https://smartide.cn/zh/docs/install/docker/linux/") |
| 362 | } |
| 363 | |
| 364 | //1.2. docker |
| 365 | output, err = instance.ExeSSHCommand("docker version") |
| 366 | if err != nil || strings.Contains(strings.ToLower(output), "error:") { |
| 367 | if err != nil { |
| 368 | SmartIDELog.Importance(i18nInstance.Main.Err_env_docker, err.Error(), output) |
| 369 | } |
| 370 | return errors.New("请检查当前环境是否满足要求,参考:https://smartide.cn/zh/docs/install/docker/linux/") |
| 371 | } |
| 372 | |
| 373 | //1.3. docker-compose |
| 374 | output, err = instance.ExeSSHCommand("docker-compose version") |
| 375 | if err != nil || |
| 376 | (!strings.Contains(strings.ToLower(output), "docker-compose version") && !strings.Contains(strings.ToLower(output), "docker compose version")) || |
| 377 | strings.Contains(strings.ToLower(output), "error:") { |
| 378 | if err != nil { |
| 379 | SmartIDELog.Importance(i18nInstance.Main.Err_env_Docker_Compose, err.Error(), output) |
| 380 | } |
| 381 | return errors.New("请检查当前环境是否满足要求,参考:https://smartide.cn/zh/docs/install/docker/linux/") |
| 382 | } |
| 383 | |
| 384 | //1.4. 默认的shell 是否为bash |
| 385 | output, err = instance.ExeSSHCommand("echo $SHELL") |
| 386 | if err != nil || !strings.Contains(output, "/bash") { |
| 387 | if err != nil { |
| 388 | SmartIDELog.Warning(err.Error()) |
| 389 | } |
| 390 | SmartIDELog.Debug(output) |
| 391 | return errors.New("请检查当前环境是否使用bash作为默认shell,参考:https://smartide.cn/zh/docs/install/docker/linux/") |
| 392 | } |
| 393 | |
| 394 | //2. 错误判断 |
| 395 | if len(errMsg) > 0 { |
| 396 | return errors.New(strings.Join(errMsg, "\\n ")) |
| 397 | } |
| 398 | |
| 399 | // 把当前用户加到docker用户组里面 |
| 400 | _, err = instance.ExeSSHCommand("sudo usermod -a -G docker " + instance.SSHUserName) |
| 401 | if err != nil { |
| 402 | SmartIDELog.Debug(err.Error()) |
| 403 | } |
| 404 | |
| 405 | // clone 代码库时,不提示:“are you sure you want to continue connecting (yes/no) ” |
| 406 | sshConfig, err := instance.ExeSSHCommand("[[ -f \".ssh/config\" ]] && cat ~/.ssh/config || echo \"\"") |
| 407 | if err != nil { |
| 408 | return err |
no test coverage detected