Einführung
In dieser Anleitung erfährst du, wie du ein Go-Paket erstellst, testest und veröffentlichst.
GitHub-gehostete Runner haben einen Toolcache mit vorinstallierter Software, die Abhängigkeiten für Go einschließt. Eine vollständige Liste der aktuellen Software und der vorinstallierten Versionen von Go findest du unter AUTOTITLE.
Voraussetzungen
Du solltest bereits mit der YAML-Syntax vertraut sein und wissen, wie sie mit GitHub Actions verwendet wird. Weitere Informationen finden Sie unter AUTOTITLE.
Du solltest über grundlegende Kenntnisse in Bezug auf die Go-Programmiersprache verfügen. Weitere Informationen findest du unter Erste Schritte mit Go.
Verwenden einer Go-Workflowvorlage
Fügen Sie für einen schnellen Einstieg dem Verzeichnis .github/workflows Ihres Repositorys eine Workflowvorlage hinzu.
GitHub bietet eine Go-Workflowvorlage, die für die meisten Go-Projekte funktionieren sollte. In den nachfolgenden Abschnitten dieser Anleitung finden Sie Beispiele dafür, wie diese Workflowvorlage angepasst werden kann.
-
Navigieren Sie auf GitHub zur Hauptseite des Repositorys.
-
Klicke unter dem Repositorynamen auf Actions.

-
Wenn du bereits über einen Workflow im Repository verfügst, klicke auf Neuer Workflow.
-
Auf der Seite „Workflow auswählen“ wird eine Auswahl empfohlener Workflowvorlagen angezeigt. Suchen Sie nach „go“.
-
Filtern Sie die Auswahl von Workflows, indem Sie auf Continuous Integration klicken.
-
Klicken Sie im Workflow „Go – von { % daten variables.product.prodname_actions %}“ auf Konfigurieren.

-
Bearbeiten Sie den Workflow nach Bedarf. Ändern Sie zum Beispiel die Version von Go.
-
Klicke auf Änderungen committen.
Die -Workflowdatei wird dem -Verzeichnis Ihres Repositorys hinzugefügt.
Angeben einer Go-Version
Der einfachste Weg, eine Go-Version anzugeben, bietet die Aktion von GitHub. Weitere Informationen finden Sie unter der Aktion .
Um eine vorinstallierte Version von Go auf einen von GitHub gehosteten Runner zu verwenden, musst du die relevante Version an die -Eigenschaft der -Aktion übergeben. Mit dieser Aktion wird im Toolcache der jeweiligen Runner nach einer bestimmten Version von Go gesucht, und die erforderlichen Binärdateien werden hinzugefügt. Diese Änderungen bleiben für den Rest des Auftrags beibehalten.
Die Aktion wird als Methode zur Verwendung von Go mit GitHub Actions empfohlen, da damit ein konsistentes Verhalten bei verschiedenen Runnern und verschiedenen Version von Go gewährleistet werden kann. Wenn du einen selbstgehosteten Runner verwendest, musst du .NET installieren und zu hinzufügen.
Verwenden mehrerer Versionen von Go
name: Go
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
go-version: [ '1.19', '1.20', '1.21.x' ]
steps:
- uses: actions/checkout@v5
- name: Setup Go ${{ matrix.go-version }}
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
# You can test your matrix by printing the current Go version
- name: Display Go version
run: go version
name: Go
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
go-version: [ '1.19', '1.20', '1.21.x' ]
steps:
- uses: actions/checkout@v5
- name: Setup Go ${{ matrix.go-version }}
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
# You can test your matrix by printing the current Go version
- name: Display Go version
run: go version
Verwenden einer bestimmten Version von Go
Du kannst einen Auftrag so konfigurieren, dass eine bestimmte Version von Go verwendet wird, z. B. . Alternativ kannst du auch Syntax für semantische Versionierung verwenden, um die neuste Nebenversion abzurufen. In diesem Beispiel wird das neueste Patchrelease von Go 1.21 verwendet:
- name: Setup Go 1.21.x
uses: actions/setup-go@v5
with:
# Semantic version range syntax or exact version of Go
go-version: '1.21.x'
- name: Setup Go 1.21.x
uses: actions/setup-go@v5
with:
# Semantic version range syntax or exact version of Go
go-version: '1.21.x'
Installieren von Abhängigkeiten
Du kannst zum Installieren von Abhängigkeiten verwenden:
steps:
- uses: actions/checkout@v5
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.21.x'
- name: Install dependencies
run: |
go get .
go get example.com/octo-examplemodule
go get example.com/[email protected]
steps:
- uses: actions/checkout@v5
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.21.x'
- name: Install dependencies
run: |
go get .
go get example.com/octo-examplemodule
go get example.com/[email protected]
Abhängigkeiten „cachen“ (zwischenspeichern)
Du kannst Abhängigkeiten mithilfe der Aktion zwischenspeichern und wiederherstellen. Bei Verwendung der -Aktion ist das Zwischenspeichern standardmäßig aktiviert.
Die -Aktion sucht nach der Abhängigkeitsdatei im Repositorystamm und verwendet den Hash der Abhängigkeitsdatei als Teil des Cacheschlüssels.
Du kannst den -Parameter in Fällen verwenden, in denen mehrere Abhängigkeitsdateien verwendet werden, oder wenn sie sich in verschiedenen Unterverzeichnissen befinden.
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.17'
cache-dependency-path: subdir/go.sum
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.17'
cache-dependency-path: subdir/go.sum
Wenn du eine benutzerdefinierte Anforderung hast oder genauere Steuerungsmöglichkeiten zum Zwischenspeichern benötigst, kannst du die Aktion verwenden. Weitere Informationen finden Sie unter AUTOTITLE.
Deinen Code bauen und testen
Du kannst die gleichen Befehle verwenden, die du auch lokal verwendest, um deinen Code zu bauen und zu testen. In diesem Beispielworkflow wird veranschaulicht, wie die Befehle und in einem Auftrag verwendet werden:
name: Go
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.21.x'
- name: Install dependencies
run: go get .
- name: Build
run: go build -v ./...
- name: Test with the Go CLI
run: go test
name: Go
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.21.x'
- name: Install dependencies
run: go get .
- name: Build
run: go build -v ./...
- name: Test with the Go CLI
run: go test
Workflow-Daten als Artefakte paketieren
Nach Abschluss eines Workflows kannst du die resultierenden Artefakte für die Analyse hochladen. Zum Beispiel kann es notwendig sein, Logdateien, Core Dumps, Testergebnisse oder Screenshots zu speichern. Im folgenden Beispiel wird gezeigt, wie die Aktion zum Hochladen von Testergebnissen verwendet werden kann.
Weitere Informationen finden Sie unter AUTOTITLE.
name: Upload Go test results
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
go-version: [ '1.19', '1.20', '1.21.x' ]
steps:
- uses: actions/checkout@v5
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
- name: Install dependencies
run: go get .
- name: Test with Go
run: go test -json > TestResults-${{ matrix.go-version }}.json
- name: Upload Go test results
uses: actions/upload-artifact@v4
with:
name: Go-results-${{ matrix.go-version }}
path: TestResults-${{ matrix.go-version }}.json
name: Upload Go test results
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
go-version: [ '1.19', '1.20', '1.21.x' ]
steps:
- uses: actions/checkout@v5
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
- name: Install dependencies
run: go get .
- name: Test with Go
run: go test -json > TestResults-${{ matrix.go-version }}.json
- name: Upload Go test results
uses: actions/upload-artifact@v4
with:
name: Go-results-${{ matrix.go-version }}
path: TestResults-${{ matrix.go-version }}.json