Azure DevOps ile vcpkg kullanarak özel kayıt defteri bağlantı noktalarınızı test edin

Vcpkg bağlantı noktalarının özel bir kayıt defterini ayarladıktan sonra, tüm bağımlılıklarınızın başarıyla derlenebileceğini doğrulamak için sürekli tümleştirme eklemek isteyebilirsiniz.

Microsoft/vcpkg'deki ana vcpkg kayıt defteri, Azure DevOps ile sürekli tümleştirme (CI) işlem hattı kullanılarak vcpkg ekibi tarafından test edilir. Bu, yeni paketlerin eklenmesinin veya mevcut paketlerin güncelleştirilmesinin tüketicileri bozmamasını sağlar.

Bu makalede, vcpkg bağlantı noktalarını kendi kayıt defterinizde test etmek için ci ortamının nasıl ayarlanacağı gösterilmektedir.

Bu makalede şunları öğreneceksiniz:

  • Azure DevOps işlem hattınız için ikili önbellek ve varlık önbelleği ayarlama
  • Kayıt defterinizin bağlantı noktalarını test etmek için işlem hattı ayarlama

Önkoşullar

Azure DevOps işlem hatlarınız için ikili önbellek ve varlık önbelleği ayarlama

Büyük bir bağlantı noktası koleksiyonu oluşturmak hem zaman hem de bilgi işlem gücü açısından pahalı bir görevdir. Bağlantı noktalarınız için CI'yi kullanmadan önce Azure DevOps işlem hatlarınız için ikili önbellek ve varlık önbelleği ayarlamaya yatırım yapmanızı kesinlikle öneririz.

İkili önbellek, değiştirilmemiş paketlerin her CI çalıştırması üzerinde yeniden derlenmemiş olmasını sağlayarak CI senaryoları için en iyi avantajı sağlar. Varlık önbelleği, çalıştırma sırasında paketleriniz için indirilen yapıtları yansıtır ve sonraki çalıştırmalarda önbelleğe alınan yapıtları kullanır. Ayrıca yukarı akış deposunun güvenilir olmadığı sorunları azaltmaya da yardımcı olabilir: örneğin bozuk indirme URL'si.

Bu önbellekleri ayarlama hakkında ayrıntılı yönergeler için ikili önbelleğe alma ve varlık önbelleğe alma makalelerimizi okuyun.

Örnek: Azure DevOps işlem hattında varlık ve ikili önbelleğe almayı etkinleştirme

steps: 
- task: NuGetAuthenticate@1

- script: $(Build.Repository.LocalPath)/vcpkg/vcpkg install --triplet=x64-windows
  displayName: some vcpkg task
  env:
    X_VCPKG_ASSET_SOURCES: "clear;x-azurl,https://my.domain.com/container,$(VcpkgAssetCache),readwrite"
    VCPKG_BINARY_SOURCES: "clear;nuget,https://my.domain.com/vcpkgBinaryCache/nuget/v3/index.json,readwrite"

Bu örnekte, Bir Azure DevOps işlem hattında ikili önbellek ve varlık önbelleğinin nasıl ayarlanacağı gösterilmektedir. Bu kod parçacığını kendi işlem hattınızın YAML dosyasında kullanmak üzere uyarlamalısınız.

Bu kod parçacığı kesiliyor:

X_VCPKG_ASSET_SOURCES vcpkg'de varlık önbelleklerini yapılandırmak için kullanılan ortam değişkenidir. Bu örnekte olarak ayarlanmıştır x-azurl,https://my.domain.com/container,$(VcpkgAssetCache),readwrite. Arka uç, x-azurl vcpkg'ye depolama sağlayıcısı olarak bir Azure Depolama kapsayıcısı kullanmasını emreder. ve x-azurl ardından virgülle (, ) ayrılmış üç parametre vardır.

  • https://my.domain.com/container bir depolama kapsayıcıSı URL'sidir.
  • $(VcpkgAssetCache) , depolama kapsayıcısının kimliğini doğrulamak için sas belirteci içeren bir işlem hattı gizli dizisi değişkenidir.
  • readwrite varlık önbelleği için okuma ve yazma izinlerini ayarlar. Bu, bu varlık önbelleğinin yapıtları depolamak ve ondan yapıtları geri yüklemek için kullanıldığı anlamına gelir.

