Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Anmärkning
I den här handledningen används NuGet-flöden i GitHub Packages, men samma instruktioner kan användas för andra NuGet-flödesleverantörer, till exempel Azure Artifacts, med minimala ändringar.
GitHub Packages erbjuder en praktisk lagringsplats för dina NuGet-binära paket som produceras av vcpkg. I den här självstudien visar vi hur du konfigurerar en binär cache i ditt GitHub Actions-arbetsflöde som använder GitHub Packages som fjärrlagring.
I den här självstudien får du lära dig att:
Förutsättningar
- En kodredigerare
- En GitHub-lagringsplats med GitHub Actions
- Ett projekt med vcpkg
1 – Konfigurera autentisering för GitHub-paket
I den här självstudien används den inbyggda informationen från GITHUB_TOKEN GitHub Actions. Om du vill aktivera både läs- och skrivåtkomst till GitHub Packages lägger du till följande permissions block i arbetsflödet:
permissions:
packages: write
Detta ger nödvändiga GITHUB_TOKENpackages:write och packages:read behörigheter.
Användning GITHUB_TOKEN har flera fördelar:
- Du behöver inte skapa eller hantera ytterligare hemligheter
- Fungerar automatiskt för pull-begäranden från förgreningar (med skrivskyddad åtkomst)
- Begränsad till den specifika lagringsplatsen och arbetsflödeskörningen
Anmärkning
Du kan också använda en klassisk personlig åtkomsttoken (PAT) om du behöver åtkomst mellan lagringsplatser eller andra avancerade scenarier. Följ GitHubs instruktioner för att generera en klassisk personlig åtkomsttoken (PAT) med packages:write och packages:read behörigheter, lägg sedan till den som en hemlighet på lagringsplatsen och använd ${{ secrets.YOUR_PAT_NAME }} den i stället för ${{ secrets.GITHUB_TOKEN }} i exemplen nedan.
2 - Bootstrap vcpkg
vcpkg anskaffar en egen kopia av den nuget.exe körbara filen som den använder under binära cachelagringsåtgärder. I den här självstudien används nuget.exe, som har hämtats genom vcpkg.
Lägg till ett steg för att starta upp vcpkg i ditt arbetsflöde.
- name: Bootstrap vcpkg
shell: pwsh
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
shell: bash
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh
Du kan behöva ändra platsen för vcpkg-bootstrap-skriptet till den rätta för ditt arbetsflöde. Den här självstudien förutsätter att vcpkg finns i en vcpkg mapp i roten på förvaret.
3 – Konfigurera nödvändiga miljövariabler
Lägg till följande miljövariabler i arbetsflödesfilen (ersätt <OWNER> med ditt GitHub-användarnamn eller organisationsnamn):
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"
Du kan behöva ersätta värdet VCPKG_EXE med platsen för den körbara vcpkg-filen som genererades i steget bootstrap vcpkg.
I det här steget konfigurerar VCPKG_BINARY_SOURCES du att använda din GitHub Packages-feed som en binär cachelagringskälla. Läs referensen för binär cachelagring om du vill veta mer.
4 – Lägg till GitHub-paket som En NuGet-källa
Kommandot vcpkg fetch nuget matar ut platsen för den vcpkg-förvärvade nuget.exe, och laddar ner den körbara filen om det behövs.
Lägg till följande steg i arbetsflödesfilen för att konfigurera NuGet-källan med :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 }}"
På Linux behöver du mono för att köra nuget.exe. Du kan installera mono med distributionens systempakethanterare:
apt install mono-complete
Observera att ubuntu-22.04 GitHub Actions-löpare levereras med mono förinstallerade, men börjar med ubuntu-24.04 (som ubuntu-latest för närvarande pekar på) mono inte längre är förinstallerade.
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 }}"
Anmärkning
Standardvärdet GITHUB_TOKEN som tillhandahålls av GitHub Actions har inte de behörigheter som krävs för att ladda upp eller ladda ned cachelagrade paket.
Om du vill aktivera paketcachelagring till GitHub Packages använder du en personlig åtkomsttoken (PAT) i stället och ser till att den innehåller följande omfång:
packages:readpackages:write
Lagra PAT som en lagringsplatshemlighet (till exempel VCPKG_PAT_TOKEN) och referera till den i ditt arbetsflöde:
-Password: "${{ secrets.VCPKG_PAT_TOKEN }}"
-Source: "${{ env.FEED_URL }}"
Och det är allt! vcpkg laddar nu upp eller återställer paket från ditt NuGet-flöde som finns på GitHub Packages i ditt GitHub Actions-arbetsflöde.
Nästa steg
Här är andra uppgifter att prova härnäst: