Ustawienie wyłączania tworzenia repozytoriów TFVC
Dzięki tej aktualizacji wprowadzamy nowe ustawienie wyłączania tworzenia repozytoriów TFVC. Ta zmiana koncentruje się na nowych projektach przy jednoczesnym zapewnieniu, że istniejące repozytoria TFVC pozostają nienaruszone.
Ponadto z przyjemnością ogłaszamy, że w usłudze Azure Pipelines nowy punkt końcowy interfejsu API REST jest dostępny do żądania tokenów OIDC. Dzięki temu deweloperzy zadań mogą generować identyfikatory idTokens na potrzeby uwierzytelniania identyfikatora Entra, zwiększając bezpieczeństwo i łatwość użycia.
Na koniec w usłudze Azure Boards ścieżki obszaru i iteracji można teraz usuwać tylko wtedy, gdy nie są już skojarzone z żadnymi elementami roboczymi. Ta poprawa zapobiega zakłóceniom i zapewnia zespołom dostęp do tablic i list prac.
Zapoznaj się z informacjami o wersji, aby uzyskać szczegółowe informacje.
Usługa GitHub Advanced Security dla usługi Azure DevOps
Azure Boards:
Azure Repos
Azure Pipelines
- Uzyskiwanie dostępu do usługi Azure Service Bus z potoków przy użyciu uwierzytelniania identyfikatora Entra firmy Microsoft
- Potoki i zadania wypełniają zmienne w celu dostosowania uwierzytelniania federacyjnego tożsamości obciążenia
- Ponawianie prób dla zadań serwera
- Zadania korzystające z wersji modułu uruchamiającego węzła end-of-life do wykonywania ostrzeżeń emitujących
- DockerCompose0 używa narzędzia Docker Compose w wersji 2 w trybie zgodności w wersji 1
Azure Test Plans:
Usługa GitHub Advanced Security dla usługi Azure DevOps
Dokumentacja interfejsu API przeglądu zabezpieczeń jest teraz dostępna
Dokumentacja interfejsu API z obsługą karty Ryzyko przeglądu zabezpieczeń zaawansowanych jest teraz dostępna. Użyj punktu końcowego /{organization}/_apis/reporting/summary/alerts
, aby wyświetlić podsumowanie krytycznych alertów we wszystkich repozytoriach z obsługą zabezpieczeń zaawansowanych. Upewnij się, że identyfikator PAT ADO ma vso.advsec
uprawnienie, które przyznaje możliwość odczytywania alertów, wystąpień wyników i wystąpień wyników analizy.
Azure Boards
Zmiana dla usuwania ścieżek obszaru i iteracji
Usunięcie obszaru lub ścieżki iteracji może być destrukcyjne. Może ona przenieść elementy robocze na nową ścieżkę i spowodować, że zespoły utracą dostęp do tablic i list prac. Pomimo ostrzeżeń i monitów ścieżki są czasami usuwane bez pełnego zrozumienia konsekwencji. Aby rozwiązać ten problem, zmieniliśmy zachowanie: ścieżki obszaru i iteracji można teraz usuwać tylko wtedy, gdy nie są już używane przez żadne elementy robocze.
Azure Repos
Nowe ustawienie wyłączania tworzenia repozytoriów TFVC
W ostatnich latach nie dodano nowych funkcji do Kontroli wersji serwera Team Foundation (TFVC), ponieważ usługa Git stała się preferowanym systemem kontroli wersji w usłudze Azure Repos. Wszystkie niedawne ulepszenia w zakresie zabezpieczeń, wydajności i ułatwień dostępu zostały wprowadzone wyłącznie w repozytoriach Git, co prowadzi do ciągłego spadku użycia TFVC. Mimo że niektórzy nadal polegają na TFVC i nie zamierzają usuwać tego zestawu funkcji, planujemy stopniowo wycofywać funkcję TFVC dla nowych projektów, organizacji oraz projektów, które obecnie z niego nie korzystają.
W ramach tego przejścia wprowadzamy nowe ustawienie „Wyłącz tworzenie repozytoriów TFVC”, które będzie miało wpływ tylko na tworzenie nowych repozytoriów TFVC i nie będzie miało wpływu na te już istniejące.
Azure Pipelines
Uzyskiwanie dostępu do usługi Azure Service Bus z potoków przy użyciu uwierzytelniania identyfikatora Entra firmy Microsoft
Teraz możesz użyć uwierzytelniania identyfikatora Entra firmy Microsoft, aby uzyskać dostęp do usługi Azure Service Bus z poziomu usługi Azure Pipelines. Dzięki temu można korzystać z federacji tożsamości obciążenia, aby usunąć zarządzanie wpisami tajnymi i kontrolę dostępu na podstawie ról platformy Azure na potrzeby szczegółowej kontroli dostępu.
Tożsamości, które uzyskują dostęp do usługi Azure Service Bus, muszą mieć dostęp do jednej z wbudowanych ról platformy Azure dla usługi Azure Service Bus w usłudze Service Bus .
PublishToAzureServiceBus@2 zadanie
Nowe zadania PublishToAzureServiceBus@2 można skonfigurować przy użyciu połączenia usługi platformy Azure. Utwórz połączenie usługi platformy Azure i wypełnij serviceBusQueueName
właściwości i serviceBusNamespace
nowego zadania:
- task: PublishToAzureServiceBus@2
inputs:
azureSubscription: my-azure-service-connection
serviceBusQueueName: my-service-bus-queue
serviceBusNamespace: my-service-bus-namespace
useDataContractSerializer: false
messageBody: |
{
"foo": "bar"
}
Zadania serwera
Zadania serwera niestandardowego (bez agenta) korzystające z ServiceBus
wykonywania mogą określać połączenie z usługą platformy Azure jako EndpointId
i pomijać ConnectionString
. Zobacz Tworzenie zadań serwera.
Potoki i zadania wypełniają zmienne w celu dostosowania uwierzytelniania federacyjnego tożsamości obciążenia
Punkt końcowy interfejsu API REST do żądania tokenów OIDC jest teraz dostępny w zmiennej potoku System.OidcRequestUri
. Deweloperzy zadań mogą wykorzystać tę zmienną do wygenerowania identyfikatora idToken na potrzeby uwierzytelniania przy użyciu identyfikatora Entra.
Jeśli używasz zadań witryny Marketplace lub zadań niestandardowych do wdrożenia na platformie Azure, pamiętaj, że te zadania mogą jeszcze nie obsługiwać federacji tożsamości obciążenia. Zalecamy deweloperom zadań włączenie federacji tożsamości obciążenia w celu poprawy środków bezpieczeństwa.
Zadania, które przyjmują connectedService:AzureRM
dane wejściowe w task.json , można zaktualizować w celu obsługi federacji tożsamości obciążenia, wykonując następujące kroki:
- Użyj interfejsu API REST Oidctoken, aby zażądać tokenu idToken (strzałka 1 na powyższym diagramie).
- Wymień token idToken na token dostępu przy użyciu przepływu poświadczeń federacyjnych interfejsu API OAuth, określając identyfikator IdToken jako
client_assertion
(strzałki 2 i 4 na powyższym diagramie);
or: - W przypadku zadań, które działają jako otoka narzędzia wykonującego uwierzytelnianie, użyj metody uwierzytelniania narzędzi, aby określić token federacyjny.
Zadania węzła mogą używać pakietu npm azure-pipelines-tasks-artifacts-common w celu uzyskania identyfikatora IdToken. Zapoznaj się z przykładem kodu, aby uzyskać szczegółowe informacje o implementacji.
Żądanie nowego identyfikatora
Zmienna potoku i AZURESUBSCRIPTION_SERVICE_CONNECTION_ID
zmienna System.OidcRequestUri
środowiskowa uwidoczniona w zadaniach AzureCLI@2
i AzurePowerShell@5
umożliwiają autorom potoków uwierzytelnianie z własnego skryptu:
Moduł Az programu PowerShell
- task: AzurePowerShell@5
inputs:
azureSubscription: 'my-azure-subscription'
scriptType: inlineScript
inline: |
# Request fresh idToken
Invoke-RestMethod -Headers @{
Authorization = "Bearer $(System.AccessToken)"
'Content-Type' = 'application/json'
} `
-Uri "${env:SYSTEM_OIDCREQUESTURI}?api-version=7.1&serviceConnectionId=${env:AZURESUBSCRIPTION_SERVICE_CONNECTION_ID}" `
-Method Post `
| Select-Object -ExpandProperty oidcToken
| Set-Variable idToken
# Fetch current context
$azContext = Get-AzContext
# Start new Az session
Connect-AzAccount -ApplicationId $azContext.Account.Id `
-TenantId $azContext.Tenant.Id `
-SubscriptionId $azContext.Subscription.Id `
-FederatedToken $idToken
Interfejs wiersza polecenia platformy Azure
- task: AzureCLI@2
inputs:
addSpnToEnvironment: true
azureSubscription: 'my-azure-subscription'
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
# Request fresh idToken
OIDC_REQUEST_URL="${SYSTEM_OIDCREQUESTURI}?api-version=7.1&serviceConnectionId=${AZURESUBSCRIPTION_SERVICE_CONNECTION_ID}"
ARM_OIDC_TOKEN=$(curl -s -H "Content-Length: 0" -H "Content-Type: application/json" -H "Authorization: Bearer $(System.AccessToken)" -X POST $OIDC_REQUEST_URL | jq -r '.oidcToken')
# Save subscription context
ARM_SUBSCRIPTION_ID=$(az account show --query id -o tsv)
# New az-cli session
az login --service-principal -u $servicePrincipalId --tenant $tenantId --allow-no-subscriptions --federated-token $ARM_OIDC_TOKEN
az account set --subscription $ARM_SUBSCRIPTION_ID
Ponawianie prób dla zadań serwera
Zadania serwera, które nazywają systemy zewnętrzne, takie jak AzureFunction
lub InvokeRESTAPI
, mogą czasami zakończyć się niepowodzeniem z powodu przejściowych błędów, takich jak wyczerpanie zasobów obliczeniowych. Wcześniej takie błędy spowodowały niepowodzenie całego zadania i potencjalnie potoku.
Aby zwiększyć odporność na błędy przejściowe, wprowadziliśmy obsługę retryCountOnTaskFailure
właściwości w zadaniach serwera. Załóżmy, że w potoku masz następujący kod YAML:
- stage: deploy
jobs:
- job:
pool: server
steps:
- task: AzureFunction@1
retryCountOnTaskFailure: 2
inputs:
function: 'https://api.fabrikamfiber.com'
key: $(functionKey)
method: 'POST'
waitForCompletion: 'false'
Jeśli https://api.fabrikamfiber.com
wystąpi błąd przejściowy, usługa Azure Pipelines ponowi próbę żądania maksymalnie trzy razy (próba początkowa i dwie próby określone przez retryCountOnTaskFailure
usługę ). Każda ponowna próba obejmuje rosnący okres oczekiwania. Maksymalna dozwolona liczba ponownych prób wynosi 10.
Element retryCountOnTaskFailure
nie jest dostępny dla ManualValidation
zadania i innych zadań, które nie obejmują wywołań systemu zewnętrznego.
Zadania korzystające z wersji modułu uruchamiającego węzła end-of-life do wykonywania ostrzeżeń emitujących
Zadania potoku, które korzystają z wersji węzła, nie będą już obsługiwane , będą otrzymywać ostrzeżenia:
Wersja
<version>
zadaniaTaskName
jest zależna od wersji węzła (10), która jest zakończona. Skontaktuj się z właścicielem rozszerzenia, aby uzyskać zaktualizowaną wersję zadania. Osoby odpowiedzialne za zadania powinny zapoznać się ze wskazówkami dotyczącymi uaktualniania węzła: https://aka.ms/node-runner-guidance
Aby pominąć te ostrzeżenia, można ustawić zmienną środowiskową lub potokową na poziomie potoku (zadania) lub zadania. Na przykład:
variables:
AZP_AGENT_CHECK_IF_TASK_NODE_RUNNER_IS_DEPRECATED: false
DockerCompose@0 używa narzędzia Docker Compose w wersji 2 w trybie zgodności w wersji 1
Program Docker Compose w wersji 1 osiągnie zakończenie działania i zostanie usunięty z hostowanych agentów 24 lipca 2024 r. Zaktualizowaliśmy zadanie DockerCompose@0 , aby używać narzędzia Docker Compose w wersji 2 w trybie zgodności w wersji 1, jeśli program Docker Compose v1 nie jest dostępny w agencie.
Jednak tryb zgodności nie rozwiązuje wszystkich problemów ze zgodnością. Zobacz Migrowanie do Compose w wersji 2. Niektórzy użytkownicy będą potrzebować więcej czasu na zaktualizowanie projektów Docker Compose pod kątem zgodności z Docker Compose w wersji 2. W takich przypadkach postępuj zgodnie z tymi instrukcjami, aby użyć zadania DockerComposeV0 z programem docker-compose v1.
UWAGA: ten przewodnik jest oparty na dokumentacji autonomicznej instalacji narzędzia Compose
Korzystanie z narzędzia docker-compose w wersji 1 w systemie Windows
Dodaj krok programu PowerShell do potoku, aby pobrać narzędzie docker-Compose w wersji 1.29.2 i użyć go z zadaniem DockerComposeV0 w systemie Windows:
variables:
dockerComposePath: C:\docker-compose
steps:
- powershell: |
mkdir -f $(dockerComposePath)
# GitHub now requires TLS1.2. In PowerShell, run the following
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Start-BitsTransfer -Source "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-windows-x86_64.exe" -Destination $(dockerComposePath)\docker-compose.exe
displayName: Download docker-compose
- task: DockerCompose@0
inputs:
containerregistrytype: 'Azure Container Registry'
dockerComposeFile: '**/docker-compose.yml'
action: 'Run a Docker Compose command'
dockerComposeCommand: 'run'
dockerComposePath: $(dockerComposePath)\docker-compose.exe
Korzystanie z narzędzia docker-compose w wersji 1 w systemie Linux
Dodaj krok powłoki bash do potoku, aby pobrać narzędzie Docker-Compose w wersji 1.29.2 i użyć go z zadaniem DockerComposeV0 w systemie Linux:
variables:
dockerComposePath: /tmp/docker-compose
steps:
- bash: |
sudo mkdir $(dockerComposePath)
sudo curl -SL https://github.com/docker/compose/releases/download/1.29.2/docker-compose-linux-x86_64 -o $(dockerComposePath)/docker-compose
sudo chmod 755 $(dockerComposePath)/docker-compose
displayName: Download docker-compose
- task: DockerCompose@0
inputs:
containerregistrytype: 'Azure Container Registry'
dockerComposeFile: $(Build.SourcesDirectory)/DockerComposeV0/docker-compose.yml
action: 'Run a Docker Compose command'
dockerComposeCommand: 'run'
dockerComposePath: $(dockerComposePath)/docker-compose
Azure Test Plans
Rozszerzenie Test and Feedback w manifeście W wersji 3
Z przyjemnością ogłaszamy nową aktualizację rozszerzenia Azure DevOps Test and Feedback! To uaktualnienie powoduje przejście naszej implementacji z manifestu w wersji 2 do wersji 3, zgodnie z harmonogramem wycofania firmy Google dla manifestu V2.
Chociaż podstawowe funkcje rozszerzenia pozostają niezmienione, ta aktualizacja zwiększa bezpieczeństwo i wydajność. Zaktualizowane rozszerzenie będzie stopniowo wdrażane zarówno w przeglądarkach Chrome, jak i Edge w nadchodzących tygodniach. Będziemy monitorować wydajność i opinie, aby zapewnić płynne przejście przed rozszerzeniem wdrożenia na podstawie wyników.
Aby uzyskać więcej informacji, zapoznaj się z naszym ostatnim wpisem w blogu dotyczącym tej aktualizacji. Rozszerzenie Testuj i opinie w manifeście W wersji 3
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,
Silviu Andrica