使用 GB 構建 Go project

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.