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 hesabı
- Kendi vcpkg Git kayıt defteriniz
- İkili önbelleğe alma ve varlık önbelleğe alma öğreticilerinin tamamlanması.
- ADO işlem hatları hakkında bilgi
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.json
NuGet 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.