這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
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:latestvariables: GOPATH: $CI_PROJECT_DIRbefore_script: - mv vendor/src/* src/redeem/vendor/ - cd src/redeemstages: - test - buildformat: 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