自动化构建一个Go项目

承接上文,本文使用jenkins和gitlab来实现Go项目的自动化部署。

安装Go

因为国内网络原因,无法直接通过jenkins从golang.org上直接下载安装go,这里使用自定义下载go安装包。

首先在jenkins安装go插件 Go Plugin

然后去全局工具配置,配置go。选择

Untitled

别名这里选择填go,也可以别的。

标签可以不填。

压缩包(二进制)的下载URL填了:https://golang.google.cn/dl/go1.17.1.linux-amd64.tar.gz,这是go国内的下载方式。

解压目录选择了默认目录:/var/jenkins_home/tools/org.jenkinsci.plugins.golang.GolangInstallation

最后go会安装在 解压目录/go/别名/ 下。

Untitled

gitlab、jenkins搭建自动化运维

gitlab是一个代码管理项目,使用git作为管理工具。其实gitlab本身就集成了一套CI/CD流程,但是这里选择搭配更为简单的jenkins作为CI/CD。

jenkins是一个支持自动化构建、部署和测试的软件,并且提供了众多的插件。jenkins可以选择多种方式安装,这里选择使用docker。

服务器地址分别为:

gitlab: 192.168.1.0:9080

jenkins: 192.168.1.0:9081

部署机器: 192.168.1.1

使用spring cloud,nacos,dubbo,gateway搭建微服务

本文使用spring cloud,nacos,dubbo,gateway搭建微服务

启动nacos

nacos是阿里开源的一个组件,用于服务发现、注册中心与配置中心。

首先下载nacos server:https://github.com/alibaba/nacos

解压压缩包,打开bin目录。因为直接启动的话,会以集群模式启动,单机下会报错。所以有三种方法解决:

  1. 使用命令行启动,指定为单机模式:

    startup.cmd -m standalone
    
  2. 修改startup.cmd文件,将其修改为单机模式:

    set MODE="cluster"
    

    修改为:

    rem set MODE="cluster"
    set MODE="standalone"
    

    注: rem为注释语句

  3. 可以去修改数据库配置,感觉太麻烦了

建议第一种。

然后便能直接启动。

web页面地址为:http://localhost:8848/nacos/index.html

默认账号密码都是nacos

Goland的设置

Goland是JetBrains家的go编辑器。

GOROOT:Go安装的位置,该目录下有bin目录。不可以跟GOPATH设置同一目录

GOPATH:Go的工作目录,传统结构为下图。GOPATH跟项目不能是同一目录,项目应该在GOPATH目录下。但在go.mod出现之后,项目不再要求必须放在GOPATH目录下了,可以放在其他位置。

Goland%E7%9A%84%E8%AE%BE%E7%BD%AE%202e57580543d74529aec121013ade3d26/GOPATH.svg

GOPROXY:设置Go下载包时的代理。推荐使用GOPROXY=https://goproxy.io,也可以用别的。

现在go推荐的方式时使用go.mod管理项目的依赖包。使用go.mod之后,项目可以不放在GOPATH下的src目录,可以放在任意的地方,但是包依赖依旧会下载到GOPATH的pkg目录下。

go.mod在Go版本1.16前,可以通过 go env -w GO111MODULE=on 启用go.mod,1.16之后默认启用on。

gRPC的使用

grpc是由google开源的rpc(Remote Procedure Call,远程程序调用)框架,rpc用于跨平台、跨语言传输数据。

grpc采用的是http2协议。

使用

项目结构

grpc%206dc0246e96bb4264a82fa800e38e0102/Untitled.png

分别为client(客户端)、grpc(gRPC 服务)、server(服务端)。