Ciągła integracja i ciągłe wdrażanie na urządzeniach usługi Azure IoT Edge

Dotyczy:Znacznik wyboru usługi IoT Edge 1.5 IoT Edge 1.5 Znacznik wyboru usługi IoT Edge 1.4 IoT Edge 1.4

Ważne

Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4 LTS. Usługa IoT Edge 1.4 LTS kończy się 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.

Metodyki DevOps można łatwo wdrożyć za pomocą aplikacji usługi Azure IoT Edge z wbudowanymi zadaniami usługi Azure IoT Edge w usłudze Azure Pipelines. W tym artykule pokazano, jak za pomocą usługi Azure Pipelines tworzyć, testować i wdrażać moduły usługi Azure IoT Edge przy użyciu języka YAML. Alternatywnie możesz użyć edytora klasycznego.

Diagram ciągłej integracji i gałęzi ciągłego programowania na potrzeby programowania i produkcji.

Z tego artykułu dowiesz się, jak używać wbudowanych zadań usługi Azure IoT Edge dla usługi Azure Pipelines do tworzenia potoków kompilacji i wydawania dla rozwiązania usługi IoT Edge. Każde zadanie usługi Azure IoT Edge dodane do potoku implementuje jedną z następujących czterech akcji:

Akcja opis
Kompilowanie obrazów modułów Pobiera kod rozwiązania usługi IoT Edge i tworzy obrazy kontenerów.
Wypychanie obrazów modułów Wypycha obrazy modułów do określonego rejestru kontenerów.
Generowanie manifestu wdrożenia Pobiera plik deployment.template.json i zmienne, a następnie generuje końcowy plik manifestu wdrożenia usługi IoT Edge.
Wdrażanie na urządzeniach usługi IoT Edge Tworzy wdrożenia usługi IoT Edge na co najmniej jednym urządzeniu usługi IoT Edge.

O ile nie określono inaczej, procedury opisane w tym artykule nie eksplorują wszystkich funkcji dostępnych za pomocą parametrów zadania. Aby uzyskać więcej informacji, zobacz następujące zasoby:

Wymagania wstępne

  • Repozytorium usługi Azure Repos. Jeśli go nie masz, możesz utworzyć nowe repozytorium Git w projekcie. W tym artykule utworzyliśmy repozytorium o nazwie IoTEdgeRepo.

  • Rozwiązanie usługi IoT Edge zostało zatwierdzone i wypchnięte do repozytorium. Jeśli chcesz utworzyć nowe przykładowe rozwiązanie do testowania tego artykułu, wykonaj kroki opisane w artykule Tworzenie modułów usługi Azure IoT Edge przy użyciu programu Visual Studio Code. W tym artykule utworzyliśmy rozwiązanie w naszym repozytorium o nazwie IoTEdgeSolution, które zawiera kod modułu o nazwie filtermodule.

    W tym artykule potrzebny jest folder rozwiązania utworzony przez szablony usługi IoT Edge w programie Visual Studio Code lub Visual Studio. Nie musisz kompilować, wypychać, wdrażać ani debugować tego kodu przed kontynuowaniem. Skonfigurujesz te procesy w usłudze Azure Pipelines.

    Poznaj ścieżkę do pliku deployment.template.json w rozwiązaniu, który jest używany w kilku krokach. Jeśli nie znasz roli szablonu wdrażania, zobacz Dowiedz się, jak wdrażać moduły i ustanawiać trasy.

    Napiwek

    Jeśli tworzysz nowe rozwiązanie, najpierw sklonuj repozytorium lokalnie. Następnie podczas tworzenia rozwiązania można go utworzyć bezpośrednio w folderze repozytorium. Możesz łatwo zatwierdzić i wypchnąć nowe pliki z tego miejsca.

  • Rejestr kontenerów, w którym można wypychać obrazy modułów. Możesz użyć usługi Azure Container Registry lub rejestru innej firmy.

  • Aktywna usługa Azure IoT Hub z co najmniej dwoma urządzeniami usługi IoT Edge na potrzeby testowania oddzielnych etapów wdrażania testowego i produkcyjnego. Możesz skorzystać z artykułów z przewodnika Szybki start, aby utworzyć urządzenie usługi IoT Edge w systemie Linux lub Windows

