Go Module 導入到專案內且搭配 Travis CI 或 Drone 工具

栏目: 服务器 · 发布时间: 5年前

内容简介:相信各位更多實戰影片可以參考我的

Go Module 導入到專案內且搭配 Travis CI 或 Drone 工具

相信各位 Go 語言 開發者陸陸續續都將專案從各種 Vendor 工具 轉換到 Go Module ,本篇會帶大家一步一步從舊專案轉換到 Go Module,或是該如何導入新專案,最後會結合 CI/CD 著名的兩套工具 TravisDrone 搭配 Go Module 測試。

影片介紹

  1. 舊專案內 vendor 轉換成 go module 設定 (1:15)
  2. 新專案如何啟用 go module (6:20)
  3. 在 Travis CI 或 Drone 如何使用 go module (8:31)
  4. 在開源專案內並存 vendor 及 go module (介紹 Gin 如何使用 vendor 及 go module) (15:00)

更多實戰影片可以參考我的 Udemy 教學系列

舊專案

假設原本的專案有導入 vendor 工具類似 govendor 或 dep,可以在目錄底下找到 vendor/vendor.jsonGopkg.toml ,這時候請在專案目錄底下執行

$ go mod init github.com/appleboy/drone-line
$ go mod download

您會發現 go module 會從 vendor/vendor.jsonGopkg.toml 讀取相關套件資訊,接著寫進去 go.mod 檔案,完成後可以下 go mod dowload 下載所有套件到 $HOME/go/pkg/mod

新專案

新專案只需要兩個步驟就可以把相關套件設定好

$ go mod init github.com/appleboy/drone-line
$ go mode tidy

其中 tidy 可以確保 go.mod 或 go.sum 裡面的內容都跟專案內所以資料同步,假設在程式碼內移除了 package,這樣 tidy 會確保同步性移除相關 package。

整合 Travis 或 Drone

go module 在 1.11 版本預設是不啟動的,那在 Travis 要把 GO111MODULE 環境變數打開

matrix:
  fast_finish: true
  include:
  - go: 1.11.x
    env: GO111MODULE=on

完成後可以到 Travis 的環境看到底下 go get 紀錄

Go Module 導入到專案內且搭配 Travis CI 或 Drone 工具

而在 Drone 則是設定如下:

steps:
  - name: testing
    image: golang:1.11
    pull: true
    environment:
      GO111MODULE: on
    commands:
      - make vet
      - make lint
      - make misspell-check
      - make fmt-check
      - make build_linux_amd64
      - make test

Go Module 導入到專案內且搭配 Travis CI 或 Drone 工具

結論

在開源專案內為了相容許多 Go 版本,所以 Gin 同時支援了 govendor 及 go module,其實還蠻難維護的,這邊可以透過 travis 環境變數的判斷來達成目的:

language: go
sudo: false
go:
  - 1.6.x
  - 1.7.x
  - 1.8.x
  - 1.9.x
  - 1.10.x
  - 1.11.x
  - master

matrix:
  fast_finish: true
  include:
  - go: 1.11.x
    env: GO111MODULE=on

git:
  depth: 10

before_install:
  - if [[ "${GO111MODULE}" = "on" ]]; then mkdir "${HOME}/go"; export GOPATH="${HOME}/go"; fi

install:
  - if [[ "${GO111MODULE}" = "on" ]]; then go mod download; else make install; fi
  - if [[ "${GO111MODULE}" = "on" ]]; then export PATH="${GOPATH}/bin:${GOROOT}/bin:${PATH}"; fi
  - if [[ "${GO111MODULE}" = "on" ]]; then make tools; fi

詳細設定請 參考 .travis 設定


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Development Recipes

Web Development Recipes

Brian P. Hogan、Chris Warren、Mike Weber、Chris Johnson、Aaron Godin / Pragmatic Bookshelf / 2012-1-22 / USD 35.00

You'll see a full spectrum of cutting-edge web development techniques, from UI and eye candy recipes to solutions for data analysis, testing, and web hosting. Make buttons and content stand out with s......一起来看看 《Web Development Recipes》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具