Omówienie usługi Azure Pipelines

Ukończone

Kroki procesu wdrażania można zautomatyzować przy użyciu potoku. Za każdym razem, gdy wprowadzisz zmianę w kodzie i zatwierdź zmianę w repozytorium Git, potok uruchamia wstępnie zdefiniowany proces. Potok może sprawdzić, czy kod Bicep spełnia twoje standardy jakości, a następnie automatyzuje kroki wdrażania zasobów na platformie Azure. Proces jest definiowany w utworzonej definicji potoku.

Azure Pipelines to funkcja usługi Azure DevOps. Usługa Azure DevOps obejmuje również usługę Azure Repos, która hostuje repozytoria Git używane do przechowywania i udostępniania kodu współpracownikom. Podczas przechowywania kodu Bicep w usłudze Git usługa Azure Pipelines może uzyskiwać dostęp do kodu w celu zautomatyzowania procesów wdrażania. W tej lekcji dowiesz się więcej o usłudze Azure Pipelines.

Co to jest potok?

Potok to powtarzalny proces używany do testowania i wdrażania kodu zdefiniowanego w pliku konfiguracji. Potok zawiera wszystkie kroki, które chcesz wykonać, i w jakiej kolejności.

Podczas pracy z usługą Azure Pipelines należy zdefiniować potok w pliku YAML. Plik YAML to ustrukturyzowany plik tekstowy podobny do tego, jak Bicep jest plikiem tekstowym ze strukturą. Pliki YAML można tworzyć i edytować przy użyciu dowolnego edytora tekstów. W tym module użyjesz programu Visual Studio Code. Program Visual Studio Code oferuje rozszerzenie, które ułatwia edytowanie plików potoków YAML usługi Azure DevOps. Interfejs internetowy usługi Azure DevOps udostępnia również niektóre narzędzia, których można użyć do wyświetlania i edytowania plików YAML potoku.

Uwaga

Usługa Azure Pipelines obejmuje klasyczne potoki— wcześniejszą wersję funkcji potoków. Potoki oparte na języku YAML zastąpiły klasyczne potoki. W tym module omówimy tylko potoki YAML. Zalecamy używanie potoków YAML.

Ponieważ plik YAML potoku jest plikiem kodu, plik jest przechowywany przy użyciu kodu Bicep w repozytorium Git. Funkcje usługi Git umożliwiają współpracę nad definicją potoku. Różne wersje pliku potoku można zarządzać przy użyciu zatwierdzeń i gałęzi. W przyszłym module poznasz również inne zaawansowane funkcje potoków, takie jak szablony. Szablony ułatwiają ponowne używanie definicji potoków.

Agenci i pule

Do tej pory pliki Bicep zostały wdrożone z komputera lokalnego. Po napisaniu szablonu Bicep wdrożysz go na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Te narzędzia używają zasobów komputera do przesyłania szablonu na platformę Azure. Używają twojej tożsamości osobistej do uwierzytelniania na platformie Azure i do sprawdzania, czy masz uprawnienia do wdrażania zasobów.

Potok wymaga również dostępu do komputera, aby można było wykonać kroki wdrażania. Usługa Azure Pipelines używa maszyny nazywanej agentem. Agent to komputer skonfigurowany do uruchamiania kroków wdrażania dla potoku. Każdy agent ma już narzędzia Bicep i Platformy Azure używane we wcześniejszych modułach, dzięki czemu może wykonywać te same czynności z poziomu własnego komputera. Zamiast wykonywać polecenia przez człowieka, usługa Azure Pipelines nakazuje agentowi uruchomienie kroków zdefiniowanych w pliku YAML.

Usługa Azure Pipelines udostępnia wiele typów agentów dla różnych systemów operacyjnych, takich jak Ubuntu lub Windows, i różne zestawy narzędzi. Firma Microsoft uruchamia tych agentów, więc nie musisz utrzymywać żadnej infrastruktury obliczeniowej dla agentów. Agenci czasami są nazywani agentami hostowanymi przez firmę Microsoft lub hostowanymi agentami, ponieważ są hostowani w Twoim imieniu. Po uruchomieniu potoku zostanie automatycznie utworzony hostowany agent. Po zakończeniu działania potoku hostowany agent zostanie automatycznie usunięty. Nie można uzyskać bezpośredniego dostępu do hostowanych agentów, dlatego ważne jest, aby potok zawierał wszystkie kroki niezbędne do wdrożenia rozwiązania.

Pula agentów zawiera wielu agentów tego samego typu. Podczas tworzenia potoku informujesz usługę Azure Pipelines, która pula agentów ma być używana do wykonywania każdego zestawu kroków. Po uruchomieniu potoku oczekuje agenta z puli, aby stał się dostępny, a następnie instruuje agenta, aby uruchamiał kroki wdrażania. Każdy agent w puli może być przypisany do uruchamiania potoku.

Diagram that shows a pipeline that runs on an agent within an agent pool.

Uwaga

Istnieje możliwość utworzenia agenta niestandardowego o nazwie własnego agenta. Możesz utworzyć własnego agenta, jeśli masz określone oprogramowanie, które należy uruchomić w ramach potoku lub jeśli musisz dokładnie kontrolować sposób konfigurowania agenta. W tym module nie omawiamy własnych agentów, ale udostępniamy link do dodatkowych informacji w podsumowaniu.

Wyzwalacze

Aby poinstruować usługę Azure Pipelines , kiedy należy uruchomić potok, należy utworzyć wyzwalacz. Możesz wybrać spośród wielu typów wyzwalaczy. Na razie użyjesz wyzwalacza ręcznego. Ręcznie poinformujesz usługę Azure Pipelines, kiedy należy rozpocząć uruchamianie potoku. W dalszej części tego modułu dowiesz się więcej o innych typach wyzwalaczy.

Diagram that shows a trigger initiating a pipeline.

Kroki

Krok reprezentuje jedną operację wykonywaną przez potok. Krok jest podobny do pojedynczego polecenia uruchamianego w powłoce Bash lub PowerShell. W przypadku większości wdrożeń należy wykonać kilka kroków w sekwencji. Należy zdefiniować sekwencję i wszystkie szczegóły każdego kroku w pliku YAML potoku.

Usługa Azure Pipelines oferuje dwa typy kroków:

  • Skrypty. Krok skryptu umożliwia uruchomienie pojedynczego polecenia lub sekwencji poleceń w powłoce poleceń Bash, PowerShell lub windows.
  • Zadania. Zadanie to wygodny sposób uzyskiwania dostępu do wielu różnych możliwości bez pisania instrukcji skryptu. Na przykład wbudowane zadanie może uruchamiać interfejs wiersza polecenia platformy Azure i polecenia cmdlet programu Azure PowerShell w celu przetestowania kodu lub przekazania plików na serwer FTP. Każdy może napisać zadanie i udostępnić je innym użytkownikom, publikując zadanie w witrynie Visual Studio Marketplace. Dostępny jest duży zestaw zadań komercyjnych i open source.

Niektórzy wolą używać instrukcji skryptu zamiast wbudowanych zadań, ponieważ oferują większą kontrolę nad wykonywanymi zadaniami. Inne osoby wolą używać zadań, aby nie musieli pisać skryptów i zarządzać nimi. W tym module używamy kombinacji obu podejść.

Stanowiska

W usłudze Azure Pipelines zadanie reprezentuje uporządkowany zestaw kroków. Zawsze masz co najmniej jedno zadanie w potoku, a podczas tworzenia złożonych wdrożeń często występuje więcej niż jedno zadanie.

Uwaga

Każde zadanie można ustawić tak, aby było uruchamiane w innej puli agentów. Uruchamianie zadań w różnych pulach agentów jest przydatne podczas kompilowania i wdrażania rozwiązań, które muszą używać różnych systemów operacyjnych w różnych częściach potoku zadania.

Załóżmy na przykład, że tworzysz aplikację dla systemu iOS i usługę zaplecza aplikacji. Może istnieć jedno zadanie uruchamiane w puli agentów systemu macOS w celu skompilowania aplikacji systemu iOS i innego zadania uruchomionego w puli agentów systemu Ubuntu lub Windows w celu skompilowania zaplecza. Możesz nawet poinformować potok, aby uruchamiał dwa zadania jednocześnie, co przyspiesza wykonywanie potoku.

W tym module deklarujemy pulę agentów w katalogu głównym plików definicji potoku, więc wszystkie zadania w potokach używają tej samej puli agentów.

Diagram that shows a pipeline with two steps, both within one job.

Uwaga

Możesz również użyć etapów w usłudze Azure Pipelines, aby podzielić potok na fazy logiczne i dodać ręczne kontrole w różnych punktach wykonywania potoku. Więcej informacji na temat etapów znajdziesz w przyszłych modułach.

Przykład podstawowego potoku

Teraz, gdy znasz podstawowe pojęcia w usłudze Azure Pipelines, przyjrzyjmy się prostej definicji potoku w języku YAML:

trigger: none

pool:
  vmImage: ubuntu-latest

jobs:
- job:
  steps:
  - script: echo Hello, world!
    displayName: 'Run a one-line script'
  
  - script: |
      echo We'll add more steps soon.
      echo For example, we'll add our Bicep deployment step.
    displayName: 'Run a multi-line script'

Przyjrzyjmy się szczegółowo każdej części pliku:

  • trigger informuje potok o tym, kiedy należy wykonać. W takim przypadku informuje usługę Azure Pipelines, trigger: none że chcesz ręcznie wyzwolić potok.
  • pool Instruuje potok, który pula agentów ma być używana podczas uruchamiania kroków potoku. W tym przykładzie potok jest uruchamiany na agencie z systemem operacyjnym Ubuntu, który pochodzi z puli agentów hostowanych przez firmę Microsoft.
  • jobs grupuje wszystkie zadania w potoku.
  • job informuje potok o tym, że masz jedno zadanie.

    Napiwek

    Jeśli masz tylko jedno zadanie w potoku, możesz pominąć słowa jobs kluczowe i job . Dołączyliśmy job tutaj, aby wyjaśnić, jak koncepcje współpracują ze sobą w potoku.

  • steps Wyświetla sekwencję akcji do uruchomienia w zadaniu. Przykładowy kod YAML zawiera dwa kroki. Oba kroki uruchamiają prosty skrypt, aby powtórzyć tekst. Każdy krok ma displayName wartość, która jest nazwą zrozumiałą dla danego kroku. Podczas wyświetlania dzienników potoku zobaczysz nazwę wyświetlaną. Aby utworzyć krok skryptu wielowierszowego, użyj znaku potoku (|), jak pokazano w przykładzie. Po wykonaniu kroku zobaczysz dane wyjściowe w dzienniku potoku.

Ważne

W plikach YAML wcięcie jest ważne. Przyjrzyj się przykładowi YAML. Niektóre wiersze w języku YAML są wcięcione przez dwa lub cztery spacje. Liczba używanych miejsc jest ważna. Jeśli plik nie zostanie poprawnie wcięcie, usługa Azure Pipelines nie będzie mogła go zinterpretować. Program Visual Studio Code ułatwia znajdowanie i naprawianie błędów w wcięcie pliku YAML.