Aby uzyskać więcej informacji na temat korzystania z usługi Azure Repos, zobacz Udostępnianie kodu w programie Visual Studio i usłudze Azure Repos.

Tworzenie potoku kompilacji na potrzeby ciągłej integracji

W tej sekcji utworzysz nowy potok kompilacji. Potok jest konfigurowany tak, aby był uruchamiany automatycznie po zaewidencjonowaniu wszelkich zmian w przykładowym rozwiązaniu usługi IoT Edge i opublikowaniu dzienników kompilacji.

  1. Zaloguj się do organizacji usługi Azure DevOps (https://dev.azure.com/{your organization}) i otwórz projekt zawierający repozytorium rozwiązania usługi IoT Edge.

    Zrzut ekranu przedstawiający sposób otwierania projektu DevOps.

  2. W menu okienka po lewej stronie w projekcie wybierz pozycję Potoki. Wybierz pozycję Utwórz potok w środku strony. Jeśli masz już potoki kompilacji, wybierz przycisk Nowy potok w prawym górnym rogu.

    Zrzut ekranu przedstawiający sposób tworzenia nowego potoku kompilacji przy użyciu przycisku Nowy potok .

  3. Na stronie Gdzie znajduje się twój kod? wybierz pozycję Azure Repos GitYAML. Jeśli chcesz użyć edytora klasycznego do utworzenia potoków kompilacji projektu, zobacz przewodnik po edytorze klasycznym.

  4. Wybierz repozytorium, dla którego tworzysz potok.

    Zrzut ekranu przedstawiający sposób wybierania repozytorium dla potoku kompilacji.

  5. Na stronie Konfigurowanie potoku wybierz pozycję Potok startowy. Jeśli masz istniejący plik YAML usługi Azure Pipelines, którego chcesz użyć do utworzenia tego potoku, możesz wybrać pozycję Istniejący plik YAML usługi Azure Pipelines i podać gałąź i ścieżkę w repozytorium do pliku.

    Wybierz pozycję Potok startowy lub Istniejący plik YAML usługi Azure Pipelines, aby rozpocząć potok kompilacji

  6. Na stronie Przeglądanie potoku YAML możesz wybrać domyślną nazwę, aby zmienić nazwę azure-pipelines.yml pliku konfiguracji potoku.

    Wybierz pozycję Pokaż asystenta , aby otworzyć paletę Zadań .

    Zrzut ekranu przedstawiający sposób wybierania opcji Pokaż asystenta w celu otwarcia palety zadań.

  7. Aby dodać zadanie, umieść kursor na końcu kodu YAML lub gdziekolwiek chcesz dodać instrukcje dotyczące zadania. Wyszukaj i wybierz pozycję Azure IoT Edge. Wypełnij parametry zadania w następujący sposób. Następnie wybierz pozycję Dodaj.

    Parametr Opis
    Akcja Wybierz pozycję Kompiluj obrazy modułów.
    plik .template.json Podaj ścieżkę do pliku deployment.template.json w repozytorium zawierającym rozwiązanie usługi IoT Edge.
    Domyślna platforma Wybierz odpowiedni system operacyjny dla modułów na podstawie docelowego urządzenia usługi IoT Edge.

    Aby uzyskać więcej informacji na temat tego zadania i jego parametrów, zobacz Zadanie usługi Azure IoT Edge.

    Zrzut ekranu przedstawiający paletę Zadań i sposób dodawania zadań do potoku.

    Napiwek

    Po dodaniu każdego zadania edytor automatycznie wyróżni dodane wiersze. Aby zapobiec przypadkowemu zastąpieniu, usuń zaznaczenie wierszy i podaj nowe miejsce dla następnego zadania przed dodaniem dodatkowych zadań.

  8. Powtórz ten proces, aby dodać trzy kolejne zadania z następującymi parametrami:

    • Zadanie: Azure IoT Edge

      Parametr Opis
      Akcja Wybierz pozycję Wypychanie obrazów modułów.
      Typ rejestru kontenerów Użyj domyślnego typu: Azure Container Registry.
      Subskrypcja platformy Azure Wybierz subskrypcję.
      Azure Container Registry Wybierz rejestr, którego chcesz użyć dla potoku.
      plik .template.json Podaj ścieżkę do pliku deployment.template.json w repozytorium zawierającym rozwiązanie usługi IoT Edge.
      Domyślna platforma Wybierz odpowiedni system operacyjny dla modułów na podstawie docelowego urządzenia usługi IoT Edge.

      Aby uzyskać więcej informacji na temat tego zadania i jego parametrów, zobacz Zadanie usługi Azure IoT Edge.

    • Zadanie: Kopiowanie plików

      Parametr Opis
      Folder źródłowy Folder źródłowy do skopiowania. Pusty jest katalogem głównym repozytorium. Użyj zmiennych, jeśli pliki nie znajdują się w repozytorium. Przykład: $(agent.builddirectory).
      Zawartość Dodaj dwa wiersze: deployment.template.json i **/module.json.
      Folder docelowy Określ zmienną $(Build.ArtifactStagingDirectory). Zobacz Build variables (Zmienne kompilacji), aby dowiedzieć się więcej o opisie.

      Aby uzyskać więcej informacji o tym zadaniu i jego parametrach, zobacz Kopiowanie plików.

    • Zadanie: Publikowanie artefaktów kompilacji

      Parametr Opis
      Ścieżka do publikowania Określ zmienną $(Build.ArtifactStagingDirectory). Zobacz Build variables (Zmienne kompilacji), aby dowiedzieć się więcej o opisie.
      Nazwa artefaktu Określ nazwę domyślną: drop
      Lokalizacja publikowania artefaktu Użyj lokalizacji domyślnej: Azure Pipelines

      Aby uzyskać więcej informacji o tym zadaniu i jego parametrach, zobacz Publikowanie artefaktów kompilacji.

  9. Wybierz pozycję Zapisz z listy rozwijanej Zapisz i uruchom w prawym górnym rogu.

  10. Wyzwalacz ciągłej integracji jest domyślnie włączony dla potoku YAML. Jeśli chcesz edytować te ustawienia, wybierz potok i wybierz pozycję Edytuj w prawym górnym rogu. Wybierz pozycję Więcej akcji obok przycisku Uruchom w prawym górnym rogu i przejdź do pozycji Wyzwalacze. Ciągła integracja jest wyświetlana jako włączona pod nazwą potoku. Jeśli chcesz wyświetlić szczegóły wyzwalacza, zaznacz pole Zastąpij wyzwalacz ciągłej integracji YAML z tego miejsca .

Zrzut ekranu przedstawiający sposób przeglądania ustawień wyzwalacza potoku z menu Wyzwalacze w obszarze Więcej akcji.

Przejdź do następnej sekcji, aby skompilować potok wydania.

Tworzenie potoku wydania na potrzeby ciągłego wdrażania

W tej sekcji utworzysz potok wydania, który jest skonfigurowany do automatycznego uruchamiania po porzuceniu artefaktów potoku kompilacji i wyświetli dzienniki wdrażania w usłudze Azure Pipelines.

Utwórz nowy potok i dodaj nowy etap:

  1. Na karcie Wydania w obszarze Potoki wybierz pozycję + Nowy potok. Jeśli masz już potoki wydania, wybierz przycisk + Nowy i wybierz pozycję + Nowy potok wydania.

    Dodawanie potoku wydania przy użyciu przycisku + Nowy potok

  2. Po wyświetleniu monitu o wybranie szablonu wybierz opcję rozpoczęcia od pustego zadania.

    Rozpocznij od pustego zadania dla potoku wydania

  3. Nowy potok wydania inicjuje się przy użyciu jednego etapu o nazwie Etap 1. Zmień nazwę etapu 1 na dewelopera i traktuj go jako potok ciągłego wdrażania dla środowiska deweloperskiego. Zazwyczaj potoki ciągłego wdrażania mają wiele etapów, w tym deweloperów, przejściowych i prod. Możesz użyć różnych nazw i utworzyć więcej na podstawie praktyki DevOps. Zamknij okno szczegółów etapu po zmianie nazwy.

    Możesz również zmienić nazwę potoku wydania, wybierając tekst "Nowy potok wydania" u góry.

  4. Połącz wydanie z artefaktami kompilacji opublikowanymi przez potok kompilacji. Kliknij pozycję Dodaj w obszarze artefaktów.

    Kliknij pozycję Dodaj w obszarze artefaktów interfejsu

  5. Na stronie Dodawanie artefaktu wybierz pozycję Kompiluj jako typ źródła. Wybierz projekt i utworzony potok kompilacji. Jeśli chcesz, możesz zmienić alias źródła na bardziej opisowy. Następnie wybierz pozycję Dodaj.

    Na stronie dodawania artefaktu wybierz pozycję Dodaj, aby utworzyć artefakt

  6. Otwórz wyzwalacze artefaktu i wybierz przełącznik, aby włączyć wyzwalacz ciągłego wdrażania. Teraz zostanie utworzona nowa wersja za każdym razem, gdy będzie dostępna nowa kompilacja.

    Otwórz wyzwalacze artefaktu i przełącz, aby włączyć wyzwalacz ciągłego wdrażania

  7. Etap deweloperski jest wstępnie skonfigurowany z jednym zadaniem i zerowymi zadaniami. Z menu potoku wybierz pozycję Zadania, a następnie wybierz etap deweloperski. Wybierz zadanie agenta i zmień jego nazwę wyświetlaną na QA. Możesz skonfigurować szczegółowe informacje o zadaniu agenta, ale zadanie wdrażania jest niewrażliwe na platformę, dzięki czemu można użyć dowolnej specyfikacji agenta w wybranej puli agentów.

    Wyświetlanie zadań dla etapu deweloperskiego na karcie Zadania

  8. W zadaniu kontroli jakości wybierz znak plus (+), aby dodać dwa zadania. Wyszukaj i dodaj usługę Azure IoT Edge dwa razy.

  9. Wybierz pierwsze zadanie usługi Azure IoT Edge i skonfiguruj je przy użyciu następujących wartości:

    Parametr Opis
    Display name Nazwa wyświetlana jest automatycznie aktualizowana po zmianie pola Akcja.
    Akcja Wybierz opcję Generate deployment manifest.
    plik .template.json Określ ścieżkę: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json. Ścieżka jest publikowana z potoku kompilacji.
    Domyślna platforma Wybierz odpowiedni system operacyjny dla modułów na podstawie docelowego urządzenia usługi IoT Edge.
    Ścieżka wyjściowa Umieść ścieżkę $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Ta ścieżka jest ostatnim plikiem manifestu wdrożenia usługi IoT Edge.

    Te konfiguracje pomagają zastąpić adresy URL obrazów modułu deployment.template.json w pliku. Manifest Generowanie wdrożenia pomaga również zastąpić zmienne dokładną wartością zdefiniowaną deployment.template.json w pliku. W programie Visual Studio/Visual Studio Code określasz rzeczywistą wartość w .env pliku. W usłudze Azure Pipelines należy ustawić wartość na karcie Zmienne potoku wydania. Przejdź do karty Zmienne i skonfiguruj nazwę i wartość w następujący sposób:

    • ACR_ADDRESS: Wartość serwera logowania usługi Azure Container Registry. Serwer logowania można pobrać ze strony Przegląd rejestru kontenerów w witrynie Azure Portal.
    • ACR_PASSWORD: Hasło usługi Azure Container Registry.
    • ACR_USER: Nazwa użytkownika usługi Azure Container Registry.

    Jeśli masz inne zmienne w projekcie, możesz określić nazwę i wartość na tej karcie. Manifest generowania wdrożenia może rozpoznawać tylko zmienne, które są w ${VARIABLE} smaku. Upewnij się, że używasz tego smaku w plikach *.template.json .

    "registryCredentials": {
      "<ACR name>": { // Your Azure Container Registry **Registry name** value
        "username": "${ACR_USER}",
        "password": "${ACR_PASSWORD}",
        "address": "${ACR_ADDRESS}"
      }
    }
    

    Konfigurowanie zmiennych dla potoku wydania na karcie Zmienne

  10. Wybierz drugie zadanie usługi Azure IoT Edge i skonfiguruj je przy użyciu następujących wartości:

    Parametr Opis
    Display name Nazwa wyświetlana jest automatycznie aktualizowana po zmianie pola Akcja.
    Akcja Wybierz opcję Deploy to IoT Edge devices.
    Plik wdrożenia Umieść ścieżkę $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Ta ścieżka to plik manifestu wdrożenia usługi IoT Edge.
    Subskrypcja platformy Azure Wybierz subskrypcję zawierającą usługę IoT Hub.
    Nazwa centrum IoT Wybierz centrum IoT Hub.
    Wybieranie pojedynczego/wielokrotnego urządzenia Określ, czy potok wydania ma zostać wdrożony na jednym lub wielu urządzeniach. W przypadku wdrożenia na jednym urządzeniu wprowadź identyfikator urządzenia usługi IoT Edge. Jeśli wdrażasz na wielu urządzeniach, określ warunek docelowy urządzenia. Warunek docelowy jest filtrem zgodnym z zestawem urządzeń usługi IoT Edge w usłudze IoT Hub. Jeśli chcesz użyć tagów urządzeń jako warunku, musisz zaktualizować odpowiednie tagi urządzeń za pomocą bliźniaczej reprezentacji urządzenia usługi IoT Hub. Zaktualizuj identyfikator wdrożenia usługi IoT Edge i priorytet wdrożenia usługi IoT Edge w ustawieniach zaawansowanych. Aby uzyskać więcej informacji na temat tworzenia wdrożenia dla wielu urządzeń, zobacz Omówienie wdrożeń automatycznych usługi IoT Edge.
    Identyfikator urządzenia lub warunek docelowy W zależności od wcześniejszego wyboru określ identyfikator urządzenia lub warunek docelowy do wdrożenia na wielu urządzeniach.
    Zaawansowani W polu Identyfikator wdrożenia usługi IoT Edge określ wartość $(System.TeamProject)-$(Release.EnvironmentName). Ta zmienna mapuje nazwę projektu i wydania na identyfikator wdrożenia usługi IoT Edge.

    Jeśli zadanie obejmuje użycie obrazu znajdującego się w prywatnym rejestrze zaufanym platformy Docker, który nie jest widoczny dla chmury publicznej, możesz ustawić zmienną środowiskową SKIP_MODULE_IMAGE_VALIDATION , aby true pominąć walidację obrazu.

    Dodawanie zadań usługi Azure IoT Edge dla etapu deweloperskiego

  11. Wybierz pozycję Zapisz , aby zapisać zmiany w nowym potoku wydania. Wróć do widoku potoku, wybierając kartę Potok z menu.

Weryfikowanie ciągłej integracji/ciągłego wdrażania usługi IoT Edge przy użyciu potoków kompilacji i wydania

Aby wyzwolić zadanie kompilacji, możesz wypchnąć zatwierdzenie do repozytorium kodu źródłowego lub ręcznie go wyzwolić. W tej sekcji ręcznie wyzwolisz potok ciągłej integracji/ciągłego wdrażania, aby sprawdzić, czy działa. Następnie sprawdź, czy wdrożenie zakończy się pomyślnie.

  1. W menu okienka po lewej stronie wybierz pozycję Potoki i otwórz potok kompilacji utworzony na początku tego artykułu.

  2. Zadanie kompilacji w potoku kompilacji można wyzwolić, wybierając przycisk Uruchom potok w prawym górnym rogu.

    Ręczne wyzwalanie potoku kompilacji przy użyciu przycisku Uruchom potok

  3. Przejrzyj ustawienia Uruchom potok. Następnie wybierz pozycję Uruchom.

    Określ opcje potoku uruchamiania i wybierz pozycję Uruchom

  4. Wybierz pozycję Zadanie agenta 1 , aby obejrzeć postęp przebiegu. Możesz przejrzeć dzienniki danych wyjściowych zadania, wybierając zadanie.

    Przeglądanie danych wyjściowych dziennika zadania

  5. Jeśli potok kompilacji został ukończony pomyślnie, wyzwala wydanie do etapu deweloperskiego . Pomyślne wydanie deweloperskie tworzy wdrożenie usługi IoT Edge na docelowych urządzeniach usługi IoT Edge.

    Wydanie do dewelopera

  6. Kliknij pozycję Dev Stage, aby wyświetlić dzienniki wydania.

    Dzienniki wydań

  7. Jeśli potok kończy się niepowodzeniem, zacznij od przejrzenia dzienników. Dzienniki można wyświetlić, przechodząc do podsumowania przebiegu potoku i wybierając zadanie i zadanie. Jeśli określone zadanie kończy się niepowodzeniem, sprawdź dzienniki dla tego zadania. Aby uzyskać szczegółowe instrukcje dotyczące konfigurowania i używania dzienników, zobacz Przeglądanie dzienników w celu diagnozowania problemów z potokiem.

Następne kroki