Udostępnij za pośrednictwem


Nowy widżet postępu przebiegu i ulepszone zabezpieczenia potoków — aktualizacja przebiegu 160

W aktualizacji Przebiegu 160 usługi Azure DevOps dodaliśmy nowy widżet postępu przebiegu, który obsługuje spalanie według punktów scenariuszy, liczby zadań i sumowania pól niestandardowych. Dodatkowo ulepszono zabezpieczenia potoków dzięki ograniczeniu zakresu tokenów dostępu.

Aby uzyskać więcej informacji, zapoznaj się z poniższą listą funkcji .

Co nowego w usłudze Azure DevOps

Funkcje

Azure Repos:

Azure Pipelines:

Azure Artifacts:

Raportowanie:

Wiki:

Azure Repos

Administracja zasadami gałęzi między repozytoriami

Zasady gałęzi to jedna z zaawansowanych funkcji usługi Azure Repos, które ułatwiają ochronę ważnych gałęzi. Chociaż możliwość ustawiania zasad na poziomie projektu istnieje w interfejsie API REST, nie było dla niego interfejsu użytkownika. Teraz administratorzy mogą ustawić zasady w określonej gałęzi lub domyślnej gałęzi we wszystkich repozytoriach w projekcie. Na przykład administrator może wymagać dwóch minimalnych recenzentów dla wszystkich żądań ściągnięcia wysyłanych do każdej gałęzi głównej w każdym repozytorium w projekcie. Funkcję Dodaj ochronę gałęzi można znaleźć w obszarze Ustawienia projektu repozytoriów.

Administrowanie zasadami między repozytoriami.

Azure Pipelines

Interfejs użytkownika potoków wieloetapowych

Pracujemy nad zaktualizowanym środowiskiem użytkownika w celu zarządzania potokami. Te aktualizacje sprawiają, że potoki są nowoczesne i spójne z kierunkiem usługi Azure DevOps. Ponadto te aktualizacje łączą klasyczne potoki kompilacji i wieloetapowe potoki YAML w jedno środowisko. Na przykład następujące możliwości są uwzględniane w nowym środowisku; wyświetlanie wielu etapów i zarządzanie nimi, zatwierdzanie przebiegów potoku, możliwość przewijania w dziennikach, gdy potok jest nadal w toku, oraz kondycja poszczególnych gałęzi potoku.

Dziękuję wszystkim, którzy próbowali nowego doświadczenia. Jeśli nie próbowano tego zrobić, włącz potoki wieloetapowe w funkcjach w wersji zapoznawczej. Aby dowiedzieć się więcej na temat potoków wieloetapowych, zobacz dokumentację tutaj .

Interfejs użytkownika potoków wieloetapowych.

Dziękujemy za twoją opinię, omówiliśmy następujące kwestie w dwóch ostatnich aktualizacjach.

  1. Możliwość odnajdywania widoku folderów.
  2. Skok w widoku dzienników.
  3. Łatwo wyświetlaj dzienniki z poprzednich i bieżących zadań nawet wtedy, gdy przebieg jest w toku.
  4. Ułatwia przechodzenie między zadaniami podczas przeglądania dzienników.

Możliwości zawarte w nowym środowisku.

Uwaga

W następnej aktualizacji planujemy domyślnie włączyć tę funkcję dla wszystkich użytkowników. Nadal będziesz mieć możliwość rezygnacji z wersji zapoznawczej. Kilka tygodni później funkcja zostanie ogólnie udostępniona.

Orkiestracja strategii wdrażania kanarkowego w środowisku na potrzeby platformy Kubernetes

Jedną z kluczowych zalet ciągłego dostarczania aktualizacji aplikacji jest możliwość szybkiego wypychania aktualizacji do środowiska produkcyjnego dla określonych mikrousług. Dzięki temu można szybko reagować na zmiany wymagań biznesowych. Środowisko zostało wprowadzone jako pierwszoklasowa koncepcja umożliwiająca orkiestrację strategii wdrażania i ułatwianie wydania bez przestojów. Wcześniej obsługiwaliśmy strategię runOnce , która wykonała kroki po sekwencyjnie. Dzięki obsłudze strategii kanarowej w potokach wieloetapowych można teraz zmniejszyć ryzyko, powoli wdrażając zmianę w małym podzestawie. Gdy zyskujesz większą pewność co do nowej wersji, możesz zacząć wdrażać ją na większej infrastruktury serwerów i kierować do niej więcej użytkowników.

