Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Po skonfigurowaniu niestandardowego rejestru portów vcpkg możesz dodać ciągłą integrację, aby sprawdzić, czy wszystkie zależności można pomyślnie skompilować.
Główny rejestr vcpkg w firmie Microsoft/vcpkg jest testowany przez zespół vcpkg przy użyciu potoku ciągłej integracji (CI) w usłudze Azure DevOps. Dzięki temu dodanie nowych pakietów lub zaktualizowanie istniejących nie spowoduje przerwania użytkowników.
W tym artykule pokazano, jak skonfigurować środowisko ciągłej integracji w celu przetestowania portów vcpkg we własnym rejestrze.
Z tego artykułu dowiesz się, jak wykonywać następujące elementy:
- Konfigurowanie binarnej pamięci podręcznej i pamięci podręcznej zasobów dla potoku usługi Azure DevOps
- Konfigurowanie potoku do testowania portów rejestru
Wymagania wstępne
- Konto usługi Azure DevOps
- Własny rejestr git vcpkg
- Ukończenie samouczków buforowania binarnego i buforowania zasobów.
- Wiedza na temat potoków ADO
Konfigurowanie binarnej pamięci podręcznej i pamięci podręcznej zasobów dla potoków usługi Azure DevOps
Tworzenie dużej kolekcji portów jest kosztownym zadaniem zarówno w zakresie czasu, jak i mocy obliczeniowej. Zdecydowanie zalecamy, aby przed angażowaniem ciągłej integracji dla portów zainwestować w konfigurowanie binarnej pamięci podręcznej i pamięci podręcznej zasobów dla potoków usługi Azure DevOps.
Pamięć podręczna binarna zapewnia największą korzyść w scenariuszach ciągłej integracji, zapewniając, że niezmodyfikowane pakiety nie są komkompilowane w każdym uruchomieniu ciągłej integracji. Pamięć podręczna zasobów dubluje artefakty pobierane dla pakietów podczas przebiegu i używa buforowanych artefaktów w kolejnych uruchomieniach. Może również pomóc w rozwiązywaniu problemów, w których repozytorium nadrzędne jest zawodne: na przykład uszkodzony adres URL pobierania.
Aby uzyskać szczegółowe instrukcje dotyczące konfigurowania tych pamięci podręcznych, przeczytaj artykuły dotyczące buforowania binarnego i buforowania zasobów.
Przykład: włączanie buforowania zasobów i plików binarnych w potoku usługi Azure DevOps
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"
W tym przykładzie pokazano, jak skonfigurować binarną pamięć podręczną i pamięć podręczną zasobów w potoku usługi Azure DevOps. Ten fragment kodu należy dostosować do użycia w pliku YAML własnego potoku.
Podzielenie tego fragmentu kodu:
X_VCPKG_ASSET_SOURCES
to zmienna środowiskowa używana do konfigurowania pamięci podręcznych zasobów w narzędziu vcpkg. W tym przykładzie ustawiono wartość x-azurl,https://my.domain.com/container,$(VcpkgAssetCache),readwrite
.
Zaplecze x-azurl
instruuje program vcpkg, aby używał kontenera usługi Azure Storage jako dostawcy magazynu. Następuje x-azurl
po nim trzy parametry rozdzielone przecinkami (,
).
https://my.domain.com/container
to adres URL kontenera magazynu.$(VcpkgAssetCache)
to zmienna wpisu tajnego potoku zawierająca token SAS do uwierzytelniania w kontenerze magazynu.readwrite
ustawia uprawnienia do odczytu i zapisu dla pamięci podręcznej zasobów. Oznacza to, że ta pamięć podręczna zasobów jest używana do przechowywania artefaktów oraz przywracania artefaktów z niej.
VCPKG_BINARY_SOURCES
to zmienna środowiskowa używana do konfigurowania binarnych pamięci podręcznych w narzędziu vcpkg. W tym przykładzie ustawiono wartość clear;nuget,https://my.domain.com/vcpkgBinaryCache/nuget/v3/index.json,readwrite
.
Umożliwia to zaplecze NuGet dla pamięci podręcznej binarnej przy użyciu źródła danych NuGet pod adresem https://my.domain.com/vcpkgBinaryCache/nuget/v3/index.json
. Aby uwierzytelnić się w kanale informacyjnym NuGet, zapoznaj się z samouczkiem zawierającym instrukcje dotyczące konfigurowania uwierzytelniania NuGet za pomocą usługi ADO.
Aby uwierzytelnić się w źródłach nuGet usługi Azure Artifacts, należy dodać następujące zadanie zgodnie z oczekiwaniami w potoku. To zadanie powinno być również uruchamiane przed jakimkolwiek zadaniem obejmującym narzędzie vcpkg.
- task: NuGetAuthenticate@1
Jeśli używasz innego hosta dla źródeł danych NuGet, zapoznaj się z dokumentacją dotyczącą sposobu uwierzytelniania nuGet.
Dowiedz się więcej o tym, jak działają wszystkie te elementy, czytając dokumentację dotyczącą funkcji pamięci podręcznej zasobów i binarnej pamięci podręcznej .
Konfigurowanie potoku do testowania portów rejestru
Po skonfigurowaniu binarnej pamięci podręcznej i pamięci podręcznej zasobów dla środowiska ciągłej integracji następnym krokiem jest skonfigurowanie potoku w celu przetestowania wszystkich portów rejestru. Możesz zdecydować, czy ten potok jest uruchamiany zgodnie z harmonogramem, czy też jest wyzwalany przez nowe zatwierdzenia lub żądania ściągnięcia.
Główny rejestr vcpkg używa vcpkg ci
polecenia , które zostało dostosowane do potrzeb projektu vcpkg i nie ma na celu pozostania stabilne lub używane przez konsumentów vcpkg. W związku z tym nie nadaje się do testowania własnych rejestrów vcpkg. Zalecamy wykonanie kroków opisanych w tym artykule.
Dołączanie wszystkich portów za pomocą pliku manifestu
Zamiast używać polecenia, zalecamy użycie pliku manifestu vcpkg ci
do utworzenia kompilacji, która zależy od wszystkich pakietów w rejestrze.
Poniższy przykład tworzy plik manifestu w celu przetestowania wszystkich portów w hipotetycznym rejestrze vcpkg. Zastąp listę zależności, aby uwzględnić wszystkie porty w rejestrze i umieścić je w katalogu głównym repozytorium.
vcpkg.json
{
"dependencies": [
"beicode",
"beison"
]
}
Twoje własne porty mogą mieć zależności od głównego rejestru vcpkg lub innych rejestrów innych firm, w tym przypadku należy dodać te rejestry w vcpkg-configuration.json
pliku. Mimo że program vcpkg może rozpoznawać pakiety z głównego rejestru bez dodatkowej konfiguracji, zdecydowanie zalecamy jawne dodanie go do listy rejestrów na potrzeby kontroli wersji.
Dzięki temu masz kontrolę nad zestawem bazowych wersji portów. Zapoznaj się z poleceniemvcpkg x-update-baseline
, aby ułatwić zarządzanie punktem odniesienia rejestrów.
vcpkg-configuration.json
{
"default-registry": null,
"registries": [
{
"kind": "git",
"repository": "https://github.com/Microsoft/vcpkg",
"baseline": "42bb0d9e8d4cf33485afb9ee2229150f79f61a1f",
"packages": "*"
}
]
}
vcpkg.json
Przeczytaj artykuły i vcpkg-configuration.json
referencyjne, aby dowiedzieć się więcej. Zapoznaj się z dokumentacją trybu manifestu, aby dowiedzieć się, jak działają one razem.
Uzyskiwanie programu vcpkg w potoku usługi Azure DevOps
Jeśli używasz narzędzia vcpkg jako modułu podrzędnego w projekcie, możesz uzyskać repozytorium vcpkg w kroku, aby wyewidencjonować własny projekt, jak pokazano poniżej.
steps:
- checkout: self
submodules: true
W przeciwnym razie musisz uzyskać narzędzie vcpkg, aby używać go w potoku. Dodaj następujące kroki, aby sklonować repozytorium vcpkg.
resources:
repositories:
- repository: vcpkgRepo
type: github
name: Microsoft/vcpkg
endpoint: MyGitHubServiceConnection
steps:
- checkout: vcpkgRepo
Aby sklonować repozytorium vcpkg, należy zdefiniować zasób repozytorium dla potoku. Poniższy fragment kodu pokazuje, jak dodać repozytorium vcpkg jako zasób. Aby połączyć potok z usługą GitHub, musisz skonfigurować usługę Połączenie ion.
Po wyewidencjonowaniu repozytorium vcpkg jako modułu podrzędnego lub sklonowaniu go z usługi GitHub należy uruchomić skrypt bootstrap narzędzia vcpkg.
steps:
- script: vcpkg/bootstrap-vcpkg.sh
Po wykonaniu tych kroków należy pracować z plikiem wykonywalnym vcpkg.
Uruchamianie instalacji programu vcpkg w celu skompilowania portów
Ostatnim krokiem jest poinformowanie programu vcpkg o utworzeniu wszystkich portów. Być może zauważysz, że twój własny rejestr jest nieobecny w vcpkg-configuration.json
utworzonym kilku krokach powyżej. Przyczyną jest to, że chcesz przetestować wersję portów aktualnie w katalogu roboczym, w przeciwieństwie do wersji opublikowanych w repozytorium.
W tym celu należy dodać porty rejestru jako porty nakładki, ustawiając zmienną VCPKG_OVERLAY_PORTS
środowiskową w katalogu rejestru ports
.
Poniższy fragment kodu przedstawia sposób konfigurowania portów rejestru jako portów nakładki i uruchamiania vcpkg install
w trybie manifestu w celu zainstalowania wszystkich portów niestandardowych.
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"
W tym przykładzie przyjęto założenie, że vcpkg.json
plik jest tworzony w katalogu głównym repozytorium rejestru i że repozytorium vcpkg jest dodawane jako moduł podrzędny.
Umieszczenie całego pliku YAML potoków powinno wyglądać podobnie do następującego:
.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"
Jest to podstawowa struktura potoku ciągłej integracji do testowania portów rejestru. Może być wymagana dodatkowa praca w celu uwierzytelnienia w repozytoriach prywatnych lub w kanale informacyjnym NuGet.
Możesz również dodać kroki automatyzacji generowania vcpkg.json
pliku lub kroku sprawdzającego, czy porty nowo dodane do rejestru nie są pominięte w testach.
Następne kroki
Poniższe artykuły mogą być przydatne podczas konfigurowania środowiska ciągłej integracji.
- Uwierzytelnianie w prywatnych rejestrach usługi Git
- Konfigurowanie binarnej pamięci podręcznej przy użyciu pamięci podręcznej NuGet
- Konfigurowanie pamięci podręcznej zasobów
- Dokumentacja binarnej pamięci podręcznej
- Dokumentacja pamięci podręcznej zasobów
- Porty nakładki
- Tryb manifestu
vcpkg.json
vcpkg-configuration.json
- Zmienne środowiskowe konfiguracji programu vcpkg