Heim > Backend-Entwicklung > Golang > Warum kann ich Go-Tests und Builds in einer CI-Umgebung ausführen, ohne vorher Abhängigkeiten zu installieren?

Warum kann ich Go-Tests und Builds in einer CI-Umgebung ausführen, ohne vorher Abhängigkeiten zu installieren?

WBOY
Freigeben: 2024-02-13 08:42:19
nach vorne
659 Leute haben es durchsucht

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

Der Grund, warum Sie beim Ausführen von Go-Tests und Builds in einer CI-Umgebung nicht zuerst Abhängigkeiten installieren müssen, liegt darin, dass CI-Tools (Continuous Integration) die erforderlichen Abhängigkeiten bei jedem Build automatisch herunterladen und installieren können. Dies hat den Vorteil, dass die Belastung für Entwickler reduziert wird und keine manuelle Wartung der Abhängigkeitsinstallation und -aktualisierungen erforderlich ist. Gleichzeitig können CI-Tools auch sicherstellen, dass jeder Build in derselben Umgebung ausgeführt wird, wodurch Buildfehler oder inkonsistente Ergebnisse aufgrund inkonsistenter Abhängigkeitsversionen vermieden werden. Daher können Entwicklungs- und Testarbeiten bequemer und effizienter durchgeführt werden, wenn Go-Tests und Builds in einer CI-Umgebung ausgeführt werden.

Frageninhalt

Ich habe ein Go-Projekt mit Makefile

test:
    @go test -cover ./...
Nach dem Login kopieren

und eine Mod-Datei

module path/to/repo

go 1.19

require github.com/go-chi/chi/v5 v5.0.8
Nach dem Login kopieren

Ich habe ein Github-Aktionsbeispiel erstellt, um Tests auf Github PR durchzuführen

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
Nach dem Login kopieren

Ich frage mich, warum dieser Workflow nicht den Schritt install dependency 步骤的情况下工作。项目本身正在使用外部依赖项,我认为应该有一个运行 go get ./...

hat

Wenn sie nicht existieren, werden sie dann im Hintergrund installiert? Oder installiert die Aktion actions/setup-go@v3 Abhängigkeiten? actions/setup-go@v3 操作是否安装依赖项?

解决方法

根据 go test 文档(或者您可以运行 go help test

Problemumgehung

Laut

Dokumentation (oder Sie können go help test ausführen Lesen Sie die Beschreibung vor Ort): go test „Go test“ kompiliert jedes Paket und jede Datei neu, deren Name mit dem Dateimuster „*_test.go“ übereinstimmt.

actions/setup-go@v3 不依赖于代码本身。它只是设置您要求的 go 环境。在您的设置中,如果您交换 setup-gocheckoutEs werden auch alle Abhängigkeiten installiert. Dies geschieht daher, wenn der Vorgang ausgeführt wird

. Möglicherweise können Sie es in den Protokollen beobachten. 🎜 🎜🎜, es funktioniert immer noch. 🎜

Das obige ist der detaillierte Inhalt vonWarum kann ich Go-Tests und Builds in einer CI-Umgebung ausführen, ohne vorher Abhängigkeiten zu installieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage