Sdílet prostřednictvím


Kurz: Nastavení binární mezipaměti vcpkg pomocí GitHub Packages v pracovním postupu GitHub Actions

Poznámka:

Tento kurz používá informační kanály NuGet hostované v GitHub Packages, ale stejné pokyny je možné použít pro jiné poskytovatele informačních kanálů NuGet, například Azure Artifacts s minimálními změnami.

GitHub Packages nabízí pohodlné úložiště pro binární balíčky NuGet vytvořené nástrojem vcpkg. V tomto kurzu vám ukážeme, jak nastavit binární mezipaměť v pracovním postupu GitHub Actions, který jako vzdálené úložiště používá GitHub Packages.

V tomto kurzu se naučíte:

Požadavky

  • Editor kódu
  • Úložiště GitHub pomocí GitHub Actions
  • Projekt využívající vcpkg

1. Poskytnutí osobního přístupového tokenu GitHubu

Postupujte podle pokynů GitHubu a vygenerujte klasický token PAT (Personal Access Token) pro vaše úložiště, nezapomeňte mu packages:write udělit oprávnění a packages:read oprávnění.

Pak přidejte pat GitHubu jako tajný klíč dostupný v pracovních postupech GitHub Action vašeho úložiště. V tomto kurzu předpokládáme, že pojmenujete svůj tajný kód jako GH_PACKAGES_TOKEN.

Předdefinovaný pat poskytnutý GITHUB_TOKEN pouze má packages:read oprávnění, můžete ho použít, pokud máte v pracovním postupu v úmyslu mít binární mezipaměť jen pro čtení.

2 . Bootstrap vcpkg

Vcpkg získá vlastní kopii spustitelného nuget.exe souboru, který používá při operacích binární mezipaměti. Tento kurz používá vcpkg-acquired nuget.exe.

Přidejte do pracovního postupu krok pro bootstrap vcpkg:

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

Možná budete muset nahradit umístění skriptu vcpkg bootstrap správným skriptem pro váš pracovní postup. V tomto kurzu se předpokládá, že vcpkg se nachází ve vcpkg složce v kořenovém adresáři úložiště.

3. Nastavení požadovaných proměnných prostředí

Do souboru pracovního postupu přidejte následující proměnné prostředí (nahraďte <OWNER> uživatelským jménem nebo názvem organizace GitHubu):

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"

Možná budete muset nahradit hodnotu VCPKG_EXE umístěním spustitelného souboru vcpkg generovaného v kroku bootstrap vcpkg .

V tomto kroku konfigurujete VCPKG_BINARY_SOURCES použití informačního kanálu GitHub Packages jako binárního zdroje ukládání do mezipaměti, přečtěte si referenční informace o binární mezipaměti.

4. Přidání balíčků GitHubu jako zdroje NuGet

Příkaz vcpkg fetch nuget vypíše umístění souboru vcpkg-acquired nuget.exe, v případě potřeby stáhne spustitelný soubor.

Do souboru pracovního postupu GitHub Actions přidejte následující krok:

- 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 }}"

V Linuxu je potřeba mono spustit nuget.exe. Spouštěče GitHub Actions používající Ubuntu jsou součástí mono předinstalované instalace. V opačném případě můžete nainstalovat mono pomocí správce systémových balíčků vaší distribuce.

- 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 }}"

Možná budete muset nahradit GH_PACKAGES_TOKEN správným názvem tajného kódu, který jste zadali pat vygenerovanému v kroku osobního přístupového tokenu GitHubu.

A to je vše! Vcpkg teď nahraje nebo obnoví balíčky z vašeho informačního kanálu NuGet hostovaného na GitHub Packages v rámci pracovního postupu GitHub Acions.

Další kroky

Tady jsou další úkoly, které můžete vyzkoušet: