Skip to main content

Création et test de code Go

DĂ©couvrez comment crĂ©er un flux de travail 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 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.

  1. Sur GitHub, accédez à la page principale du référentiel.

  2. Sous le nom de votre dépÎt, cliquez sur Actions.

    Capture d’écran des onglets du rĂ©fĂ©rentiel « github/docs Â». L’onglet « Actions Â» est mis en surbrillance avec un encadrĂ© orange.

  3. Si vous disposez dĂ©jĂ  d’un workflow dans votre dĂ©pĂŽt, cliquez sur Nouveau workflow.

  4. La page « Choisir un workflow Â» prĂ©sente une sĂ©lection de modĂšles de workflow recommandĂ©s. Recherchez « go Â».

  5. Filtrez la sélection des flux de travail en cliquant sur Intégration continue.

  6. Dans le flux de travail « Go - by GitHub Actions Â», cliquez sur Configurer.

    Capture d’écran de la page « Choisir un workflow Â». Le bouton « Configurer Â» dans le workflow « Go Â» est mis en Ă©vidence Ă  l’aide d’un rectangle orange.

  7. Modifiez le workflow en fonction des besoins. Par exemple, modifiez la version de Go.

  8. 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

YAML
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 :

YAML
      - 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 :

YAML
    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.

YAML
      - 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 :

YAML
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 Â».

YAML
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