Skip to main content

GitHub AE est actuellement en version limitée.

Création et test de code Go

Vous pouvez créer un workflow d’intégration continue (CI) pour générer et tester votre projet Go.

Introduction

Ce guide explique comment générer, tester et publier un package Go.

Les exécuteurs hébergés dans Vous devez installer les logiciels nécessaires sur vos exécuteurs autohébergés. Pour plus d’informations sur les exécuteurs autohébergés, consultez « Hébergement de vos propres exécuteurs ».

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 du workflow de démarrage Go

GitHub fournit un workflow de démarrage Go qui doit fonctionner pour la plupart des projets Go. Ce guide inclut des exemples que vous pouvez utiliser pour personnaliser le workflow de démarrage. Pour plus d’informations, consultez Workflow de démarrage Go.

Pour commencer rapidement, ajoutez le workflow de démarrage au répertoire .github/workflows de votre dépôt.

YAML
name: Go package

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Go
        uses: actions/setup-go@v3
        with:
          go-version: '1.15'

      - name: Build
        run: go build -v ./...

      - name: Test
        run: go test -v ./...

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

YAML
name: Go

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        go-version: [ '1.14', '1.15', '1.16.x' ]

    steps:
      - uses: actions/checkout@v4
      - name: Setup Go ${{ matrix.go-version }}
        uses: actions/setup-go@v3
        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.16.2. Vous pouvez également utiliser la syntaxe de versioning sémantique pour obtenir la dernière version mineure. Cet exemple utilise la dernière version mineure de Go 1.16.

YAML
      - name: Setup Go 1.16.x
        uses: actions/setup-go@v3
        with:
          # Semantic version range syntax or exact version of Go
          go-version: '1.16.x'

Installer les dépendances

Vous pouvez utiliser go get pour installer des dépendances :

YAML
    steps:
      - uses: actions/checkout@v4
      - name: Setup Go
        uses: actions/setup-go@v3
        with:
          go-version: '1.16.x'
      - name: Install dependencies
        run: |
          go get .
          go get example.com/octo-examplemodule
          go get example.com/octo-examplemodule@v1.3.4

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 :

YAML
name: Go
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Setup Go
        uses: actions/setup-go@v3
        with:
          go-version: '1.16.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 « Stockage des données de workflow en tant qu’artefacts ».

YAML
name: Upload Go test results

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        go-version: [ '1.14', '1.15', '1.16.x' ]

    steps:
      - uses: actions/checkout@v4
      - name: Setup Go
        uses: actions/setup-go@v3
        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@v3
        with:
          name: Go-results-${{ matrix.go-version }}
          path: TestResults-${{ matrix.go-version }}.json