MCPcopy Create free account
hub / github.com/OpenAtomFoundation/SmartIDE / CheckRemoteEnv

Method CheckRemoteEnv

cli/pkg/common/sshremote.go:351–419  ·  view source on GitHub ↗

检测远程服务器的环境,是否安装docker、docker-compose、git

()

Source from the content-addressed store, hash-verified

349
350// 检测远程服务器的环境,是否安装docker、docker-compose、git
351func (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

Callers 5

stopRemoteFunction · 0.95
VmInitFunction · 0.95
VmNewFunction · 0.95
RemoveRemoteFunction · 0.95
ExecuteVmStartCmdFunction · 0.95

Calls 6

ExeSSHCommandMethod · 0.95
ImportanceMethod · 0.80
WarningMethod · 0.80
DebugMethod · 0.80
ErrorMethod · 0.45
JoinMethod · 0.45

Tested by

no test coverage detected