Udostępnij przez


Jak wdrożyć projekt Aspire przy użyciu Azure Developer CLI

Azure Developer CLI (azd) umożliwia wdrażanie projektów Aspire przy użyciu GitHub Actions lub potoków Azure DevOps, poprzez automatyczną konfigurację wymaganych ustawień uwierzytelniania i środowiska. W tym artykule opisano proces tworzenia i wdrażania projektu Aspire na Azure Container Apps przy użyciu azd. Poznasz następujące pojęcia:

  • Dowiedz się, jak azd działa integracja z projektami Aspire
  • Tworzenie i konfigurowanie repozytorium GitHub lub Azure DevOps dla projektu Aspire przy użyciu azd
  • Monitorowanie i eksplorowanie przepływu pracy GitHub Actions lub wykonywania potoku Azure DevOps lub wdrożeń Azure

Wymagania wstępne

Do pracy z Aspireprogramem potrzebne są następujące elementy zainstalowane lokalnie:

Aby uzyskać więcej informacji, zobacz Aspire konfigurowanie i narzędzia oraz Aspire zestaw SDK.

  • Azure organizację DevOps lub wybierz istniejącą organizację
  • Utwórz Azure osobisty token dostępu DevOps (PAT) i zapisz go do późniejszego użycia. Skonfiguruj token z następującymi uprawnieniami:
    • Zasoby agentów (odczyt, zarządzanie)
    • Kompilacja (odczyt i uruchomienie)
    • Kod (pełny)
    • Projekt i zespół (czytanie, pisanie i zarządzanie)
    • Wydanie (odczyt, zapis, wykonywanie i zarządzanie)
    • Połączenia usług (odczyt, wykonywanie zapytań i zarządzanie)

Musisz również zainstalować Azure Developer CLIlokalnie (wersja 1.5.1 lub nowsza). Typowe opcje instalacji obejmują następujące elementy:

winget install microsoft.azd

Utwórz Aspire rozwiązanie

Na wstępie w artykule zakłada się, że utworzono Aspire rozwiązanie na podstawie szablonu Aplikacji PoczątkowejAspire. Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie pierwszej Aspire aplikacji.

Inicjowanie szablonu

  1. Otwórz nowe okno terminalu i cd przejdź do katalogu swojego rozwiązania Aspire.

  2. Wykonaj polecenie azd init, aby zainicjować projekt przy użyciu azd, co spowoduje sprawdzenie struktury katalogów lokalnych i określenie typu aplikacji.

    azd init
    

    Aby uzyskać więcej informacji na temat polecenia azd init, zobacz azd init.

  3. Wybierz Użyj kodu w bieżącym kataloguazd, gdy zostanie wyświetlony monit z trzema opcjami inicjowania aplikacji.

    ? How do you want to initialize your app?  [Use arrows to move, type to filter]
    > Use code in the current directory
      Select a template
      Create a minimal project
    
  4. Po przeskanowaniu katalogu azd zostanie wyświetlony monit o potwierdzenie znalezienia poprawnego Aspire projektu AppHost. Wybierz opcję Potwierdź i kontynuuj inicjowanie mojej aplikacji.

    Detected services:
    
      .NET (Aspire)
      Detected in: D:\source\repos\AspireSample\AspireSample.AppHost\AspireSample.AppHost.csproj
    
    azd will generate the files necessary to host your app on Azure using Azure Container Apps.
    
    ? Select an option  [Use arrows to move, type to filter]
    > Confirm and continue initializing my app
      Cancel and exit
    
  5. Wprowadź nazwę środowiska, która będzie używana do nazywania aprowizowanych zasobów w Azure oraz zarządzania różnymi środowiskami, takimi jak dev i prod.

    Generating files to run your app on Azure:
    
      (✓) Done: Generating ./azure.yaml
      (✓) Done: Generating ./next-steps.md
    
    SUCCESS: Your app is ready for the cloud!
    You can provision and deploy your app to Azure by running the azd up command in this directory. For more information on configuring your app, see ./next-steps.md
    

