在之前的文章 - 使用 Glide 管理 Go 套件中,我們示範了一個簡單的 Glide 例子,本篇將會以它為基礎來看看如何在 GitLab CI 編譯一個 Go 項目。
開始之前
我已在 $GOPATH 下創建了一個新項目,並從 glide-example 複製所有文件到該文件夾。當中包括:
- .gitignore
- glide.lock
- glide.yaml
- README.md (非必須的)
- vendor/
先確認能夠它們能夠在本地編譯和運行。
設置持續整合管道
在項目的根文件夾新增一個 .gitlab-ci.yaml 。
.gitlab-ci.yaml
|
|
將這個新的 .gitlab-ci.yaml 文件 commit 並 push 到 gitlab。然後檢查被觸發管道的狀態。
該錯誤顯示在編譯時找不到所需套件的路徑。這是因為 GitLab CI 把該項目放置在 /builds/ykyuen/gitlab-ci-go-build 而該路徑並不在 $GOPATH 之下。
解決方案
為了解決編譯錯誤,我們必須確保項目被放於 $GOPATH 下。這可以透過在開始編譯之前創建一個 symbolic link(符號連結)來把項目的根文件夾掛到 $GOPATH 。以下是更改後的 .gitlab-ci.yaml 。
.gitlab-ci.yaml
|
|
把更改 push 到 gitlab 並再次檢查管道狀態。
Summary
- Go 項目文件夾總是要置於 $GOPATH 下。
- 把 vendor 文件夾放到代碼庫可以省去安裝和執行 glide install 這個動作。