Ciągła integracja i ciągłe wdrażanie na urządzeniach azure IoT Edge (edytor klasyczny)

Dotyczy:IoT Edge 1.4 znacznika wyboru IoT Edge 1.4

Ważne

Azure IoT Edge1.4 jest obsługiwaną wersją. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizacjęIoT Edge.

Usługa Azure Pipelines zawiera wbudowane zadanie usługi Azure IoT Edge, które ułatwia wdrażanie metodyki DevOps przy użyciu aplikacji usługi Azure IoT Edge. W tym artykule pokazano, jak używać funkcji ciągłej integracji i ciągłego wdrażania usługi Azure Pipelines do szybkiego i wydajnego kompilowania, testowania i wdrażania aplikacji na platformie Azure IoT Edge przy użyciu edytora klasycznego. Alternatywnie można użyć języka YAML.

Diagram przedstawiający gałęzie ciągłej integracji i 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 IoT Edge. Każde zadanie usługi Azure IoT Edge dodane do potoku implementuje jedną z następujących czterech akcji:

Akcja Opis
Tworzenie obrazów modułów Pobiera kod rozwiązania 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 IoT Edge.
Wdrażanie na urządzeniach usługi IoT Edge Tworzy wdrożenia IoT Edge na co najmniej jednym urządzeniu IoT Edge.

O ile nie określono inaczej, procedury opisane w tym artykule nie eksplorują wszystkich funkcji dostępnych za pomocą parametrów zadania. Więcej informacji można znaleźć w następujących zasobach:

Wymagania wstępne

  • Repozytorium 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 IoT Edge 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 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 IoT Edge w programie Visual Studio Code lub Visual Studio. Przed kontynuowaniem nie trzeba kompilować, wypychać, wdrażać ani debugować tego kodu. Skonfigurujesz te procesy w usłudze Azure Pipelines.

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

    Porada

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

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

  • Aktywne centrum Azure IoT z co najmniej dwoma IoT Edge urządzeniami do testowania oddzielnych etapów wdrażania testowego i produkcyjnego. Aby utworzyć urządzenie IoT Edge w systemie Linux lub Windows, możesz postępować zgodnie z artykułem Szybki start

Tworzenie potoku kompilacji na potrzeby ciągłej integracji

