Udostępnij za pośrednictwem


Obsługa wdrożeń sekwencyjnych w przypadku używania kontroli blokady na wyłączność

W tym przebiegu rozszerzyliśmy możliwość wyłącznych kontroli blokad w usłudze Azure Pipelines w celu obsługi wdrożeń sekwencyjnych. Teraz możesz w kolejce wiele uruchomień w środowisku, aby umożliwić jednoczesne wykonywanie tylko jednego z nich.

Aby uzyskać szczegółowe informacje, zapoznaj się z następującymi opisami funkcji.

Azure Boards

Azure Pipelines

Azure Boards

Sekcja programowania w elemencie roboczym zawiera listę odpowiednich zatwierdzeń i żądań ściągnięcia. Możesz wyświetlić autora zatwierdzenia lub żądania ściągnięcia wraz ze skojarzonym czasem. Dzięki tej aktualizacji rozwiązaliśmy problem z niepoprawnym wyświetlaniem awatara autora w widoku.

Azure Pipelines

Obsługa wdrożeń sekwencyjnych, a nie najnowszych tylko w przypadku używania kontroli blokady na wyłączność

W potokach YAML kontrole służą do kontrolowania wykonywania etapów w chronionych zasobach. Jedną z typowych kontroli, których można użyć, jest wyłączna kontrola blokady. To sprawdzenie umożliwia kontynuowanie tylko jednego uruchomienia z potoku. Gdy wiele przebiegów próbuje wdrożyć w środowisku w tym samym czasie, kontrola anuluje wszystkie stare przebiegi i zezwala na wdrożenie najnowszego uruchomienia.

Anulowanie starych przebiegów jest dobrym rozwiązaniem, gdy wydania są zbiorcze i zawierają wszystkie zmiany kodu z poprzednich przebiegów. Istnieją jednak potoki, w których zmiany kodu nie są skumulowane. Dzięki tej nowej funkcji można zezwolić wszystkim przebiegom na kontynuowanie i wdrażanie sekwencyjnie w środowisku lub zachować poprzednie zachowanie anulowania starych przebiegów i zezwalania tylko na najnowsze. To zachowanie można określić przy użyciu nowej właściwości o nazwie lockBehavior w pliku YAML potoku. Wartość sequential oznacza, że wszystkie uruchomienia uzyskują blokadę sekwencyjnie do chronionego zasobu. Wartość runLatest oznacza, że tylko najnowszy przebieg uzyskuje blokadę zasobu.

Aby użyć wyłącznego sprawdzania blokady sequential we wdrożeniach lub runLatest, wykonaj następujące kroki:

  1. Włącz kontrolę wyłącznych blokad w środowisku (lub inny chroniony zasób).
  2. W pliku YAML potoku określ nową właściwość o nazwie lockBehavior. Można to określić dla całego potoku lub dla danego etapu:

Ustaw na scenie:

stages:
- stage: A
  lockBehavior: sequential
  jobs:
  - job: Job
    steps:
    - script: Hey!

Ustaw w potoku:

lockBehavior: runLatest
stages:
- stage: A
  jobs:
  - job: Job
    steps:
    - script: Hey!

Jeśli nie określisz elementu lockBehavior, przyjmuje się, że jest to runLatest.

Obsługa wersji Quebec usługi ServiceNow

Usługa Azure Pipelines ma istniejącą integrację z usługą ServiceNow. Integracja opiera się na aplikacji w usłudze ServiceNow i rozszerzeniu w usłudze Azure DevOps. Teraz zaktualizowaliśmy aplikację do pracy z wersją Usługi ServiceNow w Quebecu. Potoki klasyczne i YAML działają teraz z Quebecem. Aby upewnić się, że ta integracja działa, przeprowadź uaktualnienie do nowej wersji aplikacji (4.188.0) ze sklepu Service Now Store. Aby uzyskać więcej informacji, zobacz Integracja z usługą ServiceNow Change Management.

Zmiana zasad preinstalacji zestawu .NET SDK na agentach systemu Windows i macOS hostowanych przez firmę Microsoft

Niedawno ogłosiliśmy zmianę zasad preinstalacji zestawu .NET SDK dla agentów systemu Ubuntu hostowanych przez firmę Microsoft. Teraz wprowadzamy tę samą zmianę dla agentów systemu Windows i macOS hostowanych przez firmę Microsoft.

Obecnie instalujemy wszystkie dostępne i obsługiwane wersje zestawu .NET SDK (2.1.x, 3.1.x, 5.0.x) na agentach hostowanych przez firmę Microsoft i macOS. To podejście zostanie zmienione na rzecz zainstalowania najnowszej wersji poprawki dla każdej wersji funkcji. Ta zmiana jest wprowadzana w celu zapewnienia większej ilości wolnego miejsca i nowych żądań narzędzi.

Co to oznacza?

Wersja zestawu SDK składa się z następujących części: x.y.znn. z jest wersją funkcji i nn jest wersją poprawki. Na przykład w wersji 2.1.302 wersja funkcji to 3, a 02 to wersja poprawki. Zgodnie z nowym podejściem zainstalujemy tylko najnowszą wersję poprawki dla każdej wersji funkcji, tj. tylko wersja 2.1.302 zostanie zainstalowana dla wersji 2.1.3x, tylko 2.1.403 dla wersji 2.1.4x i tak dalej. Wszystkie wersje zestawu .NET SDK, które nie są najnowszymi wersjami poprawek, zostaną usunięte z obrazów systemu Windows i macOS 6 września. Ta zmiana ma wpływ na wszystkie wersje systemów Windows i macOS na agentach hostowanych przez firmę Microsoft.

Data docelowa

Wdrożenie zaktualizowanych obrazów rozpocznie się 6 września i potrwa od 3 do 4 dni.

Możliwy wpływ

Jeśli używasz pliku global.json, wpłynie to na kompilację w następujących przypadkach:

Kompilacja zakończy się niepowodzeniem, jeśli plik global.json zawiera rollForward: disable właściwość i wersję zestawu SDK, która nie jest najnowszą wersją poprawki. Na przykład:

{
  "sdk": {
    "version": "3.1.100",
    "rollForward": "disable"
  }
}

Wersja zestawu .NET SDK zostanie automatycznie zmieniona na najnowszą poprawkę, jeśli plik global.json zawiera rollForward: patch właściwość . Na przykład:

{
  "sdk": {
    "version": "3.1.100",
    "rollForward": "patch"
  }
}

rollForward Jeśli pole nie zostanie określone w pliku global.json, nie będzie dla Ciebie żadnych zmian. Używany jest najnowszy zainstalowany poziom poprawek.

Jeśli musisz użyć dokładnej wersji zestawu .NET SDK, która nie jest najnowszą poprawką, użyj UseDotNet zadania , aby zainstalować ją w ramach kompilacji:

steps:
- task: UseDotNet@2
  displayName: 'Use .NET Core sdk'
  inputs:
    version: <dotnet version>

Zmiany zadań PublishBuildArtifacts i DownloadBuildArtifacts

Usługa Azure Pipelines obsługuje dwa zestawy zadań do publikowania/pobierania artefaktów. PublishPipelineArtifact i DownloadPipelineArtifact to nowsze i zalecane zadania do wykonania tych kroków.

PublishBuildArtifacts i DownloadBuildArtifacts to starsze zadania i nie mają tych samych optymalizacji wydajności i magazynowania, które znajdują się w odpowiednich zadaniach PipelineArtifact. Te starsze zadania miały również ograniczenia skalowania pod względem sposobu ich implementacji. Niektórzy z naszych większych klientów przekroczyli te limity.

Mimo że wszyscy klienci chcą przejść do zadań PipelineArtifact, musieliśmy również wykonać kilka kroków w celu rozwiązania problemu skalowalności starszych zadań BuildArtifact. W ramach najnowszej aktualizacji w celu zwiększenia skalowalności agenci usługi Azure Pipelines będą teraz bezpośrednio korzystać z artefaktów kompilacji za pośrednictwem domen magazynu obiektów blob (zamiast routingu za pośrednictwem domen tfs). Te potoki zaczną uzyskiwać dostęp do adresów IP i domen, które od dawna znajdują się na liście dozwolonych usługi Azure DevOps, ale mogą nie być używane wcześniej przez określone potoki.

Zaktualizowana implementacja zadań BuildArtifact wymaga uaktualnienia agenta, co powinno nastąpić automatycznie, chyba że automatyczne uaktualnienia zostały specjalnie wyłączone lub zapory są niepoprawnie skonfigurowane.

Jeśli agenci są uruchomioni w środowiskach zapór, które nie były zgodne z połączonymi instrukcjami, mogą wystąpić błędy podczas aktualizowania agenta lub w zadaniach PublishBuildArtifacts lub DownloadBuildArtifacts, dopóki konfiguracja zapory nie zostanie poprawiona.

Typowym objawem tego problemu są nagłe błędy związane z uzgadnianiem ssl lub błędami pobierania artefaktów, zazwyczaj w pulach wdrożeń przeznaczonych przez definicje Release Management. Alternatywnie, jeśli uaktualnienia agenta zostały zablokowane, możesz zauważyć, że wydania oczekują na agenta w puli, który nigdy nie zostanie dostarczony, lub że agenci przechodzą w tryb offline w połowie ich aktualizacji (ta ostatnia jest związana ze środowiskami, które błędnie blokują sieć CDN agenta).

Następne kroki

Uwaga

Te funkcje będą wdrażane w ciągu najbliższych dwóch do trzech tygodni.

Przejdź do usługi Azure DevOps i spójrz.

Jak przekazać opinię

Chcielibyśmy usłyszeć, co myślisz o tych funkcjach. Użyj menu Pomocy, aby zgłosić problem lub podać sugestię.

Utwórz sugestię

Możesz również uzyskać porady i pytania, na które odpowiada społeczność w witrynie Stack Overflow.

Dzięki,

Aaron Hallberg