GitHub Actions 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 derlenebildiğ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) 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:
- GitHub Actions iş akışlarınız için ikili önbellek ve varlık önbelleği ayarlama
- Kayıt defterinizin bağlantı noktalarını test etmek için iş akışı ayarlama
Önkoşullar
- GitHub hesabı
- Kendi vcpkg Git kayıt defteriniz
- İkili önbelleğe alma ve varlık önbelleğe alma öğreticilerinin tamamlanması.
- GitHub Actions iş akışları hakkında bilgi
GitHub Actions iş akışları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 GitHub Action iş akışları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: GitHub Actions iş akışında varlık ve ikili önbelleğe almayı etkinleştirme
steps:
- name: Enable GitHub Actions Cache backend
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: some vcpkg task
run: "${{ github.workspace }}/vcpkg/vcpkg install"
env:
X_VCPKG_ASSET_SOURCES: "clear;x-azurl,https://my.domain.com/container,{{ secrets.SAS }},readwrite"
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
Bu örnekte, GitHub Actions iş akışında ikili önbelleğin ve varlık önbelleğinin nasıl ayarlanacağı gösterilmektedir. Bu kod parçacığını kendi iş akışı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,{{secrets.SAS}},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.{{secrets.SAS}}
, depolama kapsayıcısının kimliğini doğrulamak için sas belirteci içeren bir GitHub Actions gizli dizi 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;x-gha,readwrite
. Bu, ikili önbellek için GitHub Actions Cache arka ucuna olanak tanır. Bu arka ucu başarıyla etkinleştirmek için iş akışınızda ek bir adım gereklidir.
Aşağıdaki adım GitHub Action iş akışı adımlarınıza olduğu gibi eklenmelidir. Bu adım, arka ucun çalışması için gereken iki ortam değişkenini x-gha
dışarı aktarır ve vcpkg içeren herhangi bir görevden önce çalıştırılmalıdır.
- name: Enable GitHub Actions Cache backend
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
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ş akışı ayarlama
CI ortamınız için ikili önbellek ve varlık önbelleği ayarladıktan sonra, sonraki adım kayıt defterinizin tüm bağlantı noktalarını test etmek için bir iş akışı ayarlamaktır. Bu iş akışı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.
GitHub Actions iş akışınızda vcpkg alma
Ardından, iş akışınızda kullanmak için vcpkg almanız gerekir. vcpkg yüklemek için aşağıdaki adımları ekleyin.
steps:
- uses: actions/checkout@v4
with:
repository: "https://github.com/Microsoft/vcpkg"
path: "vcpkg"
- name: Bootstrap vcpkg
run: "${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh"
shell: bash
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.
- name: some vcpkg task
run: "${{ github.workspace }}/vcpkg/vcpkg install"
env:
X_VCPKG_ASSET_SOURCES: "clear;x-azurl,https://my.domain.com/container,{{ secrets.SAS }},readwrite"
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
VCPKG_OVERLAY_PORTS: "${{ github.workspace }}/ports"
Bu örnekte, dosyanın kayıt defterinizin deposunun kökünde oluşturulduğu varsayılır vcpkg.json
.
İş akışınızın YAML dosyasının tümünü bir araya getirmek şuna benzer olmalıdır:
.github/workflows/test-ports.yml
name: Test vcpkg ports
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Acquire vcpkg
uses: actions/checkout@v4
with:
repository: "Microsoft/vcpkg"
path: vcpkg
- name: Bootstrap vcpkg
run: "${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh"
shell: bash
- name: Enable GitHub Actions Cache backend
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: Build ports
run: ${{ github.workspace }}/vcpkg/vcpkg install
env:
X_VCPKG_ASSET_SOURCES: "clear;x-azurl,https://your.domain.com/container,${{ secrets.SAS }},readwrite"
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
VCPKG_OVERLAY_PORTS: "${{ github.workspace }}/ports"
shell: bash
Bu, ci iş akışı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.