Partager via


Tutoriel : Configurer un cache binaire vcpkg à l’aide de Packages GitHub dans un workflow GitHub Actions

Remarque

Ce tutoriel utilise des flux NuGet hébergés dans GitHub Packages, mais les mêmes instructions peuvent être utilisées pour d’autres fournisseurs de flux NuGet, par exemple : Azure Artifacts, avec des modifications minimales.

GitHub Packages offre un référentiel pratique pour vos packages binaires NuGet produits par vcpkg. Dans ce tutoriel, nous vous montrons comment configurer un cache binaire dans votre workflow GitHub Actions qui utilise GitHub Packages comme stockage distant.

Ce didacticiel vous montre comment effectuer les opérations suivantes :

Prérequis

  • Éditeur de code
  • Dépôt GitHub à l’aide de GitHub Actions
  • Un projet utilisant vcpkg

1 - Fournir un jeton d’accès personnel GitHub

Suivez les instructions de GitHub pour générer un jeton d’accès personnel (PAT) classique pour votre dépôt, veillez à lui donner les autorisations et packages:read les packages:write autorisations.

Ajoutez ensuite votre PAT GitHub en tant que secret disponible dans les flux de travail GitHub Action de votre dépôt. Dans ce tutoriel, nous partons du principe que vous nommez votre secret en tant que GH_PACKAGES_TOKEN.

Le pat intégré fourni par GITHUB_TOKEN l’autorisation est autorisé uniquement, vous pouvez l’utiliser packages:read si vous envisagez d’avoir un cache binaire en lecture seule dans votre flux de travail.

2 - Bootstrap vcpkg

vcpkg acquiert sa propre copie de l’exécutable nuget.exe qu’il utilise pendant les opérations de mise en cache binaire. Ce tutoriel utilise le vcpkg-acquire nuget.exe.

Ajoutez une étape pour démarrer vcpkg dans votre workflow :

- name: Bootstrap vcpkg
  shell: pwsh
  run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
  shell: bash
  run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh

Vous devrez peut-être remplacer l’emplacement du script de démarrage vcpkg par celui approprié pour votre flux de travail. Ce didacticiel suppose que vcpkg se trouve dans un vcpkg dossier à la racine du référentiel.

3 - Configurer les variables d’environnement requises

Ajoutez les variables d’environnement suivantes à votre fichier de flux de travail (remplacez <OWNER> par le nom d’utilisateur ou le nom de votre organisation GitHub) :

env: 
  USERNAME: <OWNER>
  VCPKG_EXE: ${{ github.workspace }}/vcpkg/vcpkg
  FEED_URL: https://nuget.pkg.github.com/<OWNER>/index.json
  VCPKG_BINARY_SOURCES: "clear;nuget,https://nuget.pkg.github.com/<OWNER>/index.json,readwrite"

Vous devrez peut-être remplacer la valeur par VCPKG_EXE l’emplacement de l’exécutable vcpkg généré à l’étape de démarrage vcpkg .

Dans cette étape, vous configurez VCPKG_BINARY_SOURCES pour utiliser votre flux GitHub Packages en tant que source de mise en cache binaire, lisez la référence de mise en cache binaire pour en savoir plus.

4 - Ajouter des packages GitHub en tant que source NuGet

La vcpkg fetch nuget commande génère l’emplacement du vcpkg-acquis nuget.exe, en téléchargeant l’exécutable si nécessaire.

Ajoutez l’étape suivante dans votre fichier de flux de travail GitHub Actions :

- name: Add NuGet sources
  shell: pwsh
  run: |
    .$(${{ env.VCPKG_EXE }} fetch nuget) `
      sources add `
      -Source "${{ env.FEED_URL }}" `
      -StorePasswordInClearText `
      -Name GitHubPackages `
      -UserName "${{ env.USERNAME }}" `
      -Password "${{ secrets.GH_PACKAGES_TOKEN }}"
    .$(${{ env.VCPKG_EXE }} fetch nuget) `
      setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" `
      -Source "${{ env.FEED_URL }}"

Sur Linux, vous devez mono exécuter nuget.exe. Les exécuteurs GitHub Actions utilisant Ubuntu sont préinstallés mono . Sinon, vous pouvez installer mono à l’aide du gestionnaire de package système de votre distribution.

- name: Add NuGet sources
  shell: bash
  env: 
    VCPKG_EXE: ${{ github.workspace }}/vcpkg/vcpkg
    USERNAME: <OWNER>
    FEED_URL: https://nuget.pkg.github.com/<OWNER>/index.json
  run: |
    mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
      sources add \
      -Source "${{ env.FEED_URL }}" \
      -StorePasswordInClearText \
      -Name GitHubPackages \
      -UserName "${{ env.USERNAME }}" \
      -Password "${{ secrets.GH_PACKAGES_TOKEN }}"
    mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
      setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" \
      -Source "${{ env.FEED_URL }}"

Vous devrez peut-être remplacer GH_PACKAGES_TOKEN le nom de secret correct que vous avez donné au PAT généré dans l’étape fournir un jeton d’accès personnel GitHub.

C’est tout ! vcpkg chargera ou restaure désormais des packages à partir de votre flux NuGet hébergé sur des packages GitHub à l’intérieur de votre workflow GitHub Actions.

Étapes suivantes

Voici d’autres tâches à essayer ensuite :