Ciągła integracja i ciągłe wdrażanie na Azure IoT Edge urządzeń

Dotyczy:  ikona tak IoT Edge 1,1  yes IoT Edge 1,2

Możesz łatwo DevOps z aplikacjami Azure IoT Edge wbudowanymi zadaniami Azure IoT Edge w Azure Pipelines. W tym artykule pokazano, jak za pomocą programu Azure Pipelines kompilować, testować i wdrażać moduły Azure IoT Edge yaml. Alternatywnie możesz użyć edytora klasycznego.

Diagram — gałęzie ci i CD dla procesów tworzenia i produkcji

Z tego artykułu dowiesz się, jak za pomocą wbudowanych zadań Azure IoT Edge dla Azure Pipelines tworzyć potoki kompilacji i wydania dla rozwiązania IoT Edge kompilacji. Każde Azure IoT Edge dodane do potoku implementuje jedną z następujących czterech akcji:

Akcja Opis
Tworzenie obrazów modułów Pobiera kod 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 deployment.template.jspliku i zmiennych, a następnie generuje ostateczny IoT Edge manifestu wdrożenia.
Wdrażanie na urządzeniach usługi IoT Edge Tworzy IoT Edge wdrożenia na co najmniej jednym IoT Edge urządzeń.

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

Wymagania wstępne

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

  • Rozwiązanie IoT Edge zatwierdzone i wypchne do repozytorium. Jeśli chcesz utworzyć nowe przykładowe rozwiązanie do testowania tego artykułu, wykonaj kroki opisane w artykule Tworzenie i debugowanie modułów w programie Visual Studio Code lub Tworzenie i debugowanie modułów języka C#w programie Visual Studio . W tym artykule w naszym repozytorium zostało utworzone rozwiązanie o nazwie IoTEdgeSolution, które zawiera kod modułu o nazwie filtermodule.

    Na potrzeby tego artykułu wystarczy folder rozwiązania utworzony przez szablony IoT Edge w Visual Studio Code lub Visual Studio. Nie musisz kompilować, wypychać, wdrażać ani debugować tego kodu przed podjęciem pracy. Te procesy skonfigurujesz w Azure Pipelines.

    Poznaj ścieżkę do deployment.template.jspliku w rozwiązaniu, która jest używana w kilku krokach. Jeśli nie masz jeszcze 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 utworzyć je bezpośrednio w folderze repozytorium. W tym miejscu możesz łatwo zatwierdzać i wypychać nowe pliki.

  • 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 Hub z co najmniej dwoma IoT Edge do testowania oddzielnych etapów testowania i wdrożenia produkcyjnego. Możesz postępować zgodnie z artykułami Szybki start, aby utworzyć urządzenie IoT Edge w systemie Linux lub Windows