VCPKG_BINARY_SOURCES , vcpkg'de ikili önbellekleri yapılandırmak için kullanılan ortam değişkenidir. Bu örnekte olarak ayarlanmıştır clear;nuget,https://my.domain.com/vcpkgBinaryCache/nuget/v3/index.json,readwrite. Bu, konumundaki https://my.domain.com/vcpkgBinaryCache/nuget/v3/index.jsonNuGet akışını kullanarak ikili önbellek için NuGet arka ucuna olanak tanır. NuGet akışınızda kimlik doğrulaması yapmak için bazı ek adımlar gerekebilir. ADO ile NuGet kimlik doğrulamasını ayarlama yönergeleri için öğreticiyi okuyun.

Azure Artifacts NuGet akışlarınızda kimlik doğrulaması yapmak için aşağıdaki görevin işlem hattınıza olduğu gibi eklenmesi gerekir. Bu görev, vcpkg içeren herhangi bir görevden önce de çalıştırılmalıdır.

- task: NuGetAuthenticate@1

NuGet akışlarınız için farklı bir konak kullanıyorsanız NuGet'in kimliğini doğrulama belgelerini okuyun.

Varlık önbelleği ve ikili önbellek özellikleriyle ilgili belgeleri okuyarak bunların nasıl çalıştığı hakkında daha fazla bilgi edinin.

Kayıt defterinizin bağlantı noktalarını test etmek için işlem hattı ayarlama

CI ortamınız için ikili önbellek ve varlık önbelleği ayarladıktan sonra, bir sonraki adım, kayıt defterinizin tüm bağlantı noktalarını test etmek için bir işlem hattı ayarlamaktır. Bu işlem hattının bir zamanlamaya göre mi yoksa yeni işlemeler mi yoksa çekme istekleri tarafından mı tetikleneceğine karar vekleyebilirsiniz.

Ana vcpkg kayıt defteri, vcpkg projesinin ihtiyaçlarına göre uyarlanmış olan ve kararlı kalması veya vcpkg tüketicileri tarafından kullanılması amaçlanmamış olan komutunu kullanır vcpkg ci . Bu nedenle, kendi vcpkg kayıt defterlerinizi test etmek için kullanmak uygun değildir. Bunun yerine bu makalede açıklanan adımları izlemenizi öneririz.

Tüm bağlantı noktalarınızı eklemek için bildirim dosyası kullanma

komutunu kullanmak vcpkg ci yerine, kayıt defterinizdeki tüm paketlere bağlı bir derleme oluşturmak için bir bildirim dosyası kullanmanızı öneririz.

Aşağıdaki örnek, varsayımsal bir vcpkg kayıt defterindeki tüm bağlantı noktalarını test etmek için bir bildirim dosyası oluşturur. Bağımlılık listesini, kayıt defterinizdeki tüm bağlantı noktalarını içerecek şekilde değiştirin ve deponuzun köküne yerleştirin.

vcpkg.json

{
  "dependencies": [
    "beicode",
    "beison"
  ]
}

Kendi bağlantı noktalarınızın ana vcpkg kayıt defterine veya diğer üçüncü taraf kayıt defterlerine bağımlılıkları olabilir. Bu durumda, bu kayıt defterlerini bir vcpkg-configuration.json dosyaya eklemeniz gerekir. vcpkg, ek yapılandırma olmadan ana kayıt defterinden gelen paketleri çözümleyebilir ancak sürüm denetimi amacıyla bunu kayıt defterleri listesine açıkça eklemenizi kesinlikle öneririz. Bu, temel alınan bağlantı noktası sürümleri kümesini denetlemenizi sağlar. vcpkg x-update-baseline Kayıt defterlerinizin temelini yönetmeye yardımcı olmak için komutunu gözden geçirin.

vcpkg-configuration.json

{
  "default-registry": null,
  "registries": [
    {
      "kind": "git",
      "repository": "https://github.com/Microsoft/vcpkg",
      "baseline": "42bb0d9e8d4cf33485afb9ee2229150f79f61a1f",
      "packages": "*"
    }
  ]
}

vcpkg.json Daha fazla bilgi edinmek için ve vcpkg-configuration.json başvuru makalelerini okuyun. Bunların birlikte nasıl çalıştığını öğrenmek için bildirim modu belgeleri.

Azure DevOps işlem hattınızda vcpkg alma

Projenizde alt modül olarak vcpkg kullanıyorsanız, aşağıda gösterildiği gibi kendi projenizi kullanıma almak için adımdaki vcpkg deposunu alabilirsiniz.

steps:
- checkout: self
  submodules: true

