Öğ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_TOKENadlandı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.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.

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.exegerekirmono. 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: