在CI環境中執行Go測試和建置時,無需先安裝依賴項的原因是因為CI(持續整合)工具可以在每次建置時自動下載和安裝所需的依賴項。這樣做的好處是可以減輕開發人員的負擔,不需要手動維護依賴項的安裝和更新。同時,CI工具還可以確保每次建置都是在相同的環境中進行,避免了因為依賴項版本不一致而導致的建置失敗或結果不一致的問題。因此,在CI環境中執行Go測試和建置時,可以更方便和有效率地進行開發和測試工作。
我有一個有 makefile 的 go 專案
test: @go test -cover ./...
和一個 mod 檔
module path/to/repo go 1.19 require github.com/go-chi/chi/v5 v5.0.8
我建立了一個 github 操作範例來在 github pr 上執行測試
name: QA on pull request on: pull_request jobs: run-tests: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Go uses: actions/setup-go@v3 with: go-version: 1.19 - name: Run tests run: make test
我想知道為什麼這個工作流程在沒有 install dependency
步驟的情況下運作。專案本身正在使用外部依賴項,我認為應該有一個運行 go get ./...
如果不存在,go 會在背景安裝它們嗎?或 actions/setup-go@v3
操作是否安裝相依性?
根據go test
文件(或您可以執行go help test
本地閱讀其描述):
「Go test」重新編譯每個套件以及名稱與檔案模式「*_test.go」相符的任何檔案。
它也安裝所有依賴項;因此,當操作執行 go test
時,就會發生這種情況。您也許可以在日誌中觀察到它。
actions/setup-go@v3
不依賴程式碼本身。它只是設定您要求的 go
環境。在您的設定中,如果您交換 setup-go
和 checkout
,它仍然有效。
以上是為什麼可以在 CI 環境中運行 Go 測試和建置而無需先安裝相依性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!