DevOps技术——入门框架搭建(base on Go)

DevOps :Development和Operations的组合词

它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。 ——来自百度百科

DevOps技术——入门框架搭建(base on Go)_第1张图片

接下来,我将把我搭建该技术框架的入门过程记录下来:

  • 过程中遇到很多坑,只要硬着头皮上就没什么能把你阻挡,让我们一起go!go!go!
  • 需求:在日常开发过程中,需要频繁的修改业务逻辑,然后需要部署到服务器上供QA测试。这个过程对于大多数开发人员来说不是难事,但是这个重复性的过程很浪费开发人员的时间,我们希望达到,只要我们将改好的业务逻辑代码commit & push,自动部署更新到服务器上并启动。就可以测试了。

一、首先写一个自动部署的服务:

/*
* @Author: Hifun
* @Date: 2020/1/3 16:07
 */
package main

import (
	"fmt"
	"io"
	"net/http"
	"os/exec"
)

func reLaunch() {
	path := `../deploy.sh`  // shell脚本
	cmd := exec.Command("/bin/bash", "-c", path)
	err := cmd.Start()  // 这里引入了"os/exec"包,来操作外部的命令和可执行文件
	if err != nil {
		fmt.Printf("Execute Shell:%s failed with error:%s", path, err.Error())
		//return
	}
	fmt.Printf("Executing command: %v ...\n", path)
	cmd.Wait()
}

func firstPage(w http.ResponseWriter, r *http.Request) {
	io.WriteString(w, "

Hello ,this is auto deploy server!

"
) // 给前端展示 reLaunch() // 这里利用的简单的异步操作 } func main() { http.HandleFunc("/", firstPage) // 绑定方法 http.ListenAndServe(":5000", nil) // 添加监听 }

这里使用url的方式来实现自动部署:他的方便之处在于:强大的github支持一种服务Webhooks,这个在后面说。
reLaunch方法里调用了外部shell脚本,来帮我们执行操作:杀掉当前已经运行的服务进程(如果存在的话)-> 拿到最新的代码 -> 启动服务.

#!/bin/bash
kill $(pgrep webserver)
cd ~/devops/
git pull https://github.com/hifuny/devops.git
cd webserver/
chmod 777 webserver
./webserver &

二、准备好了之后,我们把服务传到服务器并启动,在git里配置Webhooks.入口如图:

DevOps技术——入门框架搭建(base on Go)_第2张图片

三、然后,我这里新建一个测试用的业务逻辑的服务:

/*
* @Author: Hifun
* @Date: 2020/1/3 11:48
 */
package main

import (
    "io"
    "net/http"
)

func firstPage(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w,"

Hello! ,this is my firstPage!

"
) w.Write([]byte("Show!")) } func main() { http.HandleFunc("/", firstPage) http.ListenAndServe(":8000", nil) }

业务逻辑服务写好后传到服务器并启动,我们能通过url访问:
DevOps技术——入门框架搭建(base on Go)_第3张图片
看到已经启动成功。

四、然后我们在本地修改我们的业务逻辑代码,测试一下之前的自动化工具:

    io.WriteString(w,"

Hello! ,i am changed by deploy!

"
) w.Write([]byte("Success!"))

执行commit, push
可以看到我们的脚本已经自动执行:
DevOps技术——入门框架搭建(base on Go)_第4张图片

五、然后再访问我们之前的业务逻辑的服务:

DevOps技术——入门框架搭建(base on Go)_第5张图片
已经成功更新了!
在整个过程中有以下几点是需要我们准备的:

  1. go为我们提供了良好的跨平台的特性,因此我们只需要打包对应的 Linux 的可执行二进制文件就好了。设置的方法在我的上一篇教程里。
  2. 要掌握一定的关于shell脚本的基础命令。
  3. 对git的基本使用。
  4. 对Linux系统关于文件权限的基本了解。
  5. 在实际操作的过程中可能会遇到各种问题,要有探究到底的勇气和信心。

——来自一个程序员小学生,欢迎学习交流。
点赞,并关注我,让我们一起变得更强。

你可能感兴趣的:(go语言,devops,go,golang)