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

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.

Zrzuty ekranu obszaru usuwania.

Azure Repos

Nowe ustawienie wyłączania tworzenia repozytoriów TFVC

W ostatnich latach nie dodano nowych funkcji do Kontrola wersji serwera Team Foundation (TFVC), ponieważ usługa Git stała się preferowanym systemem kontroli wersji w usłudze Azure Repos. Wszystkie ostatnie 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 kontroli wersji serwera TEAMVC. Mimo że niektóre nadal polegają na kontroli wersji serwera TEAMVC i nie zamierzamy usuwać tego zestawu funkcji, planujemy stopniowo wycofyć funkcję TFVC dla nowych projektów i organizacji, a także dla projektów, które obecnie nie korzystają z kontroli wersji serwera TEAMVC.

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 KONTROLI wersji serwera Team Foundation i nie będzie miało wpływu na istniejące.

Plik GIF do pokazu Wyłącz tworzenie repozytoriów TFVC.

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.

Zrzut ekranu przedstawiający współpracę oidc.

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 retryCountOnTaskFailureusł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> zadania TaskName 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 redagowania wersji 2. Niektórzy użytkownicy będą potrzebować więcej czasu na zaktualizowanie projektów docker Compose pod kątem zgodności z platformą 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ę.

Utwórz sugestię

Możesz również uzyskać porady i odpowiedzi na pytania społeczności w witrynie Stack Overflow.

Dzięki,

Silviu Andrica