azd generuje wiele plików i umieszcza je w katalogu roboczym. Są to następujące pliki:

  • azure.yaml: opisuje usługi aplikacji, takie jak projekt Aspire AppHost, i mapuje je na zasoby Azure.
  • .azure/config.json: plik konfiguracyjny informujący azd, jakie jest bieżące aktywne środowisko.
  • .azure/aspireazddev/.env: zawiera przesłonięcia specyficzne dla środowiska.

Utwórz repozytorium GitHub i potok

Azure Developer CLI umożliwia automatyczne tworzenie potoków CI/CD z prawidłowymi konfiguracjami i uprawnieniami, aby aprowizować i wdrażać zasoby do Azure. azd również można utworzyć repozytorium GitHub dla Twojej aplikacji, jeśli jeszcze nie istnieje.

  1. Uruchom polecenie azd pipeline config, aby skonfigurować potok wdrażania i bezpiecznie połączyć go z Azure:

    azd pipeline config
    
  2. Wybierz subskrypcję, w ramach której chcesz aprowizować i wdrożyć zasoby aplikacji.

  3. Wybierz lokalizację Azure, która ma być używana dla zasobów.

  4. Gdy zostanie wyświetlony monit o utworzenie nowego repozytorium Git w katalogu, wprowadź y i naciśnij Enter.

    Uwaga / Notatka

    Utworzenie repozytorium GitHub wymaga zalogowania się do GitHub. Istnieje kilka opcji, które różnią się w zależności od preferencji. Po zalogowaniu zostanie wyświetlony monit o utworzenie nowego repozytorium w bieżącym katalogu.

  5. Wybierz pozycję Utwórz nowe prywatne repozytorium GitHub, aby skonfigurować zdalny serwer git.

  6. Wprowadź wybraną nazwę nowego repozytorium GitHub lub naciśnij Enter, aby użyć nazwy domyślnej. azd tworzy nowe repozytorium w GitHub i konfiguruje je z niezbędnymi tajnymi danymi wymaganymi do uwierzytelnienia w Azure.

    Zrzut ekranu przedstawiający kroki konfiguracji potoku.

  7. Wprowadź y, aby przejść dalej, gdy zostaniesz poproszony przez azd o zatwierdzenie i wypchnięcie lokalnych zmian w celu uruchomienia skonfigurowanego potoku.

Eksploruj przepływ pracy i wdrażanie Actions GitHub

  1. Przejdź do nowego repozytorium GitHub, korzystając z linku, który został wyświetlony przez azd.

  2. Wybierz kartę Akcje, aby wyświetlić przepływy pracy repozytorium. Powinieneś zobaczyć nowy przepływ pracy albo uruchomiony, albo już ukończony. Wybierz przepływ pracy, aby wyświetlić kroki zadania i szczegóły w dziennikach przebiegu. Możesz na przykład rozwinąć kroki, takie jak Wdrażanie aplikacji , aby wyświetlić szczegóły ukończonej akcji.

    Zrzut ekranu przedstawiający kroki przepływu pracy akcji GitHub.

  3. Wybierz Zainstaluj aplikację, aby rozwinąć logi dla tego kroku. Powinny być wydrukowane dwa adresy URL punktów końcowych dla apiservice i webfrontend. Wybierz jeden z tych linków, aby otworzyć go na innej karcie przeglądarki i zapoznać się z wdrożoną aplikacją.

    Zrzut ekranu przedstawiający łącza wdrożonej aplikacji.

Gratulacje! Pomyślnie wdrożono projekt Aspire za pomocą Akcji Azure Developer CLI i GitHub.

Konfigurowanie katalogu roboczego dla rozwiązań obejmujących wiele projektów

