Introduction
Ce guide explique comment générer, tester et publier un package Go.
Les exĂ©cuteurs hĂ©bergĂ©s dans GitHub ont un cache dâoutils oĂč sont prĂ©installĂ©s des logiciels, notamment les dĂ©pendances pour Go. Pour obtenir la liste complĂšte des logiciels Ă jour et des versions prĂ©installĂ©es de Swift et Xcode, consultez « ExĂ©cuteurs hĂ©bergĂ©s par GitHub ».
Prérequis
Vous devez dĂ©jĂ ĂȘtre familiarisĂ© avec la syntaxe YAML et savoir comment elle sâutilise avec GitHub Actions. Pour plus dâinformations, consultez « Workflow syntax for GitHub Actions ».
Il est recommandĂ© de connaĂźtre les bases du langage Go. Pour plus dâinformations, consultez Bien dĂ©marrer avec Go.
Utilisation dâun modĂšle de workflow Go
Pour démarrer rapidement, ajoutez un modÚle de workflow au répertoire .github/workflows
de votre référentiel.
GitHub fournit un modĂšle de workflow Go qui devrait fonctionner pour la plupart des projets Go. Les sections suivantes de ce guide donnent des exemples de la maniĂšre dont vous pouvez personnaliser ce modĂšle de workflow.
-
Sur GitHub, accédez à la page principale du référentiel.
-
Sous le nom de votre dépÎt, cliquez sur Actions.
-
Si vous disposez dĂ©jĂ dâun workflow dans votre dĂ©pĂŽt, cliquez sur Nouveau workflow.
-
La page « Choisir un workflow » présente une sélection de modÚles de workflow recommandés. Recherchez « go ».
-
Filtrez la sélection des flux de travail en cliquant sur Intégration continue.
-
Dans le flux de travail « Go - by GitHub Actions », cliquez sur Configurer.
-
Modifiez le workflow en fonction des besoins. Par exemple, modifiez la version de Go.
-
Cliquez sur Valider les changements.
Le fichier de workflow go.yml
est ajoutĂ© Ă lâannuaire .github/workflows
de votre référentiel.
SpĂ©cification dâune version de Go
Le moyen le plus simple de spĂ©cifier une version Go consiste Ă utiliser lâaction setup-go
fournie par GitHub. Pour plus dâinformations, consultez lâaction setup-go
.
Pour utiliser une version préinstallée de Go sur un exécuteur hébergé par GitHub, passez la version concernée à la propriété go-version
de lâaction setup-go
. Cette action recherche une version spĂ©cifique de Go Ă partir du cache dâoutils de chaque exĂ©cuteur, et ajoute les fichiers binaires nĂ©cessaires Ă PATH
. Ces modifications seront conservées pendant toute la durée du travail.
Lâaction setup-go
est recommandĂ©e pour lâutilisation de Go avec GitHub Actions, car cela contribue Ă garantir un comportement cohĂ©rent sur tous les exĂ©cuteurs et toutes les versions de Go. Si vous utilisez un exĂ©cuteur auto-hĂ©bergĂ©, vous devez installer Go et lâajouter Ă PATH
.
Utilisation de plusieurs versions de 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@v4 - 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@v4
- 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
Utilisation dâune version spĂ©cifique de Go
Vous pouvez configurer votre travail pour quâil utilise une version spĂ©cifique de Go, comme 1.20.8
. Vous pouvez également utiliser la syntaxe de versioning sémantique pour obtenir la derniÚre version mineure. Cet exemple utilise la derniÚre version corrective de Go 1.21 :
- 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'
Installer les dépendances
Vous pouvez utiliser go get
pour installer des dépendances :
steps: - uses: actions/checkout@v4 - 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/octo-examplemodule@v1.3.4
steps:
- uses: actions/checkout@v4
- 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/octo-examplemodule@v1.3.4
Mise en cache des dépendances
Vous pouvez mettre en cache et restaurer des dĂ©pendances Ă lâaide de lâaction setup-go
. Par défaut, la mise en cache est activée lors de l'utilisation de l'action setup-go
.
Lâaction setup-go
recherche le fichier de dépendance, go.sum
, à la racine du référentiel et utilise le hachage du fichier de dépendance comme élément de la clé de cache.
Vous pouvez utiliser le paramĂštre cache-dependency-path
pour les cas oĂč plusieurs fichiers de dĂ©pendance sont utilisĂ©s ou lorsquâils se trouvent dans des sous-rĂ©pertoires diffĂ©rents.
- 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
Si vous avez une exigence particuliĂšre ou si vous avez besoin dâun contrĂŽle plus prĂ©cis pour la mise en cache, vous pouvez utiliser lâaction cache
. Pour plus dâinformations, consultez « RĂ©fĂ©rence sur la mise en cache des dĂ©pendances ».
Génération et test de votre code
Vous pouvez utiliser les mĂȘmes commandes que celles que vous utilisez localement pour gĂ©nĂ©rer et tester votre code. Cet exemple de workflow montre comment utiliser go build
et go test
dans un travail :
name: Go on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - 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@v4
- 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
Empaquetage des donnĂ©es de workflow en tant quâartefacts
Une fois le workflow terminĂ©, vous pouvez charger les artefacts rĂ©sultants Ă des fins dâanalyse. Par exemple, vous devrez peut-ĂȘtre enregistrer des fichiers journaux, des vidages principaux, des rĂ©sultats de test ou des captures dâĂ©cran. Lâexemple suivant montre comment utiliser lâaction upload-artifact
pour charger les résultats de test.
Pour plus dâinformations, consultez « Stocker et partager des donnĂ©es avec les artefacts de workflow ».
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@v4 - 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@v4
- 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