Go通过SSH部署项目到服务器

Go通过SSH部署项目到服务器

学习了Go语言后,打算利用最近比较空一点,写一个前端部署工具,不需要每次都复制粘贴的麻烦,这篇是主文件,利用利用之前写的几个方法完成部署

下面直接看代码,使用了上面封装的这几种方法

func main() {
	var conf = config.GetConfig()
	var (
		err        error
		sftpClient *sftp.Client
	)

	var startStr = "各单位请注意!开始部署%服务器啦!"
	var endStr = "完成部署%服务器啦!请注意清除缓存!"
 //获取命令行输入的mode字段,我们能用来区分部署到哪个服务器上
	mode := flag.String("mode", "local", "部署的服务器模式")
	flag.Parse()
	var remoteDir string
	var localFilePath string
    //下面就是对不同mode的不同处理
	switch *mode {
		case "test":
        //开始推送消息
			dingmsg.SendDingMsg(strings.Replace(startStr,"%","测试",1))
        //结束推送消息
			defer dingmsg.SendDingMsg(strings.Replace(endStr,"%","测试",1))
        //连接服务器
			sftpClient, err = connect.Connect(conf.TestUser, conf.TestPassWord, conf.TestHost, conf.TestPort)
        //设置本地/远程文件夹路径
			remoteDir = conf.TestRemotePath
			localFilePath = conf.TestLocalPath
		case "prod":
			dingmsg.SendDingMsg(strings.Replace(startStr,"%","正式",1))
			defer dingmsg.SendDingMsg(strings.Replace(endStr,"%","正式",1))
			sftpClient, err = connect.Connect(conf.ProdUser, conf.ProdPassWord, conf.ProdHost, conf.ProdPort)
			remoteDir = conf.ProdRemotePath
			localFilePath = conf.ProdLocalPath
		case "local":
			Fallthrough
		default:
			dingmsg.SendDingMsg(strings.Replace(startStr,"%","本地",1))
			defer dingmsg.SendDingMsg(strings.Replace(endStr,"%","本地",1))

			sftpClient, err = connect.Connect(conf.LocalUser, conf.LocalPassWord, conf.LocalHost, conf.LocalPort)
			remoteDir = conf.LocalRemotePath
			localFilePath = conf.LocalLocalPath
	}
	// 这里换成实际的 SSH 连接的 用户名,密码,主机名或IP,SSH端口

	if err != nil {
		log.Fatal(err)
	}
    //结束关闭服务
	defer sftpClient.Close()
	//先删除文件
	remove.Remove(sftpClient,remoteDir)
    //再上传文件
	upload.Upload(sftpClient,localFilePath,remoteDir)
}

最后直接部署成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章