W przypadku dodawania GitHub akcji do istniejącego rozwiązania obejmującego wiele projektów Aspire , w którym projekt AppHost nie znajduje się w katalogu głównym, może być konieczne skonfigurowanie parametru working-directory dla określonych kroków przepływu pracy. W tej sekcji wyjaśniono, kiedy i jak wprowadzić te korekty.

Gdy wymagana jest konfiguracja katalogu roboczego

Polecenie azd pipeline config generuje GitHub workflow Akcji, który zakłada, że projekt AppHost znajduje się w katalogu głównym repozytorium. Jednak w wielu rzeczywistych scenariuszach, zwłaszcza podczas dodawania Aspire do istniejących aplikacji, projekt AppHost może znajdować się w podkatalogu.

Jeśli na przykład struktura repozytorium wygląda następująco:

└───📂 MyAspireApp
    ├───📂 MyAspireApp.ApiService
    ├───📂 MyAspireApp.AppHost
    │    ├─── MyAspireApp.AppHost.csproj
    │    └─── AppHost.cs
    ├───📂 MyAspireApp.Web
    └─── MyAspireApp.sln

Wygenerowane kroki przepływu pracy dla aprowizowania infrastruktury i wdrażania aplikacji muszą być uruchamiane z MyAspireApp.AppHost katalogu, a nie z katalogu głównego repozytorium.

Aktualizowanie przepływu pracy dla Akcji

Po uruchomieniu azd pipeline configprogramu sprawdź wygenerowany plik przepływu pracy w pliku .github/workflows/azure-dev.yml. Zidentyfikuj kroki uruchamiające polecenia azd i w razie potrzeby dodaj parametr working-directory.

Oto przykład oryginalnych wygenerowanych kroków:

- name: Provision Infrastructure
  run: azd provision --no-prompt
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

- name: Deploy Application
  run: azd deploy --no-prompt
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

Zaktualizuj następujące kroki, aby uwzględnić working-directory parametr:

- name: Provision Infrastructure
  run: azd provision --no-prompt
  working-directory: ./MyAspireApp.AppHost
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

- name: Deploy Application
  run: azd deploy --no-prompt
  working-directory: ./MyAspireApp.AppHost
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

Znajdowanie poprawnego katalogu roboczego

Katalog roboczy powinien wskazywać na folder zawierający projekt Aspire AppHost (projekt zawierający plik azure.yaml, wygenerowany przez program azd init). Ten katalog można zidentyfikować, wykonując następujące czynności:

  1. Wyszukaj projekt, który ma odwołanie do pakietu Aspire.AppHost w pliku .csproj.
  2. Znajdź katalog zawierający plik azure.yaml .
  3. Znajdź projekt, do którego odwołuje się rozwiązanie, które organizuje inne usługi.

Uwaga / Notatka

Niektóre azd polecenia, takie jak azd init podczas konfigurowania potoku, mogą również wymagać parametru working-directory, jeżeli nie są uruchamiane z katalogu projektu AppHost.

Utwórz repozytorium i potok Azure DevOps

Ważne

Jak wspomniano w wymaganiach wstępnych, musisz utworzyć organizację usługi Azure DevOps lub wybrać istniejącą organizację, aby wykonać następujące kroki. Należy również utworzyć osobisty token dostępu (PAT) z uprawnieniami wymienionymi w wymaganiach wstępnych.

Azure Developer CLI umożliwia automatyczne tworzenie potoków z prawidłowymi konfiguracjami i uprawnieniami do aprowizowania i wdrażania zasobów w Azure. azd może również utworzyć repozytorium Azure Pipelines dla aplikacji, jeśli jeszcze nie istnieje.

  1. Uruchom polecenie azd pipeline config, aby skonfigurować potok wdrażania i bezpiecznie połączyć go z Azure. Uwzględnij opcję --provider azdo, aby użyć Azure Pipelines zamiast domyślnej konfiguracji GitHub Actions.

    azd pipeline config --provider azdo
    

    Ważne

    Przed uruchomieniem azd pipeline configprogramu upewnij się, że pomyślnie uruchomiono azd init , aby zainicjować projekt. Jeśli podczas wykonywania potoku wystąpią błędy, takie jak "brak projektu", zobacz sekcję rozwiązywania problemów, aby znaleźć rozwiązania.

  2. Wybierz subskrypcję, w ramach której chcesz aprowizować i wdrożyć zasoby aplikacji.

  3. Wybierz lokalizację Azure, która ma być używana dla zasobów.

  4. Wklej utworzony wcześniej osobisty token dostępu.

  5. Wprowadź nazwę organizacji Azure DevOps utworzoną lub wybraną.

  6. Po wyświetleniu monitu o utworzenie nowego repozytorium w bieżącym katalogu wprowadź i i naciśnij Enter.

  7. Po wyświetleniu monitu o skonfigurowanie zdalnego repozytorium Git wybierz pozycję Utwórz nowy projekt Azure DevOps.

  8. Wprowadź unikatową nazwę nowego repozytorium, na przykład aspireazd. azd tworzy nowe repozytorium w usłudze Azure Repos i konfiguruje je z użyciem niezbędnych tajnych danych wymaganych do uwierzytelniania z Azure.

    Zrzut ekranu przedstawiający kroki konfiguracji pipeline'u.

  9. Wprowadź y, aby przejść dalej, gdy zostaniesz poproszony przez azd o zatwierdzenie i wypchnięcie lokalnych zmian w celu uruchomienia skonfigurowanego potoku.

Zbadaj potok danych i aplikację

  1. Przejdź do nowego pipeline'u Azure, korzystając z linku statusu dostarczonego przez azd.

    Zrzut ekranu przedstawiający pomyślne uruchomienie Pipeline Azure.

  2. Wybierz ukończone uruchomienie potoku, aby wyświetlić podsumowanie.

    Zrzut ekranu przedstawiający widok podsumowania działania modułu Azure Pipelines.

  3. Wybierz link zadania w dolnej części widoku, aby przejść do szczegółów zadania.

    Zrzut ekranu przedstawiający szczegółowy widok przebiegu Azure Pipelines.

  4. Na stronie szczegółów zadania jest wyświetlany stan wszystkich poszczególnych etapów. Wybierz pozycję Aprowizacja infrastruktury, aby wyświetlić dzienniki dla tego etapu, które szczegółowo opisują wszystkie kroki aprowizacji wykonane przez azd. W dolnej części dzienników zanotuj końcowy komunikat o stanie i połącz się z aprowizowaną grupą zasobów Azure.

  5. Wybierz link na dole dzienników wyników aprowizacji, aby nawigować do nowej grupy zasobów Azure.

    Zrzut ekranu przedstawiający wdrożone zasoby Azure.

    Uwaga / Notatka

    Możesz również przejść bezpośrednio do nowej grupy zasobów, wyszukując ją w portalu Azure. Nazwa grupy zasobów będzie nazwą środowiska, którą podałeś do azd z prefiksem rg-.

  6. Wybierz kontenerową aplikację webfrontend, która hostuje część witryny dostępną publicznie.

  7. Na stronie szczegółów webfrontend wybierz link Application Url, aby otworzyć swoją witrynę w przeglądarce.

Ważne

Jeśli podczas wyświetlania witryny w przeglądarce wystąpi błąd 403 Forbidden, upewnij się, że ustawienia ruchu przychodzącego są poprawnie skonfigurowane. Na stronie aplikacji w portalu Azure przejdź do Ingress w lewym panelu nawigacyjnym. Upewnij się, że ruch przychodzący jest ustawiony na Akceptowanie ruchu z dowolnego miejsca i zapisz zmiany.

Gratulacje! Pomyślnie wdrożono projekt Aspire przy użyciu Azure Developer CLI i Azure Pipeline'y.

Rozwiązywanie problemów z wdrażaniem Azure potoku DevOps

W tej sekcji opisano typowe problemy, które mogą wystąpić podczas wdrażania Aspire projektów przy użyciu Azure potoków DevOps.

BŁĄD: żaden projekt nie istnieje; aby utworzyć nowy projekt, uruchom azd init

Problem: Podczas kroku aprowizacji potoku Azure DevOps występuje komunikat o błędzie:

ERROR: no project exists; to create a new project, run azd init

Przyczyna: Ten błąd występuje, ponieważ azd init polecenie generuje pliki (azure.yaml i .azure folder), które zwykle nie są zatwierdzane w repozytorium. Gdy potok działa w czystym środowisku, te pliki nie istnieją, co powoduje, że polecenia azd zawodzą.

Rozwiązanie: Istnieje kilka podejść do rozwiązania tego problemu:

azd init Dodaj krok do Azure potoku DevOps przed krokiem aprowizacji. Możesz użyć flag --from-code i --no-prompt, aby uruchomić polecenie nieinteraktywnie.

- task: AzureCLI@2
  displayName: 'Initialize Azure Developer CLI'
  inputs:
    azureSubscription: '$(AZURE_SERVICE_CONNECTION)'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      azd init --from-code --no-prompt
      azd env new $(AZURE_ENV_NAME) --location $(AZURE_LOCATION) --subscription $(AZURE_SUBSCRIPTION_ID)

Uwaga / Notatka

Jeśli napotkasz monity nawet z --no-prompt, spróbuj uruchomić azd init i azd env new jako oddzielne kroki lub użyć zmiennych środowiskowych, aby dostarczyć odpowiedzi na wszelkie monity. Flaga --from-code informuje azd o użyciu istniejącego kodu w bieżącym katalogu zamiast tworzenia nowego projektu na podstawie szablonu.

Pamiętaj, aby zdefiniować następujące zmienne w potoku danych:

  • AZURE_ENV_NAME: Nazwa środowiska (na przykład dev lub prod).
  • AZURE_LOCATION: Twój Azure region (na przykład eastus2).
  • AZURE_SUBSCRIPTION_ID: Identyfikator Azure subskrypcji.

Opcja 2. Zatwierdzanie wymaganych plików w repozytorium

Jeśli wolisz zatwierdzić wygenerowane pliki w repozytorium:

  1. Uruchom azd init lokalnie w katalogu projektu.
  2. Dodaj wygenerowany azure.yaml plik do repozytorium.
  3. Opcjonalnie dodaj .azure folder do repozytorium, jeśli chcesz zachować ustawienia specyficzne dla środowiska.

Uwaga / Notatka

Folder .azure zawiera konfigurację specyficzną dla środowiska, która może zawierać poufne informacje. Dokładnie przejrzyj zawartość przed zatwierdzeniem w repozytorium.

Opcja 3: Użyj konfiguracji potoku azd z odpowiednią inicjalizacją

Upewnij się, że uruchamiasz azd pipeline config --provider azdo po tym jak pomyślnie uruchomisz azd init lokalnie. To polecenie powinno skonfigurować rurociąg za pomocą właściwej konfiguracji, która automatycznie obsługuje inicjalizację.

Jeśli nadal występują problemy, sprawdź, czy:

  • Struktura projektu odpowiada temu, czego azd oczekuje w projektach Aspire.
  • Uruchamiasz polecenia z odpowiedniego katalogu (zazwyczaj tam, gdzie znajduje się twój plik .sln).
  • Połączenie Azure usługi DevOps ma niezbędne uprawnienia do tworzenia zasobów.

Uprzątnij zasoby

Uruchom następujące polecenie interfejsu wiersza polecenia Azure, aby usunąć grupę zasobów, gdy zasoby, które utworzyłeś Azure, przestały być potrzebne. Usunięcie grupy zasobów powoduje również usunięcie zawartych w niej zasobów.

az group delete --name <your-resource-group-name>

Aby dowiedzieć się więcej, zobacz Czyszczenie zasobów w Azure.