jobs:
- deployment:
  environment: musicCarnivalProd
  pool:
    name: musicCarnivalProdPool 
  strategy:                 
    canary:     
      increments: [10,20] 
      preDeploy:                                    
        steps:          
        - script: initialize, cleanup....  
      deploy:            
        steps:
        - script: echo deploy updates...
        - task: KubernetesManifest@0
          inputs:
            action: $(strategy.action)      
            namespace: 'default'
            strategy: $(strategy.name)
            percentage: $(strategy.increment)
            manifests: 'manifest.yml'
      postRouteTaffic:
        pool: server
        steps:          
        - script: echo monitor application health...  
      on:
        failure:
          steps:
	  - script: echo clean-up, rollback...  
        success:
          steps:
          - script: echo checks passed, notify...

Strategia kanaryczna dla platformy Kuberenetes najpierw wdroży zmiany z 10% zasobnikami, a następnie 20% podczas monitorowania kondycji podczas pracy po usłudze PostRouteTraffic. Jeśli wszystko pójdzie dobrze, będzie promować się do 100%.

Zasady zatwierdzania dla potoków YAML

W potokach YAML stosujemy konfigurację zatwierdzania kontrolowanego przez właściciela zasobu. Właściciele zasobów konfigurują zatwierdzenia zasobu i wszystkich potoków, które używają wstrzymania zasobu do zatwierdzania przed rozpoczęciem etapu zużywania zasobu. Właściciele aplikacji opartych na protokole SOX często ograniczają osoby żądające wdrożenia od zatwierdzania własnych wdrożeń.

Teraz możesz użyć zaawansowanych opcji zatwierdzania, aby skonfigurować zasady zatwierdzania, takie jak osoba żądająca nie powinna zatwierdzać, wymagać zatwierdzenia z podzestawu użytkowników i limitu czasu zatwierdzania.

Zasady zatwierdzania dla potoków YAML.

Usługa ACR jako zasób potoku pierwszej klasy

Jeśli musisz użyć obrazu kontenera opublikowanego w usłudze ACR (Azure Container Registry) w ramach potoku i wyzwolić potok za każdym razem, gdy nowy obraz został opublikowany, możesz użyć zasobu kontenera usługi ACR.

resources:
  containers:
  - container: MyACR  #container resource alias
    type: ACR
    azureSubscription: RMPM  #ARM service connection
    resourceGroup: contosoRG
    registry: contosodemo
    repository: alphaworkz
    trigger: 
      tags:
        include: 
        - production 

Ponadto dostęp do metadanych obrazów usługi ACR można uzyskać przy użyciu wstępnie zdefiniowanych zmiennych. Poniższa lista zawiera zmienne usługi ACR dostępne do zdefiniowania zasobu kontenera usługi ACR w potoku.

resources.container.<Alias>.type
resources.container.<Alias>.registry
resources.container.<Alias>.repository
resources.container.<Alias>.tag 
resources.container.<Alias>.digest
resources.container.<Alias>.URI
resources.container.<Alias>.location

Metadane zasobu potoku jako wstępnie zdefiniowane zmienne

Dodaliśmy wstępnie zdefiniowane zmienne dla zasobów potoków YAML w potoku. Oto lista dostępnych zmiennych zasobów potoku.

resources.pipeline.<Alias>.projectName 
resources.pipeline.<Alias>.projectID 
resources.pipeline.<Alias>.pipelineName 
resources.pipeline.<Alias>.pipelineID 
resources.pipeline.<Alias>.runName 
resources.pipeline.<Alias>.runID
resources.pipeline.<Alias>.runURI
resources.pipeline.<Alias>.sourceBranch 
resources.pipeline.<Alias>.sourceCommit
resources.pipeline.<Alias>.sourceProvider 
resources.pipeline.<Alias>.requestedFor
resources.pipeline.<Alias>.requestedForID

