熟悉PHP和jenkins的一套流程,对静态语言不太熟悉想要了解下Golang在实际项目中的部署发布流程?只是单应用,没有用到docker
go的项目中包管理是使用Go_Module的,代码库中需要上传vendor文件夹吗?还是说在打包的服务器配置好环境后,jenkins拉完代码后执行go mod download ,go mod vendor最后在build后把二进制发到其他服务器。 描述的可能不准确,请教一下大家大致的一个流程。
###编译 & 发布
主要就两点,第一要静态编译,将GOOS和GOARCH设置对应的系统,然后编译那个系统下的二进制文件;第二单文件可以直接传文件,多文件就删除多余的文件保留运行需要的文件,然后tar包压缩再传输。传输直接用Jenkins ssh插件传,然后解压执行下重启命令或脚本;或者使用ssh传递到发布包中间存储服务器,然后发布平台再去操作。
# 或者插件
git clone .../xxx
# 静态编译
cd xxx
GO111MODULE=on CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags "-s -w" -o app app.go
rm -rf xx xx2
# 压缩包
cd -
tar -zcvf xxx.tar.gz xxx
依赖
依赖需要看自己依赖管理方式,个人推荐使用goproxy server搭建内部包缓存服务器。上传vendor是很可靠的方法,第三方依赖有些太不稳定了。