Aby uzyskać więcej informacji na temat korzystania z Azure Repos, zobacz Share your code with Visual Studio and Azure Repos (Udostępnianie kodu Visual Studio i Azure Repos

Tworzenie potoku kompilacji w celu ciągłej integracji

W tej sekcji utworzysz nowy potok kompilacji. Potok konfiguruje się tak, aby był uruchamiany automatycznie po zaewidencjoncjom zmian w przykładowym IoT Edge i publikowaniu dzienników kompilacji.

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

    Otwieranie projektu DevOps projektu

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

    Tworzenie nowego potoku kompilacji przy użyciu przycisku Nowy potok

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

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

    Wybieranie repozytorium dla potoku kompilacji

  5. Na stronie Konfigurowanie potoku wybierz pozycję Potok startowy. Jeśli masz już istniejący plik YAML Azure Pipelines, który 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 dla tego pliku.

    Wybierz pozycję Potok początkowy lub Istniejący Azure Pipelines YAML, aby rozpocząć potok kompilacji

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

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

    Wybierz pozycję Pokaż asystenta, aby otworzyć paletę Zadania

  7. Aby dodać zadanie, umieść kursor na końcu pliku YAML lub wszędzie tam, gdzie 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ę Build module images (Kompilowanie obrazów modułów).
    .template.jsw pliku Podaj ścieżkę do plikudeployment.template.js w repozytorium zawierającym dane IoT Edge rozwiązania.
    Platforma domyślna Wybierz odpowiedni system operacyjny dla modułów na podstawie docelowego IoT Edge operacyjnego.

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

    Używanie palety Zadania do dodawania zadań do potoku

    Porada

    Po dodaniu każdego zadania edytor automatycznie wyróżni dodane wiersze. Aby zapobiec przypadkowemu nadpisywaniu, usuń zaznaczenie wierszy i przed dodaniem kolejnych zadań podaj nowe miejsce na następne zadanie.

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

    • Zadanie: Azure IoT Edge

      Parametr Opis
      Akcja Wybierz pozycję Push module images (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.
      .template.jsw pliku Podaj ścieżkę do plikudeployment.template.js w repozytorium zawierającym dane IoT Edge rozwiązania.
      Platforma domyślna Wybierz odpowiedni system operacyjny dla modułów na podstawie docelowego IoT Edge operacyjnego.

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

    • Zadanie: Kopiowanie plików

      Parametr Opis
      Folder źródłowy Folder źródłowy do skopiowania. Pusty to katalog główny tego repo. Użyj zmiennych, jeśli pliki nie znajdują się w repo. Przykład: $(agent.builddirectory).
      Zawartość Dodaj dwa wiersze: deployment.template.json i **/module.json .
      Folder docelowy Określ zmienną $(Build.ArtifactStagingDirectory) . Aby dowiedzieć się więcej o opisie, zobacz Build variables (Tworzenie zmiennych).

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

    • Zadanie: Publikowanie kompilacji Artifacts

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

      Aby uzyskać więcej informacji na temat tego zadania i jego parametrów, zobacz Publish build artifacts task (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 kliknij pozycję Edytuj w prawym górnym rogu. Wybierz pozycję Więcej akcji obok przycisku Uruchom w prawym górnym rogu i przejdź do opcji Wyzwalacze. Ciągła integracja jest przedstawiana jako włączona pod nazwą potoku. Jeśli chcesz wyświetlić szczegóły wyzwalacza, zaznacz pole Zastąp wyzwalacz ciągłej integracji YAML z tej strony.

    Aby przejrzeć ustawienia wyzwalacza potoku, zobacz 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, gdy potok kompilacji pospadnie artefakty, a dzienniki wdrażania zostaną wyświetlone w Azure Pipelines.

Utwórz nowy potok i Dodaj nowy etap:

  1. Na karcie wersje w obszarze potoki wybierz pozycję + Nowy potok. Lub, jeśli masz już potoki wersji, wybierz przycisk + Nowy i wybierz pozycję + Nowy potok wersji.

    Dodawanie potoku wydania przy użyciu przycisku + Nowy potok

  2. Po wyświetleniu monitu o wybranie szablonu wybierz pozycję Rozpocznij od pustego zadania.

    Zacznij od pustego zadania dla potoku wydania

  3. Nowy potok wydania jest inicjowany z jednym etapem, zwanym etapem 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 dev, Staging i prod. Możesz użyć różnych nazw i utworzyć więcej na podstawie swojej DevOps. Zamknij okno Szczegóły etapu po jego zmianie nazwy.

    Możesz również zmienić nazwę potoku wydania, zaznaczając w górnej części tekst "Nowa wersja potoku".

  4. Połącz wydanie z artefaktami kompilacji, które są publikowane przez potok kompilacji. Kliknij przycisk Dodaj w obszarze artefaktów.

    Kliknij przycisk Dodaj w obszarze artefaktów interfejsu

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

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

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

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

  7. Etap dev jest wstępnie skonfigurowany przy użyciu jednego zadania i zero zadań. Z menu potok wybierz pozycję zadania , a następnie wybierz etap dev . Wybierz zadanie agenta i zmień jego nazwę wyświetlaną na wartość pytania i odpowiedzi. Można skonfigurować szczegółowe informacje o zadaniu agenta, ale zadanie wdrażania jest niezależne od platformy, aby można było użyć dowolnej specyfikacji agenta w wybranej puli agentów.

    Wyświetl zadania dla etapu dev na karcie zadania

  8. W zadaniu pytań i odpowiedzi wybierz znak plus ( + ), aby dodać dwa zadania. Wyszukaj i Dodaj Azure IoT Edge dwa razy.

  9. Wybierz pierwsze zadanie 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, gdy pole akcji ulega zmianie.
    Akcja Wybierz pozycję Generate deployment manifest.
    .template.jspliku Określ ścieżkę: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json . Ścieżka jest publikowana z potoku kompilacji.
    Platforma domyślna Wybierz odpowiedni system operacyjny dla modułów w oparciu o Twoje urządzenie IoT Edge.
    Ścieżka wyjściowa Umieść ścieżkę $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json . Ta ścieżka to końcowy plik manifestu wdrażania IoT Edge.

    Te konfiguracje ułatwiają zastępowanie adresów URL obrazów modułów w deployment.template.json pliku. Funkcja Generuj manifest wdrożenia pomaga również zastąpić zmienne dokładnie wartością określoną w deployment.template.json pliku. W programie VS/VS Code określasz wartość rzeczywistą w .env pliku. W 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: Azure Container Registry wartość serwera logowania . Serwer logowania można pobrać ze strony Przegląd rejestru kontenerów w Azure Portal.
    • ACR_PASSWORD: hasło Azure Container Registry.
    • ACR_USER: Azure Container Registry nazwy użytkownika.

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

    "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 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, gdy pole akcji ulega zmianie.
    Akcja Wybierz pozycję Deploy to IoT Edge devices.
    Plik wdrożenia Umieść ścieżkę $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json . Ta ścieżka jest plikiem manifestu wdrażania IoT Edge.
    Subskrypcja platformy Azure Wybierz subskrypcję zawierającą IoT Hub.
    Nazwa IoT Hub Wybierz Centrum IoT Hub.
    Wybieranie jednego/wielu urządzeń Zdecyduj, czy potok wydania ma zostać wdrożony na jednym, czy na wielu urządzeniach. W przypadku wdrażania na jednym urządzeniu wprowadź IoT Edge identyfikator urządzenia. W przypadku wdrażania na wielu urządzeniach należy określić warunek docelowy urządzenia. Warunek docelowy to filtr zgodny z zestawem IoT Edge urządzeń w IoT Hub. Jeśli chcesz używać tagów urządzenia jako warunku, musisz zaktualizować odpowiednie znaczniki urządzeń za pomocą sznurka urządzenia IoT Hub. Zaktualizuj IoT Edge identyfikator wdrożenia i IoT Edge priorytet wdrożenia w obszarze Ustawienia zaawansowane. Aby uzyskać więcej informacji na temat tworzenia wdrożenia dla wielu urządzeń, zobacz opis IoT Edge wdrożeń automatycznych.
    Identyfikator urządzenia lub warunek docelowy W zależności od wcześniejszego wyboru Określ identyfikator urządzenia lub warunek docelowy , który ma zostać wdrożony na wielu urządzeniach.
    Zaawansowany Dla identyfikatora wdrożenia IoT Edge Określ $(System.TeamProject)-$(Release.EnvironmentName) . Ta zmienna mapuje projekt i nazwę wydania na identyfikator wdrożenia IoT Edge.

    Jeśli zadanie obejmuje korzystanie z obrazu, który znajduje się w prywatnym rejestrze platformy Docker, który nie jest widoczny dla chmury publicznej, można ustawić zmienną środowiskową SKIP_MODULE_IMAGE_VALIDATION , aby true pominąć sprawdzanie poprawności obrazu.

    Dodawanie Azure IoT Edge zadań dla etapu deweloperskiego

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

Weryfikuj IoT Edge ciągłej integracji/ciągłego wdrażania przy użyciu potoków kompilacja i wydanie

Aby wyzwolić zadanie kompilacji, można wypchnąć zatwierdzenie do repozytorium kodu źródłowego lub ręcznie je wyzwolić. W tej sekcji ręcznie wyzwolimy potok ciągłej integracji/ciągłego wdrażania, aby sprawdzić, czy działa. Następnie sprawdź, czy wdrożenie powiodło się.

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

  2. Możesz wyzwolić zadanie kompilacji w potoku kompilacji, wybierając przycisk Uruchom potok w prawym górnym rogu.

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

  3. Przejrzyj ustawienia przebiegu potoku . Następnie wybierz pozycję Uruchom.

    Określ opcje przebiegu potoku i wybierz pozycję Uruchom

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

    Przejrzyj dane wyjściowe dziennika zadania

  5. W przypadku pomyślnego ukończenia potoku kompilacji jest wyzwalane wydanie do etapu dev . Pomyślne wydanie deweloperskie tworzy IoT Edge wdrożenie IoT Edge urządzeń docelowych.

    Wydanie do deweloperów

  6. Kliknij pozycję etap deweloperów , aby wyświetlić dzienniki wydań.

    Dzienniki wydań

  7. Jeśli potok kończy się niepowodzeniem, Zacznij od przejrzenia dzienników. Dzienniki można wyświetlić, przechodząc do podsumowania uruchomienia potoku i wybierając zadanie i zadanie. Jeśli określone zadanie zakoń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