Aksi takdirde, işlem hattınızda kullanmak için vcpkg almanız gerekir. vcpkg deposunu kopyalamak için aşağıdaki adımları ekleyin.

resources:
  repositories:
    - repository: vcpkgRepo
      type: github
      name: Microsoft/vcpkg
      endpoint: MyGitHubServiceConnection

steps:
  - checkout: vcpkgRepo

vcpkg deposunu kopyalamak için işlem hattınız için bir depo kaynağı tanımlamanız gerekir. Aşağıdaki kod parçacığında vcpkg deposunu kaynak olarak ekleme işlemi gösterilmektedir. İşlem hattınızı GitHub'a bağlamak için bir Hizmet Bağlan ion ayarlamanız gerekir.

Vcpkg deposunu alt modül olarak veya GitHub'dan kopyalayarak kullanıma aldıktan sonra vcpkg'nin bootstrap betiğini çalıştırmanız gerekir.

steps:
  - script: vcpkg/bootstrap-vcpkg.sh

Bu adımlar tamamlandıktan sonra üzerinde çalışabileceğiniz bir vcpkg yürütülebilir dosyası olmalıdır.

Bağlantı noktalarınızı oluşturmak için vcpkg yüklemesini çalıştırma

Son adım, vcpkg'ye tüm bağlantı noktalarınızı oluşturmasını söylemektir. Yukarıdaki birkaç adımda kendi kayıt defterinizin olmadığını vcpkg-configuration.json fark etmiş olabilirsiniz. Bunun nedeni, deponuzda yayımlanan sürümlerin aksine şu anda çalışma dizininde bulunan bağlantı noktalarının sürümünü test etmek istemenizdir.

Bu hedefe, ortam değişkenini kayıt defterinizin dizinine ayarlayarak VCPKG_OVERLAY_PORTS kayıt defterinizin ports bağlantı noktalarını katman bağlantı noktaları olarak eklemeniz gerekir.

Aşağıdaki kod parçacığı, kayıt defterinizin bağlantı noktalarını katman bağlantı noktaları olarak ayarlamayı ve tüm özel bağlantı noktalarınızı yüklemek için bildirim modunda çalıştırmayı vcpkg install gösterir.

steps:
- script: $(Build.Repository.LocalPath)/vcpkg/vcpkg install
  env:
    X_VCPKG_ASSET_SOURCES: "clear;x-azurl,https://my.domain.com/container,$(VcpkgAssetCache),readwrite"
    VCPKG_BINARY_SOURCES: "clear;nuget,https://my.domain.com/demoBinaries/nuget/v3/index.json,readwrite"
    VCPKG_OVERLAY_PORTS: "$(Build.Repository.LocalPath)/ports"

Bu örnekte, dosyanın kayıt defterinizin deposunun kökünde oluşturulduğunu ve vcpkg deposunun alt modül olarak eklendiğini varsayıyoruz vcpkg.json .

İşlem hatlarınızın YAML dosyasının tümünü bir araya getirmek şuna benzer olmalıdır:

.azure-pipelines/test-ports.yml

trigger:
- main

pool:
  vmImage: windows-latest

steps:
- checkout: self
  submodules: true

- task: NuGetAuthenticate@1

- script: $(Build.Repository.LocalPath)/vcpkg/bootstrap-vcpkg.bat
  displayName: Bootstrap vcpkg

- script: $(Build.Repository.LocalPath)/vcpkg/vcpkg install --triplet=x64-windows
  env:
    X_VCPKG_ASSET_SOURCES: "clear;x-azurl,https://my.domain.com/container,$(VcpkgAssetCache),readwrite"
    VCPKG_BINARY_SOURCES: "clear;nuget,https://my.domain.com/demoBinaries/nuget/v3/index.json,readwrite"
    VCPKG_OVERLAY_PORTS: "$(Build.Repository.LocalPath)/ports"

Bu, ci işlem hattının kayıt defterinizin bağlantı noktalarını test etmek için temel yapısıdır. Özel depolarda veya NuGet akışınızda kimlik doğrulaması yapmak için fazladan çalışma yapmanız gerekebilir.

Ayrıca, dosyanın oluşturulmasını vcpkg.json otomatikleştirmek için adımlar veya kayıt defterinize yeni eklenen bağlantı noktalarının testlerin dışında bırakılmadığını doğrulayan bir adım eklemek isteyebilirsiniz.

Sonraki adımlar

Ci ortamını ayarlarken aşağıdaki makaleler sizin için yararlı olabilir.