Możliwość śledzenia potoków i zasobów usługi ACR

Zapewniamy pełną możliwość śledzenia E2E, gdy potoki i zasoby kontenera usługi ACR są używane w potoku. Dla każdego zasobu używanego przez potok YAML można śledzić zatwierdzenia, elementy robocze i artefakty.

W widoku podsumowania przebiegu potoku można zobaczyć:

  • Wersja zasobu, która wyzwoliła przebieg. Teraz potok można wyzwolić po zakończeniu innego uruchomienia potoku platformy Azure lub wypchnięciu obrazu kontenera do usługi ACR.

    Wersja zasobu, która wyzwoliła przebieg.

  • Zatwierdzenia, które są używane przez potok. Możesz również znaleźć podział zatwierdzeń przez każdy zasób używany przez potok.

    Zatwierdzenia, które są używane przez potok.

  • Elementy robocze skojarzone z poszczególnymi zasobami używanymi przez potok.

  • Artefakty, które są dostępne do użycia przez przebieg.

    Artefakty, które są dostępne do użycia przez przebieg.

W widoku wdrożeń środowiska można zobaczyć zatwierdzenia i elementy robocze dla każdego zasobu wdrożonego w środowisku.

Zatwierdza i elementy robocze dla każdego zasobu wdrożonego w środowisku.

Uproszczona autoryzacja zasobów w potokach YAML

Zasób jest używany przez potok, który znajduje się poza potokiem. Zasoby muszą być autoryzowane, zanim będą mogły być używane. Wcześniej w przypadku korzystania z nieautoryzowanych zasobów w potoku YAML wystąpił błąd autoryzacji zasobu. Musisz autoryzować zasoby ze strony podsumowania przebiegu, który zakończył się niepowodzeniem. Ponadto potok nie powiódł się, jeśli używa zmiennej, która odwoływała się do nieautoryzowanego zasobu.

Teraz ułatwiamy zarządzanie autoryzacjami zasobów. Zamiast kończyć się niepowodzeniem przebiegu, przebieg będzie czekać na uprawnienia do zasobów na początku etapu zużywającego zasób. Właściciel zasobu może wyświetlić potok i autoryzować zasób na stronie Zabezpieczenia.

Uproszczona autoryzacja zasobów w potokach YAML.

Ulepszenie zabezpieczeń potoków dzięki ograniczeniu zakresu tokenów dostępu

Każde zadanie uruchamiane w usłudze Azure Pipelines otrzymuje token dostępu. Token dostępu jest używany przez zadania i skrypty do wywołania z powrotem do usługi Azure DevOps. Na przykład użyjemy tokenu dostępu, aby uzyskać kod źródłowy, przekazać dzienniki, wyniki testów, artefakty lub wykonać wywołania REST do usługi Azure DevOps. Nowy token dostępu jest generowany dla każdego zadania i wygasa po zakończeniu zadania. Dzięki tej aktualizacji dodaliśmy następujące ulepszenia.

  • Uniemożliwianie tokenowi uzyskiwania dostępu do zasobów spoza projektu zespołowego

    Do tej pory domyślnym zakresem wszystkich potoków była kolekcja projektów zespołowych. Zakres może być projektem zespołowym w klasycznych potokach kompilacji. Nie masz jednak tej kontroli dla klasycznych potoków wydania ani YAML. Dzięki tej aktualizacji wprowadzamy ustawienie organizacji, aby wymusić na każdym zadaniu uzyskanie tokenu o zakresie projektu niezależnie od tego, co zostało skonfigurowane w potoku. Dodaliśmy również ustawienie na poziomie projektu. Teraz każdy nowy projekt i utworzona organizacja automatycznie będą miały włączone to ustawienie.

    Uwaga

    Ustawienie organizacji zastępuje ustawienie projektu.

    Włączenie tego ustawienia w istniejących projektach i organizacjach może spowodować niepowodzenie niektórych potoków, jeśli potoki uzyskują dostęp do zasobów spoza projektu zespołowego przy użyciu tokenów dostępu. Aby wyeliminować błędy potoku, możesz jawnie udzielić dostępu konta usługi Project Build Do żądanego zasobu. Zdecydowanie zalecamy włączenie tych ustawień zabezpieczeń.

  • Usuwanie niektórych uprawnień dla tokenu dostępu

    Domyślnie udzielamy wielu uprawnień do tokenu dostępu. Jednym z tych uprawnień jest kompilacja kolejki. Dzięki tej aktualizacji usunęliśmy to uprawnienie do tokenu dostępu. Jeśli potoki potrzebują tego uprawnienia, możesz jawnie przyznać je kontu usługi kompilacji projektu lub kontu usługi kompilacji kolekcji projektów w zależności od używanego tokenu.

