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 :