Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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. Konfigurace ověřování pro GitHub Packages
V tomto kurzu se používá vestavěný GITHUB_TOKEN od GitHub Actions. Pokud chcete povolit přístup ke službě GitHub Packages pro čtení i zápis, přidejte do pracovního postupu následující permissions blok:
permissions:
packages: write
Tím se udělí GITHUB_TOKEN potřebná oprávnění packages:write a packages:read.
Použití GITHUB_TOKEN má několik výhod:
- Není potřeba vytvářet ani spravovat další tajné kódy.
- Funguje automaticky pro žádosti o přijetí změn z forků (s přístupem jen pro čtení)
- Omezeno na konkrétní úložiště a spuštění pracovního postupu
Poznámka:
Případně můžete použít klasický token PAT (Personal Access Token), pokud potřebujete přístup mezi úložišti nebo jiné pokročilé scénáře. Postupujte podle pokynů GitHubu a vygenerujte klasický token PAT (Personal Access Token) s oprávněními packages:writepackages:read a pak ho přidejte do úložiště jako tajný kód a použijte ${{ secrets.YOUR_PAT_NAME }} ho ${{ secrets.GITHUB_TOKEN }} místo v následujících příkladech.
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.
Přidáním následujícího kroku do souboru pracovního postupu nakonfigurujte zdroj NuGet pomocí příkazu GITHUB_TOKEN:
permissions:
packages: write
jobs:
build:
runs-on: windows-latest
steps:
# ... other steps ...
- 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.GITHUB_TOKEN }}"
.$(${{ env.VCPKG_EXE }} fetch nuget) `
setapikey "${{ secrets.GITHUB_TOKEN }}" `
-Source "${{ env.FEED_URL }}"
V Linuxu je potřeba mono spustit nuget.exe. Můžete nainstalovat mono pomocí správce systémových balíčků vaší distribuce:
apt install mono-complete
Mějte na paměti, že ubuntu-22.04 spouštěče GitHub Actions jsou předinstalovány, ale od mono (na který ubuntu-24.04 aktuálně odkazují), již ubuntu-latest nejsou předinstalovány.
permissions:
packages: write
jobs:
build:
runs-on: ubuntu-latest
steps:
# ... other steps ...
- 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.GITHUB_TOKEN }}"
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
setapikey "${{ secrets.GITHUB_TOKEN }}" \
-Source "${{ env.FEED_URL }}"
Poznámka:
Výchozí nastavení GITHUB_TOKEN , které poskytuje GitHub Actions, nemá požadovaná oprávnění k nahrávání nebo stahování balíčků uložených v mezipaměti.
Pokud chcete povolit ukládání balíčků do mezipaměti do služby GitHub Packages, použijte místo toho token PAT (Personal Access Token) a ujistěte se, že obsahuje následující obory:
packages:readpackages:write
Uložte pat jako tajný klíč úložiště (například VCPKG_PAT_TOKEN) a odkazujte na něj v pracovním postupu:
-Password: "${{ secrets.VCPKG_PAT_TOKEN }}"
-Source: "${{ env.FEED_URL }}"
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 Actions.
Další kroky
Tady jsou další úkoly, které můžete vyzkoušet: