Obsługa wyrażeń szablonów w definicjach zasobów repozytorium i kontenera
Dzięki tej aktualizacji dołączyliśmy obsługę wyrażeń szablonów w definicjach zasobów repozytorium i kontenera. Teraz możesz użyć wyrażeń szablonu podczas definiowania ref
właściwości repository
zasobu w potoku YAML, aby wybrać gałąź zasobu repozytorium. Ponadto dodaliśmy obsługę wyrażeń szablonów podczas definiowania endpoint
właściwości container
zasobu , volumes
ports
i options
w potoku YAML.
Zapoznaj się z informacjami o wersji, aby uzyskać szczegółowe informacje.
Azure Boards
- Edytowanie typów linków elementów roboczych
- Tworzenie tymczasowego punktu końcowego REST zapytania
- Interfejs API usuwania usługi Batch (prywatna wersja zapoznawcza)
- makro @CurrentIteration w planach dostarczania
Azure Pipelines
- Wyrażenia szablonów w definicji zasobu repozytorium
- Wyrażenia szablonu w definicji zasobu kontenera
- Inspekcja zdarzeń pod kątem zmian w zatwierdzeniach
- Biblioteka zadań uwidacznia model hostingu agenta
Azure Boards
Edytowanie typów linków elementów roboczych
Wcześniej zmiana linku elementu roboczego wymaga wykonania co najmniej trzech kroków. Aby na przykład zmienić link nadrzędny do powiązanego linku, musisz skopiować identyfikator elementu roboczego, usunąć link nadrzędny, dodać nowy istniejący link powiązany z typem, a następnie wkleić skopiowany identyfikator i zapisać. Jest to kłopotliwy proces.
Rozwiązaliśmy ten problem, umożliwiając bezpośrednią edycję i zmianę typu linku. Możesz szybko zmienić typ łącza w jednym kroku.
Uwaga
Ta funkcja będzie dostępna tylko w wersji zapoznawczej usługi New Boards Hubs.
Tworzenie tymczasowego punktu końcowego REST zapytania
Widzieliśmy kilka wystąpień autorów rozszerzeń próbujących uruchamiać niezapisane zapytania, przekazując instrukcję WIQL (Work Item Query Language) za pośrednictwem ciągu zapytania. Działa to dobrze, chyba że masz dużą instrukcję WIQL, która osiąga limity przeglądarki na długości ciągu zapytania. Aby rozwiązać ten problem, utworzyliśmy nowy punkt końcowy REST, aby umożliwić autorom narzędzi generowanie zapytania tymczasowego. Użycie identyfikatora z odpowiedzi w celu przekazania przez element querystring eliminuje ten problem.
Dowiedz się więcej na stronie dokumentacji interfejsu API REST zapytań tymczasowych.
Interfejs API usuwania usługi Batch (prywatna wersja zapoznawcza)
Obecnie jedynym sposobem usunięcia elementów roboczych z kosza jest użycie tego interfejsu API REST do jednorazowego usunięcia. Może to być powolny proces i podlega ograniczeniu szybkości podczas próby przeprowadzenia dowolnego rodzaju masowego czyszczenia. W odpowiedzi dodaliśmy nowy punkt końcowy interfejsu API REST do usuwania i/lub niszczenia elementów roboczych w partii.
Jeśli chcesz wziąć udział w prywatnej wersji zapoznawczej tego nowego punktu końcowego, wyślij nam wiadomość e-mail bezpośrednio.
@CurrentIteration makro w planach dostarczania
Dzięki tej aktualizacji dodaliśmy obsługę makr dla @CurrentIteration stylów w planach dostarczania. To makro umożliwi uzyskanie bieżącej iteracji z kontekstu zespołu każdego wiersza w planie.
Azure Pipelines
Wyrażenia szablonów w definicji zasobu repozytorium
Dodaliśmy obsługę wyrażeń szablonu podczas definiowania ref
właściwości repository
zasobu w potoku YAML. Była to bardzo żądana funkcja przez naszą społeczność deweloperów.
Istnieją przypadki użycia, gdy potok ma wyewidencjonować różne gałęzie tego samego zasobu repozytorium.
Załóżmy na przykład, że masz potok, który kompiluje własne repozytorium, a w tym celu musi wyewidencjonować bibliotekę z repozytorium zasobów. Ponadto załóżmy, że chcesz, aby potok wyewidencjonowył tę samą gałąź biblioteki, której używa sam. Jeśli na przykład potok jest uruchamiany w main
gałęzi, należy wyewidencjonować main
gałąź repozytorium biblioteki. Jeśli potoki działają w dev
gałęzi, należy wyewidencjonować dev
gałąź biblioteki.
Do dziś trzeba było jawnie określić gałąź do wyewidencjonowania i zmienić kod potoku za każdym razem, gdy gałąź ulegnie zmianie.
Teraz możesz użyć wyrażeń szablonu, aby wybrać gałąź zasobu repozytorium. Zapoznaj się z poniższym przykładem kodu YAML, który ma być używany dla gałęzi innych niż główne potoku:
resources:
repositories:
- repository: library
type: git
name: FabrikamLibrary
ref: ${{ variables['Build.SourceBranch'] }}
steps:
- checkout: library
- script: echo ./build.sh
- script: echo ./test.sh
Po uruchomieniu potoku możesz określić gałąź do wyewidencjonowania library
repozytorium.
Określanie wersji szablonu do rozszerzenia w czasie kolejki kompilacji
Szablony stanowią doskonały sposób na zmniejszenie duplikowania kodu i zwiększenie bezpieczeństwa potoków.
Jednym z popularnych przypadków użycia jest domowy szablony we własnym repozytorium. Zmniejsza to sprzężenie między szablonem a potokami, które go rozszerzają, i ułatwia niezależne rozwijanie szablonu i potoków.
Rozważmy poniższy przykład, w którym szablon jest używany do monitorowania wykonywania listy kroków. Kod szablonu Templates
znajduje się w repozytorium.
# template.yml in repository Templates
parameters:
- name: steps
type: stepList
default: []
jobs:
- job:
steps:
- script: ./startMonitoring.sh
- ${{ parameters.steps }}
- script: ./stopMonitoring.sh
Załóżmy, że masz potok YAML, który rozszerza ten szablon znajdujący się w repozytorium FabrikamFiber
. Do dziś nie można było dynamicznie określić ref
właściwości templates
zasobu repozytorium w przypadku używania repozytorium jako źródła szablonu. Oznaczało to, że trzeba zmienić kod potoku, jeśli chcesz, aby potok był następujący: rozszerzenie szablonu z innej gałęzi rozszerza szablon z tej samej nazwy gałęzi co potok, niezależnie od gałęzi, w której uruchomiono potok
Wprowadzenie wyrażeń szablonu w definicji zasobu repozytorium umożliwia napisanie potoku w następujący sposób:
resources:
repositories:
- repository: templates
type: git
name: Templates
ref: ${{ variables['Build.SourceBranch'] }}
extends:
template: template.yml@templates
parameters:
steps:
- script: echo ./build.sh
- script: echo ./test.sh
W ten sposób potok rozszerzy szablon w tej samej gałęzi co gałąź, w której działa potok, aby upewnić się, że gałęzie potoku i szablonu są zawsze zgodne. Oznacza to, że uruchomienie potoku w gałęzi dev
spowoduje rozszerzenie szablonu określonego przez template.yml
plik w dev
gałęzi templates
repozytorium.
Możesz też wybrać w czasie kompilacji kolejki, która gałąź repozytorium szablonów ma być używana, pisząc następujący kod YAML.
parameters:
- name: branch
default: main
resources:
repositories:
- repository: templates
type: git
name: Templates
ref: ${{ parameters.branch }}
extends:
template: template.yml@templates
parameters:
steps:
- script: echo ./build.sh
- script: echo ./test.sh
Teraz możesz mieć potok w gałęzi main
rozszerzać szablon z gałęzi dev
w jednym przebiegu i rozszerzać szablon z gałęzi main
w innym przebiegu bez zmiany kodu potoku.
Podczas określania wyrażenia szablonu dla ref
właściwości zasobu repozytorium można użyć parameters
i wstępnie zdefiniowanych zmiennych systemowych, ale nie można użyć zmiennych zdefiniowanych przez interfejs użytkownika yaML ani pipelines.
Wyrażenia szablonu w definicji zasobu kontenera
Dodaliśmy obsługę wyrażeń szablonu podczas definiowania endpoint
właściwości container
, volumes
i ports
options
zasobu w potoku YAML. Była to bardzo żądana funkcja przez naszą społeczność deweloperów.
Teraz możesz pisać potoki YAML, takie jak poniżej.
parameters:
- name: endpointName
default: AzDOACR
type: string
resources:
containers:
- container: linux
endpoint: ${{ parameters.endpointName }}
image: fabrikamfiber.azurecr.io/ubuntu:latest
jobs:
- job:
container: linux
steps:
- task: CmdLine@2
inputs:
script: 'echo Hello world'
Możesz użyć parameters.
wyrażeń szablonu i variables.
. W przypadku zmiennych można używać tylko tych zdefiniowanych w pliku YAML, ale nie zdefiniowanych w interfejsie użytkownika potoków. Jeśli na przykład ponownie zdefiniowasz zmienną przy użyciu poleceń dziennika agenta, nie będzie to miało żadnego wpływu.
Inspekcja zdarzeń pod kątem zmian w zatwierdzeniach
Zatwierdzenia umożliwiają kontrolowanie, kiedy etap powinien zostać uruchomiony. Jest to często używane do kontrolowania wdrożeń w środowiskach produkcyjnych. Inspekcja umożliwia spełnianie wymagań dotyczących zgodności i monitorowanie zabezpieczeń organizacji usługi Azure DevOps.
Gdy użytkownik zostanie poproszony o zatwierdzenie potoku w celu wdrożenia na określonym etapie, użytkownik może zdecydować się na ponowne przypisanie zatwierdzenia innej osobie.
Do tej pory takie akcje nie były rejestrowane w dziennikach inspekcji. Ten problem został rozwiązany teraz.
Dzienniki inspekcji będą zawierać wpis podobny do poniższego.
[
{
"Id": "2517368925862632546;00000264-0000-8888-8000-000000000000;839ad1ba-f72b-4258-bc3f-88be7a4553b5",
"CorrelationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
"ActivityId": "a298a06c-965f-4e60-9643-2593f2066e37",
"ActorCUID": "fe950802-bf07-755b-826d-e8dcc066252c",
"ActorUserId": "fe950802-bf07-755b-826d-e8dcc066252c",
"ActorUPN": "silviu@fabrikam.app",
"AuthenticationMechanism": "AAD_Cookie",
"Timestamp": "2022-10-10T11:26:53.7367453Z",
"ScopeType": "Organization",
"ScopeDisplayName": "Fabrikam (Organization)",
"ScopeId": "547a7316-cdf4-40d2-af16-3215f97d053e",
"ProjectId": "4bf16944-3595-421f-9947-79d9eb190284",
"ProjectName": "FabrikamFiber",
"IpAddress": "127.0.0.1",
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.37",
"ActionId": "ApproverReassigned",
"Data": {
"ApprovalId": "dae6e7c9-2a10-4cd8-b63a-579a6e7ba78d",
"OldApproverUserId": "692b6e2a-dd61-4872-866a-85498da390fc",
"OldApproverDisplayName": "[FabrikamFiber]\\Build Administrators",
"NewApproverUserId": "fe95080b-bf07-655b-226d-e8dcc066252c",
"NewApproverDisplayName": "Jack Fabrikam",
"Comment": "All admins are OOO"
},
"Details": "Reassigned approver of Approval dae6e7c9-9a10-4cd8-b63a-579a6e7ba78d in Project \"FabrikamFiber\" from \"[FabrikamFiber]\\Build Administrators\" to \"Jack Fabrikam\" with comment \"All admins are OOO\".",
"Area": "Checks",
"Category": "Modify",
"CategoryDisplayName": "Modify",
"ActorDisplayName": "Silviu"
}
]
Ponadto zostanie on wyświetlony w interfejsie użytkownika inspekcji.
Biblioteka zadań uwidacznia model hostingu agenta
Autorzy zadań, którzy chcą określić, czy agent jest uruchomiony w pulach hostowanych przez firmę Microsoft, czy nie może teraz używać funkcji getAgentMode()
Biblioteka zadań w celu określenia modelu hostingu. Jest to korzystne w scenariuszach, w których zadanie chce wpływać na zachowanie w oparciu o dostęp do sieci klienta lub nie. Zadanie może próbować nawiązać połączenie z usługą platformy Azure za pośrednictwem prywatnego punktu końcowego, jeśli jest wykonywane z własnego agenta lub agentów zestawu skalowania znajdujących się w sieci klienta.
Zobacz dokumentację zadania.
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 przyjrzyj się.
Jak przekazać opinię
Chcielibyśmy usłyszeć, co myślisz o tych funkcjach. Użyj menu Pomocy, aby zgłosić problem lub podać sugestię.
Możesz również uzyskać porady i odpowiedzi na pytania społeczności w witrynie Stack Overflow.
Dzięki,
Vijay Machiraju