Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Megjegyzés:
Ez az oktatóanyag a GitHub Packagesben üzemeltetett NuGet-hírcsatornákat használja, de ugyanezeket az utasításokat más NuGet-hírcsatornákhoz is használhatja, például: Azure Artifacts, minimális módosításokkal.
A GitHub Packages kényelmes adattárat kínál a vcpkg által létrehozott NuGet bináris csomagokhoz. Ebben az oktatóanyagban bemutatjuk, hogyan állíthat be bináris gyorsítótárat a GitHub Actions-munkafolyamatban, amely a GitHub Packageset használja távoli tárolóként.
Ebben az oktatóanyagban megtanulhatja, hogyan:
Előfeltételek
- Kódszerkesztő
- GitHub-adattár a GitHub Actions használatával
- Projekt vcpkg használatával
1 – Hitelesítés konfigurálása a GitHub Packageshez
Ez az oktatóanyag a GitHub Actions által biztosított beépített GITHUB_TOKEN megoldást használja. A GitHub Packages olvasási és írási hozzáférésének engedélyezéséhez adja hozzá a következő permissions blokkot a munkafolyamathoz:
permissions:
packages: write
Ez biztosítja a GITHUB_TOKEN szükséges packages:write és packages:read engedélyeket.
A használatnak GITHUB_TOKEN számos előnye van:
- Nincs szükség további titkos kódok létrehozására vagy kezelésére
- Automatikusan működik az elágazásokból érkező lekéréses kérelmek esetében (írásvédett hozzáféréssel)
- Hatókör az adott adattárra és munkafolyamat-futtatásra
Megjegyzés:
Alternatív megoldásként használhat klasszikus személyes hozzáférési jogkivonatot (PAT), ha tárházközi hozzáférésre vagy más speciális forgatókönyvekre van szüksége. Kövesse a GitHub utasításait egy klasszikus személyes hozzáférési jogkivonat (PAT) létrehozásához és packages:write engedélyekkel való packages:read létrehozásához, majd adja hozzá titkos kódként az adattárhoz, és használja ${{ secrets.YOUR_PAT_NAME }} az alábbi példák helyett${{ secrets.GITHUB_TOKEN }}.
2 – Bootstrap vcpkg
A vcpkg megszerzi a nuget.exe végrehajtható fájl saját példányát, amelyet bináris gyorsítótárazási műveletek során használ. Ez az oktatóanyag a vcpkg által beszerzett nuget.exe.
Adjon hozzá egy lépést a vcpkg rendszerindításához a munkafolyamatban:
- name: Bootstrap vcpkg
shell: pwsh
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
shell: bash
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh
Előfordulhat, hogy a vcpkg bootstrap szkript helyét a megfelelőre kell cserélnie a munkafolyamathoz. Ez az oktatóanyag feltételezi, hogy a vcpkg az adattár gyökerében található mappában vcpkg található.
3 – A szükséges környezeti változók beállítása
Adja hozzá a következő környezeti változókat a munkafolyamat-fájlhoz (cserélje le <OWNER> a GitHub felhasználónevét vagy szervezetét):
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"
Előfordulhat, hogy a VCPKG_EXE lépésben létrehozott vcpkg végrehajtható fájl helyével kell helyettesítenie a értékét.
Ebben a lépésben úgy konfigurálja VCPKG_BINARY_SOURCES , hogy a GitHub Packages-hírcsatornát bináris gyorsítótárazási forrásként használja, további információért olvassa el a bináris gyorsítótárazási hivatkozást .
4 – GitHub-csomagok hozzáadása NuGet-forrásként
A vcpkg fetch nuget parancs kimenetként adja ki a vcpkg által beszerzett nuget.exehely helyét, és szükség esetén letölti a végrehajtható fájlt.
Adja hozzá a következő lépést a munkafolyamat-fájlhoz, hogy konfigurálja a NuGet-forrást a következővel 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 }}"
Linuxon használnia kell mono a nuget.exe végrehajtásához. A telepítés mono a disztribúció rendszercsomag-kezelőjével történik:
apt install mono-complete
Vegye figyelembe, hogy a ubuntu-22.04 GitHub Actions-futók előre telepítve vannakmono, de a (ubuntu-24.04jelenleg erre utaló) ubuntu-latest verziótól mono kezdve már nem lesznek előre telepítve.
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 }}"
Megjegyzés:
A GitHub Actions által megadott alapértelmezett GITHUB_TOKEN beállítás nem rendelkezik a gyorsítótárazott csomagok feltöltéséhez vagy letöltéséhez szükséges engedélyekkel.
Ha engedélyezni szeretné a csomag gyorsítótárazását a GitHub Packagesben, használjon helyette egy személyes hozzáférési jogkivonatot (PAT), és győződjön meg arról, hogy az alábbi hatóköröket tartalmazza:
packages:readpackages:write
Tárolja a PAT-t adattár-titkos kódként (például VCPKG_PAT_TOKEN), és hivatkozzon rá a munkafolyamatban:
-Password: "${{ secrets.VCPKG_PAT_TOKEN }}"
-Source: "${{ env.FEED_URL }}"
És ennyi! A vcpkg mostantól feltölt vagy visszaállít csomagokat a GitHub Packagesen üzemeltetett NuGet-hírcsatornából a GitHub Actions munkafolyamatán belül.
Következő lépések
A következő feladatokkal próbálkozhat: