Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Bu öğreticide GitHub Packages'da barındırılan NuGet akışları kullanılmaktadır ancak aynı yönergeler diğer NuGet akışı sağlayıcıları için de kullanılabilir; örneğin: Azure Artifacts, en az değişiklikle.
GitHub Packages, vcpkg tarafından üretilen NuGet ikili paketleriniz için kullanışlı bir depo sunar. Bu öğreticide, GitHub Actions iş akışınızda uzak depolama alanı olarak GitHub Packages kullanan bir ikili önbelleğin nasıl ayarlanacağı gösterilmektedir.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
Önkoşullar
- Kod düzenleyicisi
- GitHub Actions kullanan bir GitHub deposu
- vcpkg kullanan bir proje
1 - GitHub Paketleri için kimlik doğrulamasını yapılandırma
Bu öğreticide GITHUB_TOKEN GitHub Actions tarafından sağlanan yerleşik bilgiler kullanılmaktadır. GitHub Packages'a hem okuma hem de yazma erişimini etkinleştirmek için iş akışınıza aşağıdaki permissions bloğu ekleyin:
permissions:
packages: write
Bu, gerekli GITHUB_TOKEN ve packages:write izinleri verirpackages:read.
Kullanmanın GITHUB_TOKEN çeşitli avantajları vardır:
- Ek gizli diziler oluşturmanıza veya yönetmenize gerek yoktur
- Çatallardan gelen çekme istekleri için otomatik olarak çalışır (salt okunur erişimle)
- Kapsamı belirli bir depoya ve iş akışı çalıştırmasına göre belirlenmiş
Not
Alternatif olarak, depolar arası erişime veya diğer gelişmiş senaryolara ihtiyacınız varsa klasik kişisel erişim belirteci (PAT) kullanabilirsiniz. ve izinlerine sahip packages:writepackages:read için GitHub'ın yönergelerini izleyin, ardından bunu deponuza gizli dizi olarak ekleyin ve aşağıdaki örneklerde yerine ${{ secrets.YOUR_PAT_NAME }} kullanın${{ secrets.GITHUB_TOKEN }}.
2 - Bootstrap vcpkg
vcpkg, ikili önbelleğe alma işlemleri sırasında kullandığı yürütülebilir dosyanın kendi kopyasını nuget.exe alır. Bu öğreticide vcpkg tarafından alınan nuget.exekullanılır.
İş akışınızda vcpkg'yi önyüklemek için bir adım ekleyin:
- name: Bootstrap vcpkg
shell: pwsh
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
shell: bash
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh
vcpkg bootstrap betiğinin konumunu iş akışınız için doğru betikle değiştirmeniz gerekebilir. Bu öğreticide vcpkg'nin deponun kökündeki bir vcpkg klasörde yer aldığı varsayılır.
3 - Gerekli ortam değişkenlerini ayarlama
İş akışı dosyanıza aşağıdaki ortam değişkenlerini ekleyin (değerini GitHub'ınızın kullanıcı adı veya kuruluşunuzun adıyla değiştirin <OWNER> ):
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"
değerini VCPKG_EXE bootstrap vcpkg adımında oluşturulan vcpkg yürütülebilir dosyasının konumuyla değiştirmeniz gerekebilir.
Bu adımda GitHub Packages akışınızı ikili önbelleğe alma kaynağı olarak kullanacak şekilde yapılandıracaksınızVCPKG_BINARY_SOURCES. Daha fazla bilgi edinmek için ikili önbelleğe alma başvurusunu okuyun.
4 - GitHub Paketlerini NuGet kaynağı olarak ekleme
vcpkg fetch nuget komutu, vcpkg-acquired nuget.exedosyasının konumunun çıkışını alır ve gerekirse yürütülebilir dosyayı indirir.
NuGet kaynağını ile yapılandırmak için iş akışı dosyanıza GITHUB_TOKENaşağıdaki adımı ekleyin:
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 }}"
Linux'ta komutunu yürütmeniz monogerekirnuget.exe. Dağıtımınızın sistem paketi yöneticisini kullanarak yükleyebilirsiniz mono :
apt install mono-complete
ubuntu-22.04 GitHub Actions çalıştırıcılarının önceden yüklenmiş olarak mono geldiğini, ancak ile başlayarak ubuntu-24.04 (şu anda işaret ettiğiubuntu-latest) mono artık önceden yüklenmiş olarak gelmediğini unutmayın.
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 }}"
Not
GitHub Actions tarafından sağlanan varsayılan ayar GITHUB_TOKEN , önbelleğe alınmış paketleri karşıya yüklemek veya indirmek için gerekli izinlere sahip değildir .
GitHub Packages'ta paket önbelleğe almayı etkinleştirmek için bunun yerine bir Kişisel Erişim Belirteci (PAT) kullanın ve aşağıdaki kapsamları içerdiğinden emin olun:
packages:readpackages:write
PAT'yi depo gizli dizisi olarak depolayın (örneğin, VCPKG_PAT_TOKEN) ve iş akışınızda bu gizli diziye başvurun:
-Password: "${{ secrets.VCPKG_PAT_TOKEN }}"
-Source: "${{ env.FEED_URL }}"
Hepsi bu! vcpkg artık GitHub Actions iş akışınızdaki GitHub Packages üzerinde barındırılan NuGet akışınızdan paketleri karşıya yükler veya geri yükler.
Sonraki adımlar
Deneyebileceğiniz diğer görevler şunlardır: