使用 GB 构建 Go project
lidashuang · · 2283 次点击 · · 开始浏览GB 介绍
- Site: https://getgb.io/
- Github: https://github.com/constabula...
官网首页介绍A project based build tool for the Go programming language.
所以gb 是一个构建工具,依赖管理插件完成的 gb-vendor
doc
为什么用gb,最喜欢的一点是 Project based workflow 基于 project
bashd,而不是 GOPATH bashd
项目不需要必须在 GOPATH 下
项目结构
两个重要的目录
- $PROJECT/src/ 我们自己的业务代码
- $PROJECT/vendor/src/ 第三方的依赖在这
比如 一个 名字叫 redeem 的项目, 项目结构
.
├── README.md
├── bin
│ └── redeem
├── src
│ └── redeem
│ └── main.go
└── vendor
├── manifest
└── src
├── github.com
└── gopkg.in
使用 gb vendor 处理依赖, 比如
$ gb vendor fetch github.com/urfave/cli
Gitlab CI
要想使用Go build 方式在 GOPATH 里构建也非常方便, 我在Gitlab ci
就是这么处理的
Gitlab ci上构建项目使用了 image: golang:latest
并没有安装gb工具,可以直接使用 go build
只需要把依赖 /vendor/src 放到 src/redeem/vendor , GOPATH 设置了GOPATH: $CI_PROJECT_DIR
如 before_script: 部分
image: golang:latest
variables:
GOPATH: $CI_PROJECT_DIR
before_script:
- mv vendor/src/* src/redeem/vendor/
- cd src/redeem
stages:
- test
- build
format:
stage: test
script:
- go fmt $(go list ./... | grep -v /vendor/)
- go vet $(go list ./... | grep -v /vendor/)
- go test -race $(go list ./... | grep -v /vendor/)
compile:
stage: build
script:
- GOOS=darwin GOARCH=amd64 go build -o $CI_PROJECT_DIR/redeem_mac
- GOOS=windows GOARCH=amd64 go build -o $CI_PROJECT_DIR/redeem_win
artifacts:
paths:
- redeem_mac
- redeem_win
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
GB 介绍
- Site: https://getgb.io/
- Github: https://github.com/constabula...
官网首页介绍A project based build tool for the Go programming language.
所以gb 是一个构建工具,依赖管理插件完成的 gb-vendor
doc
为什么用gb,最喜欢的一点是 Project based workflow 基于 project
bashd,而不是 GOPATH bashd
项目不需要必须在 GOPATH 下
项目结构
两个重要的目录
- $PROJECT/src/ 我们自己的业务代码
- $PROJECT/vendor/src/ 第三方的依赖在这
比如 一个 名字叫 redeem 的项目, 项目结构
.
├── README.md
├── bin
│ └── redeem
├── src
│ └── redeem
│ └── main.go
└── vendor
├── manifest
└── src
├── github.com
└── gopkg.in
使用 gb vendor 处理依赖, 比如
$ gb vendor fetch github.com/urfave/cli
Gitlab CI
要想使用Go build 方式在 GOPATH 里构建也非常方便, 我在Gitlab ci
就是这么处理的
Gitlab ci上构建项目使用了 image: golang:latest
并没有安装gb工具,可以直接使用 go build
只需要把依赖 /vendor/src 放到 src/redeem/vendor , GOPATH 设置了GOPATH: $CI_PROJECT_DIR
如 before_script: 部分
image: golang:latest
variables:
GOPATH: $CI_PROJECT_DIR
before_script:
- mv vendor/src/* src/redeem/vendor/
- cd src/redeem
stages:
- test
- build
format:
stage: test
script:
- go fmt $(go list ./... | grep -v /vendor/)
- go vet $(go list ./... | grep -v /vendor/)
- go test -race $(go list ./... | grep -v /vendor/)
compile:
stage: build
script:
- GOOS=darwin GOARCH=amd64 go build -o $CI_PROJECT_DIR/redeem_mac
- GOOS=windows GOARCH=amd64 go build -o $CI_PROJECT_DIR/redeem_win
artifacts:
paths:
- redeem_mac
- redeem_win