相信比較少人知道 appveyor 這服務,我會接觸到此服務最大的原因是,要提供 Windows 的 Docker Image,並且上傳到 DockrHub,此服務提供了 Windows 環境,讓開發者可以透過此服務編譯 Windows 的 Binary 檔案,並且在 Windows 上執行測試,這對於我在寫 Go 語言開源專案非常有幫助,畢竟平常開發真的沒有 Windows 相關的環境可以使用。但是 appveyor 在更新第三方套件非常的慢,這時候我們想要用 GO 的 1.12 版本就需要自行來安裝,安裝方式其實也不難,請參考底下設定。
安裝指定 Go 語言版本
安裝特定版本的 Go 語言,只要自行下載 Windows msi 執行檔,接著安裝就可以了:
environment:
GOPATH: c:\gopath
GO111MODULE: on
GOVERSION: 1.12.4
install:
# Install the specific Go version.
- rmdir c:\go /s /q
- appveyor DownloadFile https://storage.googleapis.com/golang/go%GOVERSION%.windows-amd64.msi
- msiexec /i go%GOVERSION%.windows-amd64.msi /q
- go version
- go env
- ps: |
docker version
go version
- ps: |
$env:Path = "c:\gopath\bin;$env:Path"
會碰到這個問題最主要是 Go module 在 1.11.1 ~ 1.11.3 有個 bug 就是,只要在 go.mod 內寫了 go 1.12
這樣此套件就會判斷目前的 Go 版本,如果小於 go1.12 就無法編譯套件,這問題在 go1.11.4 已經被解決,但是 appveyor 還停留在 go 1.11.2 版本,所以造成需要自行升級 Go 版本。有需要在 Windows 測試 GO 語言的,現在透過此方式可以編譯不同版本的環境。