首頁  >  文章  >  後端開發  >  為什麼可以在 CI 環境中運行 Go 測試和建置而無需先安裝相依性?

為什麼可以在 CI 環境中運行 Go 測試和建置而無需先安裝相依性?

WBOY
WBOY轉載
2024-02-13 08:42:19632瀏覽

为什么可以在 CI 环境中运行 Go 测试和构建而无需先安装依赖项?

在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-gocheckout,它仍然有效。

以上是為什麼可以在 CI 環境中運行 Go 測試和建置而無需先安裝相依性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除