W tej sekcji utworzysz nowy potok kompilacji. Potok jest konfigurowany do automatycznego uruchamiania i publikowania dzienników kompilacji za każdym razem, gdy zaewidencjonujesz zmiany w rozwiązaniu IoT Edge.

  1. Zaloguj się do organizacji usługi Azure DevOps (https://dev.azure.com/{your organization}) i otwórz projekt zawierający repozytorium rozwiązania 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.

  3. W dolnej części strony Gdzie znajduje się kod? wybierz pozycję Użyj edytora klasycznego. Jeśli chcesz użyć języka YAML do utworzenia potoków kompilacji projektu, zobacz przewodnik YAML.

    Zrzut ekranu przedstawiający sposób korzystania z edytora klasycznego.

  4. Postępuj zgodnie z monitami, aby utworzyć potok.

    1. Podaj informacje źródłowe dla nowego potoku kompilacji. Wybierz pozycję Azure Repos Git jako źródło, a następnie wybierz projekt, repozytorium i gałąź, w której znajduje się kod rozwiązania IoT Edge. Następnie wybierz pozycję Kontynuuj.

      Zrzut ekranu przedstawiający sposób wybierania źródła potoku.

    2. Wybierz pozycję Puste zadanie zamiast szablonu.

      Zrzut ekranu przedstawiający sposób rozpoczynania pracy z pustym zadaniem dla potoku kompilacji.

  5. Po utworzeniu potoku zostanie on przeniesiony do edytora potoków. W tym miejscu można zmienić nazwę potoku, pulę agentów i specyfikację agenta.

    Możesz wybrać pulę hostowaną przez firmę Microsoft lub pulę hostowaną samodzielnie.

    W opisie potoku wybierz poprawną specyfikację agenta na podstawie platformy docelowej:

    Konfigurowanie specyfikacji agenta kompilacji.

  6. Potok jest wstępnie skonfigurowany z zadaniem o nazwie Zadanie agenta 1. Wybierz znak plus (+), aby dodać cztery zadania do zadania: azure IoT Edge dwa razy, kopiuj pliki raz i opublikuj artefakty kompilacji raz. Wyszukaj każde zadanie i umieść kursor nad nazwą zadania, aby wyświetlić przycisk Dodaj .

    Dodaj zadanie usługi Azure IoT Edge.

    Po dodaniu wszystkich czterech zadań zadanie agenta wygląda następująco:

    Cztery zadania w potoku kompilacji.

  7. Wybierz pierwsze zadanie usługi Azure IoT Edge, aby je edytować. To zadanie kompiluje wszystkie moduły w rozwiązaniu za pomocą określonej platformy docelowej. Edytuj zadanie przy użyciu następujących wartości:

    Parametr Opis
    Nazwa wyświetlana Nazwa wyświetlana jest automatycznie aktualizowana po zmianie pola Akcja.
    Akcja Wybierz pozycję Kompiluj obrazy modułów.
    Plik .template.json Wybierz wielokropek (...) i przejdź do pliku deployment.template.json w repozytorium zawierającym rozwiązanie IoT Edge.
    Domyślna platforma Wybierz odpowiedni system operacyjny dla modułów na podstawie docelowego urządzenia IoT Edge.
    Zmienne wyjściowe Podaj nazwę odwołania do skojarzenia ze ścieżką pliku, w której jest generowany plik deployment.json, na przykład edge.

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

    Te konfiguracje używają repozytorium obrazów i tagów zdefiniowanych w module.json pliku, aby nazwać i oznaczyć obraz modułu. Obrazy modułów kompilacji pomagają również zastąpić zmienne dokładną wartością zdefiniowaną module.json w pliku. W programie Visual Studio lub Visual Studio Code należy określić rzeczywistą wartość w .env pliku. W usłudze Azure Pipelines ustawisz wartość na karcie Zmienne potoku . Wybierz kartę Zmienne w menu edytora potoków i skonfiguruj nazwę i wartość w następujący sposób:

    • ACR_ADDRESS: Wartość serwera logowania Azure Container Registry. Wartość serwera logowania można znaleźć na stronie przeglądu rejestru kontenerów w Azure Portal.

    Jeśli masz inne zmienne w projekcie, możesz określić nazwę i wartość na tej karcie. Obrazy modułów kompilacji rozpoznają tylko zmienne, które są w ${VARIABLE} formacie. Upewnij się, że używasz tego formatu w plikach **/module.json .

  8. Wybierz drugie zadanie usługi Azure IoT Edge, aby je edytować. To zadanie wypycha wszystkie obrazy modułów do wybranego rejestru kontenerów.

    Parametr Opis
    Nazwa wyświetlana Nazwa wyświetlana jest automatycznie aktualizowana po zmianie pola Akcja.
    Akcja Wybierz pozycję Wypychanie obrazów modułów.
    Typ rejestru kontenerów Użyj typu domyślnego: Azure Container Registry.
    Subskrypcja platformy Azure Wybierz subskrypcję.
    Azure Container Registry Wybierz typ rejestru kontenerów, którego używasz do przechowywania obrazów modułów. W zależności od wybranego typu rejestru zmienia się formularz. Jeśli wybierzesz Azure Container Registry, użyj list rozwijanych, aby wybrać subskrypcję platformy Azure i nazwę rejestru kontenerów. Jeśli wybierzesz opcję Ogólny rejestr kontenerów, wybierz pozycję Nowy , aby utworzyć połączenie usługi rejestru.
    Plik .template.json Wybierz wielokropek (...) i przejdź do pliku deployment.template.json w repozytorium zawierającym rozwiązanie IoT Edge.
    Domyślna platforma Wybierz odpowiedni system operacyjny dla modułów na podstawie docelowego urządzenia IoT Edge.
    Dodawanie poświadczeń rejestru do manifestu wdrożenia Określ wartość true, aby dodać poświadczenia rejestru do wypychania obrazów platformy Docker do manifestu wdrożenia.

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

    Jeśli masz wiele rejestrów kontenerów do hostowania obrazów modułów, musisz zduplikować to zadanie, wybrać inny rejestr kontenerów i użyć modułów Obejścia w ustawieniach zaawansowanych , aby pominąć obrazy, które nie są przeznaczone dla tego konkretnego rejestru.

  9. Wybierz zadanie Kopiuj pliki , aby je edytować. To zadanie służy do kopiowania plików do katalogu przejściowego artefaktu.

    Parametr Opis
    Nazwa wyświetlana Użyj nazwy domyślnej lub dostosowania
    Folder źródłowy Folder z plikami do skopiowania.
    Zawartość Dodaj dwa wiersze: deployment.template.json i **/module.json. Te dwa pliki służą jako dane wejściowe w celu wygenerowania manifestu wdrożenia IoT Edge.
    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 zadania.

  10. Wybierz zadanie Publikuj artefakty kompilacji , aby je edytować. Podaj ścieżkę katalogu przejściowego artefaktu do zadania, aby można było opublikować ścieżkę do potoku wydania.

    Parametr Opis
    Nazwa wyświetlana Użyj nazwy domyślnej lub dostosuj.
    Ścieżka do opublikowania Określ zmienną $(Build.ArtifactStagingDirectory). Zobacz Tworzenie zmiennych , aby dowiedzieć się więcej.
    Nazwa artefaktu Użyj nazwy domyślnej: drop
    Lokalizacja publikowania artefaktów Użyj lokalizacji domyślnej: Azure Pipelines

    Aby uzyskać więcej informacji na temat tego zadania i jego parametrów, zobacz Publikowanie zadania artefaktów kompilacji.

  11. Otwórz kartę Wyzwalacze i zaznacz pole wyboru Włącz ciągłą integrację. Upewnij się, że uwzględniona jest gałąź zawierająca kod.

Zrzut ekranu przedstawiający sposób włączania wyzwalacza ciągłej integracji.

  1. Wybierz pozycję Zapisz z listy rozwijanej Zapisz & kolejki .

Ten potok jest teraz skonfigurowany do automatycznego uruchamiania po wypchnięciu nowego kodu do repozytorium. Ostatnie zadanie, publikowanie artefaktów potoku, wyzwala potok wydania. 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 skonfigurowany do automatycznego uruchamiania po upuszczeniu artefaktów potoku kompilacji i zostanie wyświetlony 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 jeden etap o nazwie Etap 1. Zmień nazwę etapu 1 na dev i traktuj ją jako potok ciągłego wdrażania dla środowiska deweloperskiego. Zwykle potoki ciągłego wdrażania mają wiele etapów, w tym tworzenie, przemieszczanie 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łowy 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 go, 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. Szczegółowe informacje o zadaniu agenta można skonfigurować, ale zadanie wdrożenia jest niewrażliwe na platformę, aby można było użyć dowolnej specyfikacji agenta w wybranej puli agentów.

    Wyświetlanie zadań dla etapu deweloperskiego na karcie Zadania

  8. W zadaniu QA 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
    Nazwa wyświetlana Nazwa wyświetlana jest automatycznie aktualizowana po zmianie pola Akcja.
    Akcja Wybierz pozycję 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 IoT Edge.
    Ścieżka danych wyjściowych Umieść ścieżkę $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Ta ścieżka jest ostatnim plikiem manifestu wdrożenia IoT Edge.

    Te konfiguracje pomagają zastąpić adresy URL obrazów modułu deployment.template.json w pliku. Manifest generowania 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 Azure Container Registry. Serwer logowania można pobrać ze strony Przegląd rejestru kontenerów w Azure Portal.
    • ACR_PASSWORD: Hasło Azure Container Registry.
    • ACR_USER: Nazwa użytkownika 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 wariantu 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
    Nazwa wyświetlana Nazwa wyświetlana jest automatycznie aktualizowana po zmianie pola Akcja.
    Akcja Wybierz pozycję Deploy to IoT Edge devices.
    Plik wdrożenia Umieść ścieżkę $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Ta ścieżka to plik IoT Edge pliku manifestu wdrożenia.
    Subskrypcja platformy Azure Wybierz subskrypcję zawierającą IoT Hub.
    nazwa IoT Hub Wybierz centrum IoT Hub.
    Wybieranie pojedynczego/wielokrotnego urządzenia Wybierz, czy chcesz, aby potok wydania był wdrażany na jednym lub wielu urządzeniach. W przypadku wdrożenia na jednym urządzeniu wprowadź identyfikator urządzenia 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ń IoT Edge w 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 IoT Hub. Zaktualizuj identyfikator wdrożenia IoT Edge i priorytet wdrożenia 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 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.
    Zaawansowany Dla identyfikatora wdrożenia IoT Edge określ wartość $(System.TeamProject)-$(Release.EnvironmentName). Ta zmienna mapuje nazwę projektu i wydania na identyfikator wdrożenia IoT Edge.

    Jeśli zadanie obejmuje użycie obrazu znajdującego się w prywatnym rejestrze zaufanym platformy Docker, który nie jest widoczny w chmurze publicznej, możesz ustawić zmienną środowiskową SKIP_MODULE_IMAGE_VALIDATION , aby pominąć true 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.

Uwaga

Wdrożenia warstwowe nie są jeszcze obsługiwane w zadaniach usługi Azure IoT Edge w usłudze Azure DevOps.

Jednak możesz użyć zadania interfejsu wiersza polecenia platformy Azure w usłudze Azure DevOps , aby utworzyć wdrożenie jako wdrożenie warstwowe. Dla wartości Skrypt wbudowany możesz użyć polecenia az iot edge deployment create:

az iot edge deployment create -d {deployment_name} -n {hub_name} --content modules_content.json --layered true

Weryfikowanie IoT Edge ciągłej integracji/ciągłego wdrażania za pomocą 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 potoku . Następnie wybierz pozycję Uruchom.

    Określ opcje potoku uruchamiania i wybierz pozycję Uruchom

  4. Wybierz pozycję Zadanie agenta 1, aby watch postęp przebiegu. Dzienniki danych wyjściowych zadania można przejrzeć, wybierając zadanie.

    Przeglądanie danych wyjściowych dziennika zadania

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

    Wydanie dla deweloperów

  6. Kliknij pozycję Etap deweloperski , 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