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)
}

最後直接部署成功!

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