Aracılığıyla paylaş


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