Öğretici: GitHub Actions iş akışında GitHub Packages kullanarak vcpkg ikili önbelleği ayarlama
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 Kişisel Erişim Belirteci Sağlama
GitHub'ın yönergelerini izleyerek deponuz için klasik bir Kişisel Erişim Belirteci (PAT) oluşturun, ve packages:read
izinlerini verdiğinizden packages:write
emin olun.
Ardından GitHub PAT'inizi deponuzun GitHub Action iş akışlarında bulunan bir gizli dizi olarak ekleyin. Bu öğreticide gizli dizinizi olarak GH_PACKAGES_TOKEN
adlandırdığınız varsayılır.
tarafından GITHUB_TOKEN
sağlanan yerleşik PAT yalnızca bu izne packages:read
sahiptir; iş akışınızda salt okunur ikili önbellek olmasını planlıyorsanız bunu kullanabilirsiniz.
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.exe
kullanı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.exe
dosyasının konumunun çıkışını alır ve gerekirse yürütülebilir dosyayı indirir.
GitHub Actions iş akışı dosyanıza aşağıdaki adımı ekleyin:
- 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 }}"
Linux'ta komutunu yürütmeniz nuget.exe
gerekirmono
. Ubuntu kullanan GitHub Actions çalıştırıcıları önceden yüklenmiş olarak mono
gelir. Aksi takdirde, dağıtımınızın sistem paketi yöneticisini kullanarak yükleyebilirsiniz mono
.
- 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 }}"
değerini GitHub Kişisel Erişim Belirteci sağlama adımında oluşturulan PAT'ye vermiş olduğunuz doğru gizli dizi adıyla değiştirmeniz GH_PACKAGES_TOKEN
gerekebilir.
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: