Agenci usługi Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Aby skompilować kod lub wdrożyć oprogramowanie przy użyciu usługi Azure Pipelines, potrzebujesz co najmniej jednego agenta. W miarę dodawania większej liczby kodu i osób będziesz potrzebować więcej.

Po uruchomieniu potoku system rozpoczyna co najmniej jedno zadania. Agent to infrastruktura obliczeniowa z zainstalowanym oprogramowaniem agenta, które uruchamia jedno zadanie naraz.

Usługa Azure Pipelines udostępnia kilka różnych typów agentów.

Typ agenta opis Dostępność
Agenci hostowani przez firmę Microsoft Agenci hostowani i zarządzani przez firmę Microsoft Azure DevOps Services
Właśni agenci Agenci konfigurowani i zarządzani hostowani na maszynach wirtualnych Azure DevOps Services, Azure DevOps Server
Agenci zestawu skalowania maszyn wirtualnych platformy Azure Forma własnych agentów korzystających z zestawów skalowania maszyn wirtualnych platformy Azure, które można skalować automatycznie w celu spełnienia wymagań Azure DevOps Services

Zadania można uruchamiać bezpośrednio na maszynie hosta agenta lub w kontenerze.

Agenci hostowani przez firmę Microsoft

Jeśli potoki znajdują się w usłudze Azure Pipelines, masz wygodną opcję uruchamiania zadań przy użyciu agenta hostowanego przez firmę Microsoft. W przypadku agentów hostowanych przez firmę Microsoft konserwacja i uaktualnienia są dla Ciebie obsługiwane. Zawsze uzyskujesz najnowszą wersję obrazu maszyny wirtualnej określonego w potoku. Za każdym razem, gdy uruchamiasz potok, otrzymujesz nową maszynę wirtualną dla każdego zadania w potoku. Maszyna wirtualna zostanie odrzucona po jednym zadaniu (co oznacza, że każda zmiana, którą zadanie wykonuje w systemie plików maszyny wirtualnej, na przykład wyewidencjonowanie kodu, będzie niedostępna dla następnego zadania). Agenci hostowani przez firmę Microsoft mogą uruchamiać zadania bezpośrednio na maszynie wirtualnej lub w kontenerze.

Usługa Azure Pipelines udostępnia wstępnie zdefiniowaną pulę agentów o nazwie Azure Pipelines z agentami hostowanymi przez firmę Microsoft.

Dla wielu zespołów jest to najprostszy sposób uruchamiania zadań. Możesz spróbować go najpierw i sprawdzić, czy działa w przypadku kompilacji lub wdrożenia. Jeśli nie, możesz użyć agentów zestawu skalowania lub własnego agenta.

Napiwek

Możesz wypróbować agenta hostowanego przez firmę Microsoft bez opłat.

Dowiedz się więcej o agentach hostowanych przez firmę Microsoft.

Właśni agenci

Agent skonfigurowany samodzielnie i zarządzany do uruchamiania zadań jest własnym agentem. Własnych agentów można używać w usługach Azure Pipelines i Azure DevOps Server (wcześniej Team Foundation Server, TFS). Właśni agenci zapewniają większą kontrolę nad instalowaniem oprogramowania potrzebnego do kompilacji i wdrożeń. Ponadto pamięci podręczne na poziomie maszyny i konfiguracja są utrwalane od uruchomienia do uruchomienia, co może zwiększyć szybkość.

Uwaga

Mimo że na maszynę można zainstalować wielu agentów, zdecydowanie zalecamy zainstalowanie tylko jednego agenta na maszynę. Zainstalowanie co najmniej dwóch agentów może niekorzystnie wpłynąć na wydajność i wynik potoków.

Napiwek

Przed zainstalowaniem własnego agenta warto sprawdzić, czy pula agentów hostowanych przez firmę Microsoft będzie dla Ciebie działać. W wielu przypadkach jest to najprostszy sposób, aby przejść. Spróbuj.

Agenta można zainstalować na maszynach z systemem Linux, macOS i Windows, a także w kontenerze Docker. Aby uzyskać więcej informacji na temat instalowania własnego agenta, zobacz:

Uwaga

W systemie macOS należy wyczyścić specjalny atrybut w archiwum pobierania, aby zapobiec wyświetlaniu ochrony programu Gatekeeper dla każdego zestawu w pliku tar po ./config.sh uruchomieniu. Następujące polecenie czyści atrybut rozszerzony w pliku:

xattr -c vsts-agent-osx-x64-V.v.v.tar.gz  ## replace V.v.v with the version in the filename downloaded.

# then unpack the gzip tar file normally:

tar xvfz vsts-agent-osx-x64-V.v.v.tar.gz

Po zainstalowaniu agenta na maszynie można zainstalować dowolne inne oprogramowanie na tym komputerze zgodnie z wymaganiami zadań.

Uwaga

Agenci są powszechnie zgodni z poprzednimi wersjami. Każda wersja agenta powinna być zgodna z dowolną wersją usługi Azure DevOps, o ile usługa Azure DevOps nie wymaga wyższej wersji agenta.

Obsługujemy tylko najnowszą wersję agenta, ponieważ jest to jedyna wersja gwarantowana, że wszystkie aktualne poprawki i poprawki błędów.

Wersje modułu uruchamiającego węzły

Agent jest dostarczany z kilkoma wersjami bibliotek NodeJS do obsługi zadań docelowych korzystających z różnych programów obsługi węzłów.

Wszystkie oficjalne zadania usługi Azure DevOps używają węzła 10 jako uniwersalnego programu obsługi, jednak klienci mogą nadal używać zadań niestandardowych korzystających z nieaktualnej biblioteki środowiska Node 6. Aby zapewnić zgodność z poprzednimi wersjami z węzłem, który osiągnął obecnie koniec życia, udostępniamy następujące metody samoobsługi, aby ręcznie zainstalować wyznaczony moduł uruchamiający węzły.

  • Ręcznie zainstaluj moduł uruchamiający platformę Node 6. Aby uzyskać więcej informacji na temat ręcznego instalowania modułu uruchamiającego węzeł Node 6, zobacz Obsługa środowiska Node 6, aby uzyskać więcej szczegółów.

  • Użyj zadania NodeTaskRunnerInstaller@0 w potokach, które wymagają nieaktualnej biblioteki węzła 6.

  • Zainstaluj pakiet agenta zawierający węzeł Node 6.

    Usługa Azure Pipelines udostępnia dwie wersje pakietów agentów.

    • Pakiety vsts-agent-* obsługują węzeł Node 6.
    • pakiety pipelines-agent-* nie obsługują środowiska Node 6. Ta wersja pakietu stanie się domyślnym pakietem agenta w przyszłości.

    Jeśli wiesz, że nie używasz żadnych zadań zależnych węzła 6 i nie chcesz, aby węzeł Node 6 był zainstalowany na maszynie agenta, możesz zainstalować agenta z sekcji Pobieranie alternatywnego agenta z witryny https://github.com/microsoft/azure-pipelines-agent/releases.

Agenci zestawu skalowania maszyn wirtualnych platformy Azure

Agenci zestawu skalowania maszyn wirtualnych platformy Azure to forma własnych agentów, które mogą być skalowane automatycznie w celu spełnienia wymagań. Ta elastyczność zmniejsza potrzebę korzystania z dedykowanych agentów przez cały czas. Inaczej niż w przypadku agentów hostowanych przez firmę Microsoft możesz elastycznie dostosowywać rozmiar i obraz maszyn, na których działają agenci.

Należy określić zestaw skalowania maszyn wirtualnych, wielu agentów do utrzymania w stanie wstrzymania, maksymalną liczbę maszyn wirtualnych w zestawie skalowania, a usługa Azure Pipelines zarządza skalowaniem agentów.

Aby uzyskać więcej informacji, zobacz Agenci zestawu skalowania maszyn wirtualnych platformy Azure.

Zadania równoległe

Zadania równoległe reprezentują liczbę zadań, które można uruchomić w tym samym czasie w organizacji. Jeśli organizacja ma jedno zadanie równoległe, możesz uruchomić pojedyncze zadanie w danej organizacji, przy czym wszystkie dodatkowe współbieżne zadania są kolejkowane do momentu ukończenia pierwszego zadania. Aby uruchomić dwa zadania w tym samym czasie, potrzebne są dwa zadania równoległe. W usłudze Azure Pipelines można uruchamiać zadania równoległe w infrastrukturze hostowanej przez firmę Microsoft lub we własnej infrastrukturze (self-hosted).

Firma Microsoft domyślnie udostępnia bezpłatną warstwę usługi w każdej organizacji, która obejmuje co najmniej jedno zadanie równoległe. W zależności od liczby współbieżnych potoków, które należy uruchomić, może być konieczne użycie większej liczby zadań równoległych do korzystania z wielu agentów hostowanych przez firmę Microsoft lub własnych w tym samym czasie. Aby uzyskać więcej informacji na temat zadań równoległych i różnych warstw bezpłatnych usługi, zobacz Parallel jobs in Azure Pipelines (Zadania równoległe w usłudze Azure Pipelines).

Może być konieczne użycie większej liczby zadań równoległych w celu jednoczesnego używania wielu agentów:

Ważne

Począwszy od usługi Azure DevOps Server 2019, nie trzeba płacić za zadania współbieżne hostowane samodzielnie w wersjach. Liczba posiadanych agentów jest ograniczona tylko przez liczbę posiadanych agentów.

Możliwości

Każdy własny agent ma zestaw możliwości, które wskazują, co może zrobić. Możliwości to pary nazwa-wartość, które są automatycznie wykrywane przez oprogramowanie agenta, w takim przypadku są nazywane możliwościami systemowymi lub zdefiniowanymi przez Użytkownika, w takim przypadku są nazywane możliwościami użytkownika.

Oprogramowanie agenta automatycznie określa różne możliwości systemu, takie jak nazwa maszyny, typ systemu operacyjnego i wersje określonego oprogramowania zainstalowanego na maszynie. Ponadto zmienne środowiskowe zdefiniowane na maszynie są automatycznie wyświetlane na liście możliwości systemowych.

Uwaga

Przechowywanie zmiennych środowiskowych jako możliwości oznacza, że po uruchomieniu agenta przechowywane wartości możliwości są używane do ustawiania zmiennych środowiskowych. Ponadto wszelkie zmiany zmiennych środowiskowych, które są wprowadzane podczas działania agenta, nie będą pobierane i używane przez żadne zadanie. Jeśli masz poufne zmienne środowiskowe, które się zmieniają i nie chcesz, aby były przechowywane jako możliwości, możesz je zignorować, ustawiając VSO_AGENT_IGNORE zmienną środowiskową z rozdzielaną przecinkami listę zmiennych do ignorowania. Na przykład jest zmienną krytyczną, PATH którą można zignorować, jeśli instalujesz oprogramowanie.

Podczas tworzenia potoku określasz określone wymagania agenta. System wysyła zadanie tylko do agentów, którzy mają możliwości zgodne z wymaganiami określonymi w potoku. W związku z tym możliwości agenta umożliwiają kierowanie zadań do określonych agentów.

Uwaga

Wymagania i możliwości są przeznaczone do użytku z własnymi agentami, dzięki czemu zadania mogą być dopasowane do agenta spełniającego wymagania zadania. W przypadku korzystania z agentów hostowanych przez firmę Microsoft wybierasz obraz agenta, który spełnia wymagania zadania, więc chociaż istnieje możliwość dodania możliwości do agenta hostowanego przez firmę Microsoft, nie musisz używać funkcji z agentami hostowanymi przez firmę Microsoft.

Konfigurowanie żądań

Aby dodać żądanie do potoku kompilacji YAML, dodaj demands: wiersz do pool sekcji.

pool:
  name: Default
  demands: SpecialSoftware # exists check for SpecialSoftware

Możesz sprawdzić istnienie możliwości lub porównać wartość możliwości. Aby uzyskać więcej informacji, zobacz schemat YAML — wymagania.

Konfigurowanie możliwości agenta

Możesz wyświetlić szczegóły agenta, w tym jego możliwości wersji i systemu oraz zarządzać jego możliwościami użytkownika, przechodząc do pul agentów i wybierając kartę Możliwości odpowiedniego agenta.

  1. W przeglądarce internetowej przejdź do obszaru Pule agentów:

    1. Zaloguj się do organizacji (https://dev.azure.com/{yourorganization}).

    2. Wybierz pozycję Azure DevOps, Ustawienia organizacji.

      Wybierz pozycję Ustawienia organizacji.

    3. Wybierz pozycję Pule agentów.

      Wybierz kartę Pule agentów.

    1. Zaloguj się do kolekcji projektów (http://your-server/DefaultCollection).

    2. Wybierz pozycję Azure DevOps, Ustawienia kolekcji.

      Wybierz pozycję Ustawienia kolekcji.

    3. Wybierz pozycję Pule agentów.

      Wybierz pozycję Pule agentów.

    1. Wybierz pozycję Azure DevOps, Ustawienia kolekcji.

      Ustawienia kolekcji, 2019.

    2. Wybierz pozycję Pule agentów.

      Wybierz pozycję Pule agentów, 2019.

  2. Przejdź do karty możliwości:

    1. Na karcie Pule agentów wybierz żądaną pulę agentów.

      W obszarze Pule agentów wybierz żądaną pulę agentów.

    2. Wybierz pozycję Agenci i wybierz żądanego agenta.

      Wybierz pozycję Agenci i wybierz agenta.

    3. Wybierz kartę Możliwości .

      Wybierz kartę Możliwości.

      Uwaga

      Agenci hostowani przez firmę Microsoft nie wyświetlają możliwości systemowych. Aby uzyskać listę oprogramowania zainstalowanego na agentach hostowanych przez firmę Microsoft, zobacz Używanie agenta hostowanego przez firmę Microsoft.

    1. Na karcie Pule agentów wybierz żądaną pulę.

      Wybierz żądaną pulę.

    2. Wybierz pozycję Agenci i wybierz żądanego agenta.

      Wybierz pozycję Agenci i wybierz żądanego agenta.

    3. Wybierz kartę Możliwości .

      Karta Możliwości agenta.

    1. Na karcie Pule agentów wybierz żądaną pulę.

      Wybierz odpowiednią kartę 2019.

    2. Wybierz pozycję Agenci i wybierz żądanego agenta.

      Wybierz żądanego agenta, 2019.

    3. Wybierz kartę Możliwości .

      Wybierz kartę Możliwości 2019.

  3. Aby zarejestrować nową funkcję za pomocą agenta, wybierz pozycję Dodaj nową funkcję.

Napiwek

Po zainstalowaniu nowego oprogramowania na własnym agencie należy ponownie uruchomić agenta, aby wyświetlić nową funkcję. Aby uzyskać więcej informacji, zobacz Ponowne uruchamianie agenta systemu Windows, Ponowne uruchamianie agenta systemu Linux i Ponowne uruchamianie agenta komputera Mac.

Komunikacja

Komunikacja za pomocą usługi Azure Pipelines

Komunikacja z usługą Azure DevOps Server

Agent komunikuje się z usługą Azure Pipelines lub z programem Azure DevOps Server, aby określić, które zadanie musi uruchomić, oraz zgłosić dzienniki i stan zadania. Komunikację zawsze inicjuje agent. Wszystkie komunikaty od agenta do usług Azure Pipelines lub Azure DevOps Server są przesyłane za pośrednictwem protokołu HTTP lub HTTPS, w zależności od konfiguracji agenta. Ten model ściągania umożliwia skonfigurowanie agenta w różnych topologiach, jak pokazano poniżej.

Topologie agentów w instalacjach lokalnych.

Topologie agentów w usługach Azure DevOps Services.

Oto typowy sposób komunikacji między agentem a usługami Azure Pipelines lub Azure DevOps Server.

  1. Użytkownik rejestruje agenta w usłudze Azure Pipelines lub usłudze Azure DevOps Server, dodając go do puli agentów. Aby zarejestrować agenta w tej puli agentów, musisz być administratorem puli agentów. Tożsamość administratora puli agentów jest wymagana tylko w momencie rejestracji i nie jest przechowywana na agencie ani używana w żadnej dalszej komunikacji między agentem a usługą Azure Pipelines lub Azure DevOps Server. Po zakończeniu rejestracji agent pobiera token OAuth odbiornika i używa go do nasłuchiwania kolejki zadań.

  2. Agent nasłuchuje, czy nowe żądanie zadania zostało opublikowane w kolejce zadań w usłudze Azure Pipelines / Azure DevOps Server, przy użyciu długiego sondowania HTTP. Gdy zadanie jest dostępne, agent pobiera zadanie, a także token OAuth specyficzny dla zadania. Ten token jest generowany przez usługę Azure Pipelines/Azure DevOps Server dla tożsamości o określonym zakresie w potoku. Ten krótkotrwały token jest używany przez agenta do uzyskiwania dostępu do zasobów (na przykład kodu źródłowego) lub modyfikowania zasobów (na przykład przekazywania wyników testów) w usłudze Azure Pipelines lub Azure DevOps Server w ramach zadania.

  3. Po zakończeniu zadania agent odrzuca token OAuth związany z zadaniem i wraca do sprawdzania, czy istnieje nowe żądanie zadania, przy użyciu tokenu OAuth odbiornika.

Komunikaty wymieniane między agentem a usługą Azure Pipelines / Azure DevOps Server są zabezpieczone przy użyciu szyfrowania asymetrycznego. Każdy agent ma parę kluczy publiczny-prywatny. Klucz publiczny jest wymieniany z serwerem podczas rejestracji. Serwer używa klucza publicznego do szyfrowania ładunku zadania przed wysłaniem go do agenta. Agent odszyfrowuje zawartość zadania przy użyciu klucza prywatnego. W ten sposób wpisy tajne przechowywane w potokach lub grupach zmiennych są zabezpieczone podczas wymiany z agentem.

Uwaga

Agent zapewnia obsługę danych wyjściowych kodowania klienta UTF-8. Jeśli jednak system ma inne kodowanie niż UTF-8, mogą wystąpić problemy z danymi wyjściowymi dzienników. Na przykład dzienniki mogą zawierać znaki, które nie są rozpoznawane przez kodowanie systemu, dzięki czemu mogą one być wyświetlane jako niezwiązane lub brakujące symbole.

Komunikacja do wdrożenia na serwerach docelowych

Gdy używasz agenta do wdrażania artefaktów na zestawie serwerów, musi on mieć łączność w prostej linii z tymi serwerami. Pule agentów hostowanych przez firmę Microsoft domyślnie mają łączność z witrynami internetowymi platformy Azure i uruchomionymi na niej serwerami.

Uwaga

Jeśli zasoby platformy Azure są uruchomione w usłudze Azure Virtual Network, możesz uzyskać zakresy adresów IP agenta, w których są wdrażani agenci hostowani przez firmę Microsoft, aby można było skonfigurować reguły zapory dla sieci wirtualnej platformy Azure, aby zezwolić na dostęp przez agenta.

Jeśli środowiska lokalne nie mają łączności z pulą agentów hostowanych przez firmę Microsoft (zwykle jest to spowodowane pośrednimi zaporami), należy ręcznie skonfigurować własnego agenta na komputerach lokalnych. Agenci muszą mieć łączność z docelowymi środowiskami lokalnymi i dostęp do Internetu w celu nawiązania połączenia z usługą Azure Pipelines lub Team Foundation Server, jak pokazano w poniższym schemacie.

Łączność agenta dla środowisk lokalnych

Uwierzytelnianie

Aby zarejestrować agenta, musisz być członkiem roli administratora w puli agentów. Tożsamość administratora puli agentów jest wymagana tylko w momencie rejestracji i nie jest przechowywana na agencie ani używana w żadnej dalszej komunikacji między agentem a usługą Azure Pipelines lub Azure DevOps Server. Ponadto musisz być administratorem lokalnym na serwerze, aby skonfigurować agenta.

Podczas rejestrowania agenta wybierz spośród następujących typów uwierzytelniania, a instalator agenta monituje o podanie dodatkowych informacji wymaganych dla każdego typu uwierzytelniania. Aby uzyskać więcej informacji, zobacz Opcje uwierzytelniania własnego agenta.

  • Osobisty token dostępu
  • Alternatywne Połączenie do serwera Usługi Azure DevOps lub serwera TFS przy użyciu uwierzytelniania podstawowego. Po wybraniu pozycji Alternatywne zostanie wyświetlony monit o podanie poświadczeń.

Agenci systemu Windows mają następujące dwie dodatkowe opcje uwierzytelniania na serwerze Azure DevOps Server.

  • Negocjuj Połączenie do usługi Azure DevOps Server jako użytkownik inny niż zalogowany użytkownik za pośrednictwem schematu uwierzytelniania systemu Windows, takiego jak NTLM lub Kerberos. Po wybraniu pozycji Negocjuj zostanie wyświetlony monit o podanie poświadczeń.
  • Zintegrowane (domyślne) Połączenie agenta systemu Windows do usługi Azure DevOps Server przy użyciu poświadczeń zalogowanego użytkownika za pośrednictwem schematu uwierzytelniania systemu Windows, takiego jak NTLM lub Kerberos. Po wybraniu tej metody nie zostanie wyświetlony monit o podanie poświadczeń.

Ważne

Serwer musi być skonfigurowany tak, aby obsługiwał metodę uwierzytelniania w celu używania alternatywnego, negocjowanego lub zintegrowanego uwierzytelniania.

Metoda uwierzytelniania używana do rejestrowania agenta jest używana tylko podczas rejestracji agenta. Aby dowiedzieć się więcej na temat sposobu komunikowania się agentów z usługą Azure Pipelines po rejestracji, zobacz Komunikacja z usługą Azure Pipelines lub azure DevOps Server.

Proces interaktywny a usługa

Własnego agenta możesz uruchomić jako usługę lub proces interaktywny. Po skonfigurowaniu agenta należy go najpierw wypróbować w trybie interaktywnym, aby upewnić się, że działa. Następnie w celu użycia agenta w środowisku produkcyjnym należy uruchomić go w jednym z poniższych trybów, aby mieć pewność, że działa on stabilnie i nieprzerwanie. Te tryby zapewniają też automatyczne włączenie agenta po ponownym uruchomieniu maszyny.

  1. Jako usługa. Możesz użyć menedżera usług systemu operacyjnego do zarządzania cyklem życia agenta. Ponadto w przypadku uruchamiania agenta jako usługi jego automatyczne uaktualnianie przebiega lepiej.

  2. Jako proces interaktywny z włączonym automatycznym logowaniem. W niektórych przypadkach — na przykład do uruchamiania testów interfejsu użytkownika — może być konieczne interaktywne uruchomienie agenta na potrzeby środowiska produkcyjnego. Po skonfigurowaniu agenta do uruchamiania w tym trybie wygaszacz ekranu jest również wyłączony. Niektóre zasady domeny mogą uniemożliwić włączenie automatycznego logowania lub wyłączenie wygaszacza ekranu. W takich przypadkach może być konieczne uzyskanie wykluczenia z zasad domeny lub uruchomienie agenta na komputerze grupy roboczej, na którym zasady domeny nie mają zastosowania.

    Uwaga

    Występują zagrożenia bezpieczeństwa podczas włączania automatycznego logowania lub wyłączania wygaszacza ekranu, ponieważ umożliwiasz innym użytkownikom przejście do komputera i użycie konta, które automatycznie loguje się. W przypadku skonfigurowania agenta do działania w ten sposób należy upewnić się, że komputer jest fizycznie chroniony; na przykład znajduje się w bezpiecznym obiekcie. Jeśli używasz pulpitu zdalnego do uzyskiwania dostępu do komputera, na którym działa agent z automatycznym logowaniem, po prostu zamknięcie pulpitu zdalnego powoduje zablokowanie komputera, a wszystkie testy interfejsu użytkownika uruchamiane na tym agencie mogą zakończyć się niepowodzeniem. Aby tego uniknąć, użyj polecenia tscon , aby odłączyć się od pulpitu zdalnego. Na przykład:

    %windir%\System32\tscon.exe 1 /dest:console

Konto agenta

Niezależnie od tego, czy uruchamiasz agenta jako usługę, czy interaktywnie, możesz wybrać konto komputera używane do uruchamiania agenta. (Należy pamiętać, że różni się to od poświadczeń używanych podczas rejestrowania agenta w usłudze Azure Pipelines lub azure DevOps Server). Wybór konta agenta zależy wyłącznie od potrzeb zadań uruchomionych w zadaniach kompilacji i wdrażania.

Aby na przykład uruchamiać zadania korzystające z uwierzytelniania systemu Windows w celu uzyskania dostępu do usługi zewnętrznej, należy uruchomić agenta przy użyciu konta, które ma dostęp do tej usługi. Jeśli jednak uruchamiasz testy interfejsu użytkownika, takie jak Selenium lub Kodowane testy interfejsu użytkownika, które wymagają przeglądarki, przeglądarka zostanie uruchomiona w kontekście konta agenta.

W systemie Windows należy rozważyć użycie konta usługi, takiego jak usługa sieciowa lub usługa lokalna. Te konta mają ograniczone uprawnienia, a ich hasła nie wygasają, co oznacza, że agent wymaga mniejszego zarządzania w czasie.

Wersje i uaktualnienia agenta

Aktualizujemy oprogramowanie agenta co kilka tygodni w usłudze Azure Pipelines. Wskazujemy wersję agenta w formacie {major}.{minor}. Jeśli na przykład wersja agenta to , wersja główna to 2.12, a wersja pomocnicza to 1.

Agenci hostowani przez firmę Microsoft są zawsze aktualni. Jeśli nowsza wersja agenta różni się tylko w wersji pomocniczej, agenci self-hosted mogą być zwykle aktualizowane automatycznie (skonfiguruj to ustawienie w pulach agentów, wybierz agenta, Ustawienia — ustawienie domyślne jest włączone) przez usługę Azure Pipelines. Żądanie uaktualnienia jest wymagane, gdy funkcja platformy lub jedno z zadań używanych w potoku wymaga nowszej wersji agenta.

Jeśli uruchamiasz agenta hostowanego samodzielnie lub jest dostępna nowsza wersja główna agenta, może być konieczne ręczne uaktualnienie agentów. Można to łatwo zrobić na karcie Pule agentów w organizacji. Potoki nie będą uruchamiane, dopóki nie będą mogły być przeznaczone dla zgodnego agenta.

Aby zaktualizować własnych agentów

  1. Przejdź do obszaru Project settings (Ustawienia projektu), Agent pools (Pule agentów).

    Ustawienia projektu, pule agentów

  2. Wybierz pulę agentów i wybierz pozycję Aktualizuj wszystkich agentów.

    Aktualizowanie wszystkich agentów

    Agentów można również aktualizować indywidualnie, wybierając pozycję Aktualizuj agentaz menu ... .

    Aktualizowanie agenta

  3. Wybierz pozycję Aktualizuj, aby potwierdzić aktualizację.

    Aktualizowanie potwierdzenia wszystkich agentów

  4. Żądanie aktualizacji jest kolejkowane dla każdego agenta w puli i jest uruchamiane po zakończeniu wszystkich aktualnie uruchomionych zadań. Uaktualnienie zwykle trwa tylko kilka chwil — wystarczająco długo, aby pobrać najnowszą wersję oprogramowania agenta (około 200 MB), rozpakuj go i uruchom ponownie agenta przy użyciu nowej wersji. Stan agentów można monitorować na karcie Agenci .

Aktualizujemy oprogramowanie agenta przy użyciu każdej aktualizacji w usłudze Azure DevOps Server. Wskazujemy wersję agenta w formacie {major}.{minor}. Jeśli na przykład wersja agenta to , wersja główna to 2.12, a wersja pomocnicza to 1.

Gdy serwer Usługi Azure DevOps Server ma nowszą wersję agenta, a nowszy agent różni się tylko w wersji pomocniczej , zwykle może zostać automatycznie uaktualniony. Żądanie uaktualnienia jest wymagane, gdy funkcja platformy lub jedno z zadań używanych w potoku wymaga nowszej wersji agenta. Począwszy od usługi Azure DevOps Server 2019, nie musisz czekać na nową wersję serwera. Możesz przekazać nową wersję agenta do warstwy aplikacji, a ta wersja będzie oferowana jako uaktualnienie.

Jeśli agent jest uruchamiany interaktywnie lub jest dostępna nowsza wersja główna agenta, może być konieczne ręczne uaktualnienie agentów. Można to łatwo zrobić na karcie Pule agentów w kolekcji projektu. Potoki nie będą uruchamiane, dopóki nie będą mogły być przeznaczone dla zgodnego agenta.

Możesz wyświetlić wersję agenta, przechodząc do pul agentów i wybierając kartę Możliwości dla żądanego agenta, zgodnie z opisem w temacie Konfigurowanie możliwości agenta.

Aby wyzwolić aktualizację agenta programowo, można użyć interfejsu API aktualizacji agenta zgodnie z opisem w sekcji Jak można programowo wyzwalać aktualizacje agenta dla określonej puli agentów?.

Uwaga

W przypadku serwerów bez dostępu do Internetu ręcznie skopiuj plik zip agenta do następującego folderu, aby użyć go jako pliku lokalnego. Utwórz folder Agenci, jeśli nie jest obecny.

  • Windows: %ProgramData%\Microsoft\Azure DevOps\Agents
  • Linux: usr/share/Microsoft/Azure DevOps/Agents
  • Macos: usr/share/Microsoft/Azure DevOps/Agents

Utwórz folder Agenci, jeśli nie jest obecny.

Często zadawane pytania

Jak mogę upewnić się, że mam najnowszą wersję agenta w wersji 2?

  1. Przejdź do karty Pule agentów :

    1. Zaloguj się do organizacji (https://dev.azure.com/{yourorganization}).

    2. Wybierz pozycję Azure DevOps, Ustawienia organizacji.

      Wybierz pozycję Ustawienia organizacji.

    3. Wybierz pozycję Pule agentów.

      Wybierz kartę Pule agentów.

    1. Zaloguj się do kolekcji projektów (http://your-server/DefaultCollection).

    2. Wybierz pozycję Azure DevOps, Ustawienia kolekcji.

      Wybierz pozycję Ustawienia kolekcji.

    3. Wybierz pozycję Pule agentów.

      Wybierz pozycję Pule agentów.

    1. Wybierz pozycję Azure DevOps, Ustawienia kolekcji.

      Ustawienia kolekcji, 2019.

    2. Wybierz pozycję Pule agentów.

      Wybierz pozycję Pule agentów, 2019.

  2. Kliknij pulę zawierającą agenta.

  3. Upewnij się, że agent jest włączony.

  4. Przejdź do karty możliwości:

    1. Na karcie Pule agentów wybierz żądaną pulę agentów.

      W obszarze Pule agentów wybierz żądaną pulę agentów.

    2. Wybierz pozycję Agenci i wybierz żądanego agenta.

      Wybierz pozycję Agenci i wybierz agenta.

    3. Wybierz kartę Możliwości .

      Wybierz kartę Możliwości.

      Uwaga

      Agenci hostowani przez firmę Microsoft nie wyświetlają możliwości systemowych. Aby uzyskać listę oprogramowania zainstalowanego na agentach hostowanych przez firmę Microsoft, zobacz Używanie agenta hostowanego przez firmę Microsoft.

    1. Na karcie Pule agentów wybierz żądaną pulę.

      Wybierz żądaną pulę.

    2. Wybierz pozycję Agenci i wybierz żądanego agenta.

      Wybierz pozycję Agenci i wybierz żądanego agenta.

    3. Wybierz kartę Możliwości .

      Karta Możliwości agenta.

    1. Na karcie Pule agentów wybierz żądaną pulę.

      Wybierz odpowiednią kartę 2019.

    2. Wybierz pozycję Agenci i wybierz żądanego agenta.

      Wybierz żądanego agenta, 2019.

    3. Wybierz kartę Możliwości .

      Wybierz kartę Możliwości 2019.

  5. Agent.Version Poszukaj możliwości. Możesz sprawdzić tę wartość względem najnowszej opublikowanej wersji agenta. Zobacz Agent usługi Azure Pipelines i sprawdź stronę, aby uzyskać najwyższy numer wersji na liście.

  6. Każdy agent automatycznie aktualizuje się, gdy uruchamia zadanie wymagające nowszej wersji agenta. Jeśli chcesz ręcznie zaktualizować niektórych agentów, kliknij prawym przyciskiem myszy pulę i wybierz polecenie Aktualizuj wszystkich agentów.

Czy mogę zaktualizować moich agentów w wersji 2, którzy są częścią puli usługi Azure DevOps Server?

Tak. Począwszy od usługi Azure DevOps Server 2019, można skonfigurować serwer tak, aby szukał plików pakietu agenta na dysku lokalnym. Ta konfiguracja zastąpi domyślną wersję, która została udostępniona z serwerem w momencie jego wydania. Ten scenariusz ma również zastosowanie, gdy serwer nie ma dostępu do Internetu.

  1. Z komputera z dostępem do Internetu pobierz najnowszą wersję plików pakietu agenta (w formularzu .zip lub .tar.gz) ze strony Wydania usługi GitHub agenta usługi Azure Pipelines.

  2. Przenieś pobrane pliki pakietu do każdej warstwy aplikacji serwera Usługi Azure DevOps przy użyciu wybranej metody (takiej jak dysk USB, transfer sieciowy itd.). Umieść pliki agenta w folderze %ProgramData%\Microsoft\Azure DevOps\Agents . Utwórz folder Agenci, jeśli nie jest obecny.

  3. Wszystko gotowe! Serwer Usługi Azure DevOps będzie teraz używać plików lokalnych za każdym razem, gdy agenci są aktualizowani. Każdy agent automatycznie aktualizuje się, gdy uruchamia zadanie wymagające nowszej wersji agenta. Jeśli jednak chcesz ręcznie zaktualizować niektórych agentów, kliknij prawym przyciskiem myszy pulę, a następnie wybierz polecenie Aktualizuj wszystkich agentów.

Czy agenci hostowani samodzielnie mają jakiekolwiek korzyści w zakresie wydajności w stosunku do agentów hostowanych przez firmę Microsoft?

W wielu przypadkach tak. Szczególnie:

  • Jeśli używasz własnego agenta, możesz uruchamiać kompilacje przyrostowe. Jeśli na przykład zdefiniujesz potok, który nie czyści repozytorium i nie wykonuje czystej kompilacji, kompilacje będą zwykle działać szybciej. W przypadku korzystania z agenta hostowanego przez firmę Microsoft nie uzyskujesz tych korzyści (chyba że używasz funkcji takich jak buforowanie), ponieważ agent zostanie zniszczony po zakończeniu potoku kompilacji lub wydania.

  • Uruchomienie kompilacji przez agenta hostowanego przez firmę Microsoft może potrwać dłużej. Chociaż zadanie przydzielone do agenta hostowanego przez firmę Microsoft często trwa zaledwie kilka sekund, czasami może upłynąć kilka minut, aby agent został przydzielony w zależności od obciążenia systemu.

Czy mogę zainstalować wielu własnych agentów na tej samej maszynie?

Tak. Takie podejście może działać dobrze w przypadku agentów, którzy uruchamiają zadania, które nie korzystają z wielu udostępnionych zasobów. Możesz na przykład wypróbować agentów, którzy uruchamiają wersje, które w większości organizują wdrożenia i nie wykonują zbyt wiele pracy nad samym agentem.

Może się okazać, że w innych przypadkach nie zyskujesz większej wydajności, uruchamiając wielu agentów na tym samym komputerze. Może to nie być na przykład opłacalne dla agentów, którzy uruchamiają kompilacje, które zużywają dużo dysków i zasobów we/wy.

Problemy mogą również występować, jeśli równoległe zadania kompilacji korzystają z tego samego wdrożenia narzędzia jednotonowego, takiego jak pakiety npm. Na przykład jedna kompilacja może zaktualizować zależność, podczas gdy inna kompilacja jest w trakcie jej używania, co może spowodować zawodne wyniki i błędy.

Jakie jest zachowanie agentów po anulowaniu zadań potoku?

W przypadku agentów hostowanych przez firmę Microsoft agent jest usuwany i zwracany do puli usługi Azure Pipelines.

W przypadku własnych agentów:

Po anulowaniu potoku agent wysyła sekwencję poleceń do procesu wykonującego bieżący krok. Pierwsze polecenie jest wysyłane z limitem czasu wynoszącym 7,5 sekundy. Jeśli proces nie został zakończony, drugie polecenie jest wysyłane z limitem czasu wynoszącym 2,5 sekundy. Jeśli proces nie został zakończony, agent wystawia polecenie wymuszonego zakończenia procesu. Jeśli proces nie spełni dwóch początkowych żądań zakończenia, jego zakończenie zostanie wymuszone. Czas od początkowego żądania do zakończenia wynosi około 10 sekund.

Polecenia wydane dla procesu w celu anulowania potoku różnią się w zależności od systemu operacyjnego agenta.

  • macOS i Linux–wysyłane polecenia to SIGINT, a następnie SIGTERM, a następnie SIGKILL.
  • Windows–polecenia wysyłane do procesu to Ctrl+C, a następnie Ctrl+Break, a następnie Process.Kill.

Jak programowo wyzwalać aktualizacje agenta dla określonej puli agentów?

Aktualizacje agenta dla puli można wyzwolić przy użyciu następującego interfejsu API:

POST https://dev.azure.com/{organization}/_apis/distributedtask/pools/{poolId}/messages?agentId={agentId}&api-version=6.0
POST https://{server url}/tfs/{collection}/_apis/distributedtask/pools/{poolId}/messages?agentId={agentId}&api-version=6.0

Uwaga

Aby uzyskać więcej informacji na temat mapowania wersji interfejsu API i usługi Azure DevOps Server, zobacz Api and Azure DevOps Server version mapping (Mapowanie wersji interfejsu API i serwera Azure DevOps Server)

Parametry identyfikatora URI

Nazwisko W Wymagania Type Opis
agentId zapytanie Fałsz string Agent do aktualizacji. Jeśli nie określono — aktualizacja zostanie wyzwolona dla wszystkich agentów.
organization path Prawda string Nazwa organizacji usługi Azure DevOps.
poolId path Prawda liczba całkowita int32 Pula agentów do użycia
api-version zapytanie Fałsz string Wersja interfejsu API do użycia. Należy ustawić wartość "6.0", aby używać tej wersji interfejsu API.

Aby wyzwolić aktualizację agenta — treść żądania powinna być pusta.

Uwaga

Agent usługi Azure Pipelines jest oprogramowaniem open source w usłudze GitHub.

Dowiedz się więcej

Aby uzyskać więcej informacji na temat agentów, zobacz następujące moduły z ścieżki szkoleniowej Tworzenie aplikacji za pomocą usługi Azure DevOps .