本篇會紀錄如何在 Jenkins 測試 Golang 專案,直接拿 go-hello 當作本篇範例。
安裝 Jenkins
請直接參考官網 Wiki 安裝方式,完成後可以發現預設跑在 8080
port,搭配 Nginx 設定就可以跑在 80
port。
|
|
安裝 Golang Plugin
請先到 Manage Jenkins > Manage Plugins > Available 找到 Go Plugin,安裝後,請到 Global Tool Configuration
內把要測試的版本安裝到 Jenkins 內
設定 Jenkins 專案
要跑 golang 測試非常簡單,只需要兩個指令就可以測試
設定完成後,跑測試,會出現底下錯誤訊息
package github.com/gin-gonic/gin: cannot download, $GOPATH not set. For more details see: go help gopath
可以發現 jenkins 預設不會將 $GOPATH
設定好,所以必須手動將 $GOPATH
相關目錄設定完成,請不要將 $WORKSPACE
設定成 $GOPATH
,因為 $WORKSPACE
目錄底下包含 src
, pkg
, bin
三大目錄,請將底下 Script 設定到專案內
附上設定圖檔
從上面可以發現,我們手動建立了 gopath
目錄來指定為 $GOPATH
,並且將專案的目錄都設定好後,把 $WORKSPACE
內所有檔案透過 rsync
方式丟到 $GOPATH
內,這樣就可以進行測試了。export
可以用 EnvInject Plugin 取代。
結論
很多人會問為什麼 $GOPATH
是指定在 $WORKSPACE/gopath
而不是 $GOROOT/gopath
,如果採用後者的話,這樣多個專案使用不同版本的第三方套件就會出問題,而且共用目錄會造成蠻多額外問題,也無法在測試後完整刪除相關目錄。將 $GOPATH
設定在專案內就可以透過 Workspace Cleanup Plugin 直接清除,讓每次測試環境都是非常乾淨。