Golang
Golang语言识别方式
当源代码根目录下存在 go.mod
文件,且不存在 Dockerfile
文件时,Rainbond 会将源代码识别为 Golang
项目。
编译原理
- 预编译处理完成后,会根据语言类型选择
Golang
的buildpack
去编译项目.在编译过程中会安装定义的Golang
版本; - 编译完成后会检查是否在平台设置了
Procfile
参数,若配置了会重写启动命令配置文件 Procfile。
Golang项目源码规范
在此步骤中,你需要提供一个可用的Go源码程序用来部署在 Rainbond 平台上,此应用程序至少需要满足如下条件:
本地可以正常运行的
go build
,go run
。源码程序必须托管在gitlab等相关git或者svn服务上。
编译指定模块
如果在当前项目中存在多个服务,即可以编译成多个二进制,或者 main 文件不在代码主目录中。golang 中通常使用 cmd 路径下一个包一个服务。这时按照上述方式还不能正确的进行编译和运行。
环境变量中添加 BUILD_GO_INSTALL_PACKAGE_SPEC
变量定义组件编译包入口路径,例如:
BUILD_GO_INSTALL_PACKAGE_SPEC=goodrain.com/app-store/cmd/manage-server
其中 goodrain.com/app-store
是项目主名称,与go.mod中的 module
一致。
/cmd/manage-server
是相对于代码主目录的当前组件main入口代码所在包路径。
Procfile规范
必须通过代码根目录下上传 Procfile
文件,或者声明环境变量 BUILD_PROCFILE
的方式定义启动命令,格式如下:
web: hello
web:
和hello
之间有一个空格- 文件结尾不能包含特殊字符
hello
为编译后的二进制
对于指定模块进行编译的项目而言,应做如下定义:
web: web: bin/manage-server
其中 manage-server
就是默认的cmd目录下服务子目录路径。二进制文件统一存放于 bin目录下。
编译运行环境设置
配置Golang版本
主流支持版本 go1.10.5
,go1.11.2
,云帮默认版本 go1.11.2
。
#支持版本
go1.9.7 go1.8.7 go1.11.2 go1.11 go1.11.1 go1.10.5 go1.10.4
Go Tools版本
- Dep 默认支持版本v0.4.1
- Glide 默认支持版本v0.12.3
- Govendor 默认支持版本v1.0.8
- GB 默认支持版本 0.4.4
- PkgErrors 默认支持版本 0.8.0
- HG 默认支持版本3.9
- TQ 默认支持版本v0.5
- MattesMigrate 默认支持版本v3.0.0