Ocena sprawdzania artefaktów

Teraz możesz zdefiniować zestaw zasad i dodać ocenę zasad jako sprawdzenie środowiska dla artefaktów obrazu kontenera. Po uruchomieniu potoku wykonanie jest wstrzymywane przed rozpoczęciem etapu korzystającego ze środowiska. Określone zasady są oceniane względem dostępnych metadanych dla wdrażanego obrazu. Sprawdzanie jest sprawdzane, gdy zasady zakończyły się powodzeniem i oznacza etap jako niepowodzenie, jeśli sprawdzanie zakończy się niepowodzeniem.

Ocena sprawdzania artefaktu.

Obsługa języka Markdown w komunikatach o błędach testów automatycznych

Teraz obsługujemy język Markdown w komunikatach o błędach na potrzeby testów automatycznych. Możesz łatwo sformatować komunikaty o błędach zarówno dla przebiegu testu, jak i wyniku testu, aby zwiększyć czytelność i ułatwić rozwiązywanie problemów z awarią w usłudze Azure Pipelines. Obsługiwaną składnię języka Markdown można znaleźć tutaj.

Obsługa języka Markdown w komunikatach o błędach testów automatycznych.

Diagnozowanie harmonogramów programu cron w języku YAML

Zaobserwowaliśmy stały wzrost użycia składni cron do określania harmonogramów w potokach YAML. Podczas nasłuchiwania opinii słyszeliśmy, że trudno ci było ustalić, czy usługa Azure Pipelines prawidłowo przetworzyła składnię. Wcześniej trzeba było poczekać na rzeczywisty czas zaplanowanego uruchomienia w celu debugowania problemów z harmonogramem. Aby ułatwić diagnozowanie błędów gałęzi/składni, dodaliśmy nowe menu akcji dla potoku. Zaplanowane uruchomienia w menu Uruchamianie potoku zapewnią podgląd nadchodzących kilku zaplanowanych uruchomień potoku, aby ułatwić diagnozowanie błędów z harmonogramami cron.

Diagnozowanie harmonogramów cron w języku YAML.

Aktualizacje zadania wdrażania szablonu usługi ARM

Wcześniej nie filtrowaliśmy połączeń usług w zadaniu wdrażania szablonu usługi ARM. Może to spowodować niepowodzenie wdrożenia, jeśli wybierasz połączenie usługi o niższym zakresie w celu wykonania wdrożeń szablonów usługi ARM w szerszym zakresie. Teraz dodaliśmy filtrowanie połączeń usług w celu filtrowania połączeń usług o niższym zakresie na podstawie wybranego zakresu wdrożenia.

Zabezpieczenia na poziomie projektu dla połączeń usługi

Dzięki tej aktualizacji dodaliśmy zabezpieczenia na poziomie centrum dla połączeń usług. Teraz możesz dodawać/usuwać użytkowników, przypisywać role i zarządzać dostępem w scentralizowanym miejscu dla wszystkich połączeń usługi.

Zabezpieczenia na poziomie projektu dla połączeń usług.

Pula systemu Ubuntu 18.04

Usługa Azure Pipelines obsługuje teraz uruchamianie zadań w systemie Ubuntu 18.04. Zaktualizowaliśmy pulę usługi Azure Pipelines hostowaną przez firmę Microsoft w celu uwzględnienia obrazu Ubuntu-18.04. Teraz, gdy odwołujesz się do ubuntu-latest puli w potokach YAML, będzie to oznaczać ubuntu-18.04 , a nie ubuntu-16.04. Nadal można kierować obrazy w wersji 16.04 w zadaniach, jawnie.ubuntu-16.04

Wdrożenia kanarkowe na podstawie interfejsu siatki usług w ramach zadania KubernetesManifest

Wcześniej, gdy strategia kanaryczna została określona w zadaniu KubernetesManifest, zadanie tworzyłoby obciążenia bazowe i kanary, których repliki były równe procentowi replik używanych na potrzeby stabilnych obciążeń. Nie było to dokładnie takie samo, jak dzielenie ruchu do żądanej wartości procentowej na poziomie żądania. Aby rozwiązać ten problem, dodaliśmy obsługę wdrożeń kanarowych opartych na interfejsie usługi Service Mesh do zadania KubernetesManifest.

Abstrakcja interfejsu usługi Service Mesh umożliwia konfigurację plug-and-play z dostawcami siatki usług, takimi jak Linkerd i Istio. Teraz zadanie KubernetesManifest zabiera ciężką pracę mapowania obiektów SMI TrafficSplit do stabilnych, bazowych i kanarowych usług w cyklu życia strategii wdrażania. Żądany procent podziału ruchu między stabilnym, bazowym i kanarowym jest dokładniejszy, ponieważ podział ruchu procentowego jest kontrolowany na żądaniach na płaszczyźnie siatki usług.

Poniżej przedstawiono przykład wykonywania wdrożeń kanarowych opartych na protokole SMI w sposób stopniowy.

- deployment: Deployment
    displayName: Deployment
    pool:
      vmImage: $(vmImage)
    environment: ignite.smi
    strategy:
      canary:
        increments: [25, 50]
        preDeploy:
          steps:
          - task: KubernetesManifest@0
            displayName: Create/update secret
            inputs:
              action: createSecret
              namespace: smi
              secretName: $(secretName)
              dockerRegistryEndpoint: $(dockerRegistryServiceConnection)
        deploy:
          steps:
          - checkout: self
          - task: KubernetesManifest@0
            displayName: Deploy canary
            inputs:
              action: $(strategy.action)
              namespace: smi
              strategy: $(strategy.name)
              trafficSplitMethod: smi
              percentage: $(strategy.increment)
              baselineAndCanaryReplicas: 1
              manifests: |
                manifests/deployment.yml
                manifests/service.yml
              imagePullSecrets: $(secretName)
              containers: '$(containerRegistry)/$(imageRepository):$(Build.BuildId)'
        postRouteTraffic:
          pool: server
          steps:
            - task: Delay@1
              inputs:
                delayForMinutes: '2'

Aplikacja ReviewApp w środowisku

ReviewApp wdraża każde żądanie ściągnięcia z repozytorium Git w zasobie środowiska dynamicznego. Recenzenci mogą zobaczyć, jak te zmiany wyglądają, a także pracować z innymi usługami zależnymi przed scaleniem ich z gałęzią główną i wdrożoną w środowisku produkcyjnym. Ułatwi to tworzenie zasobów aplikacji i zarządzanie nimi oraz korzystanie ze wszystkich funkcji śledzenia i diagnostyki funkcji środowiska. Używając słowa kluczowego reviewApp , możesz utworzyć klon zasobu (dynamicznie utworzyć nowy zasób na podstawie istniejącego zasobu w środowisku) i dodać nowy zasób do środowiska.

Poniżej przedstawiono przykładowy fragment kodu YAML dotyczący używania funkcji reviewApp w środowiskach.

jobs:
- deployment:
  environment: 
     name: smarthotel-dev      
     resourceName: $(System.PullRequest.PullRequestId) 
  pool:
    name: 'ubuntu-latest'
  strategy:                 
    runOnce:            
      pre-deploy: 
        steps:       
        - reviewApp: MasterNamespace

Azure Artifacts

Zaktualizowane połączenie ze środowiskiem źródeł danych

Okno dialogowe Łączenie z kanałem informacyjnym to wejście do korzystania z usługi Azure Artifacts; Zawiera informacje na temat konfigurowania klientów i repozytoriów w celu wypychania i ściągania pakietów z kanałów informacyjnych w usłudze Azure DevOps. Zaktualizowaliśmy okno dialogowe, aby dodać szczegółowe informacje o konfiguracji i rozwinąć narzędzia, dla których udostępniamy instrukcje.

Publiczne źródła danych z obsługą strumienia wychodzącego są teraz publicznie dostępne

Publiczna wersja zapoznawcza publicznych kanałów informacyjnych otrzymała świetne przyjęcie i opinie. W tej aktualizacji rozszerzyliśmy dodatkowe funkcje do ogólnej dostępności. Teraz możesz ustawić publiczne źródło danych jako źródło nadrzędne z prywatnego źródła danych. Pliki konfiguracji można łatwo przechowywać, zapewniając możliwość transmisji strumieniowej zarówno do kanałów informacyjnych prywatnych, jak i z kanałów informacyjnych o zakresie projektu.

Tworzenie źródeł danych w zakresie projektu z poziomu portalu

Po udostępnieniu publicznych kanałów informacyjnych udostępniliśmy również kanały informacyjne o zakresie projektu. Do tej pory źródła danych o zakresie projektu można tworzyć za pośrednictwem interfejsów API REST lub przez utworzenie publicznego źródła danych, a następnie włączenie prywatnego projektu. Teraz możesz tworzyć źródła danych o zakresie projektu bezpośrednio w portalu z dowolnego projektu, jeśli masz wymagane uprawnienia. Możesz również zobaczyć, które źródła danych są projektami i które są objęte zakresem organizacji w selektorze kanału informacyjnego.

Raportowanie

Widżet Sprint Burndown ze wszystkim, o co prosiłeś

Nowy widżet Postępu przebiegu obsługuje wypalanie według punktów scenariuszy, liczby zadań lub sumowania pól niestandardowych. Możesz nawet utworzyć przebieg dla funkcji lub epików. Widżet wyświetla średnie spalenie, procent ukończenia i zwiększenie zakresu. Możesz skonfigurować zespół, umożliwiając wyświetlanie przepaleń przebiegu dla wielu zespołów na tym samym pulpicie nawigacyjnym. Dzięki tym wszystkim doskonałym informacjom do wyświetlenia możemy zmienić jego rozmiar do 10x10 na pulpicie nawigacyjnym.

Widżet Postępu przebiegu.

Aby go wypróbować, możesz dodać go z katalogu widżetów lub edytując konfigurację istniejącego widżetu Sprint Burndown i zaznaczając pole Wypróbuj nową wersję teraz .

Uwaga

Nowy widżet korzysta z usługi Analytics. Zachowaliśmy starsze funkcje Przebiegu Burndown na wypadek, gdy nie masz dostępu do analizy.

Witryna Wiki

Synchroniczne przewijanie na potrzeby edytowania stron wiki

Edytowanie stron typu wiki jest teraz łatwiejsze dzięki synchronicznej przewijaniu między edycją a okienkiem podglądu. Przewijanie po jednej stronie spowoduje automatyczne przewinięcie drugiej strony, aby zamapować odpowiednie sekcje. Możesz wyłączyć synchroniczne przewijanie za pomocą przycisku przełącznika.

Synchroniczne przewijanie do edytowania stron typu wiki.

Uwaga

Stan przełącznika przewijania synchronicznego jest zapisywany dla użytkownika i organizacji.

Liczba odwiedzin stron wiki

Teraz możesz uzyskać szczegółowe informacje na temat wizyt stron typu wiki. Interfejs API REST umożliwia dostęp do informacji o odwiedzinach strony w ciągu ostatnich 30 dni. Te dane umożliwiają tworzenie raportów dla stron typu wiki. Ponadto możesz przechowywać te dane w źródle danych i tworzyć pulpity nawigacyjne, aby uzyskać szczegółowe informacje, takie jak najczęściej wyświetlane strony.

Na każdej stronie będzie również widoczna zagregowana liczba wizyt na stronie z ostatnich 30 dni.

Odwiedziny stron typu wiki.

Uwaga

Wizyta strony jest definiowana jako widok strony przez danego użytkownika w 15-minutowym interwale.

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,

Jeff Beehler