Udostępnij za pośrednictwem


Samouczek: wdrażanie w usłudze App Service i nawiązywanie połączenia z bazą danych przy użyciu funkcji GitHub Actions

Dowiedz się, jak skonfigurować przepływ pracy funkcji GitHub Actions w celu wdrożenia aplikacji ASP.NET Core za pomocą zaplecza usługi Azure SQL Database . Po zakończeniu masz aplikację ASP.NET działającą na platformie Azure i połączoną z usługą SQL Database. Najpierw użyjesz szablonu usługi ARM do utworzenia zasobów.

W tym samouczku nie są używane kontenery. Jeśli chcesz wdrożyć w konteneryzowanej aplikacji ASP.NET Core, zobacz Używanie funkcji GitHub Actions do wdrażania w usłudze App Service for Containers i nawiązywania połączenia z bazą danych.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Używanie przepływu pracy funkcji GitHub Actions do dodawania zasobów do platformy Azure przy użyciu szablonu usługi Azure Resource Manager (szablonu usługi ARM)
  • Tworzenie aplikacji ASP.NET Core za pomocą przepływu pracy funkcji GitHub Actions

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Wymagania wstępne

Do ukończenia tego samouczka potrzebne są następujące elementy:

Pobierz przykład

Rozwidlenie przykładowego projektu w repozytorium Przykładów platformy Azure.

https://github.com/Azure-Samples/dotnetcore-sqldb-ghactions

Tworzenie grupy zasobów

Otwórz usługę Azure Cloud Shell pod adresem https://shell.azure.com. Alternatywnie możesz użyć interfejsu wiersza polecenia platformy Azure, jeśli zainstalowano go lokalnie. (Aby uzyskać więcej informacji na temat usługi Cloud Shell, zobacz Omówienie usługi Cloud Shell).

az group create --name {resource-group-name} --location {resource-group-location}

Generowanie poświadczeń wdrożenia

OpenID Connect to metoda uwierzytelniania, która używa tokenów krótkotrwałych. Konfigurowanie programu OpenID Connect za pomocą funkcji GitHub Actions jest bardziej złożonym procesem, który oferuje zabezpieczenia ze wzmocnionymi zabezpieczeniami.

  1. Jeśli nie masz istniejącej aplikacji, zarejestruj nową aplikację Microsoft Entra ID i jednostkę usługi, która może uzyskiwać dostęp do zasobów.

    az ad app create --display-name myApp
    

    To polecenie zwróci kod JSON z elementem , który jest twoim client-idelementem appId . Element id jest APPLICATION-OBJECT-ID używany do tworzenia poświadczeń federacyjnych przy użyciu wywołań interfejsu API programu Graph. Zapisz wartość do użycia jako AZURE_CLIENT_ID wpis tajny usługi GitHub później.

  2. Tworzenie jednostki usługi. Zastąp element $appID identyfikatorem appId z danych wyjściowych JSON.

    To polecenie generuje dane wyjściowe JSON z jednostką usługi id. Jednostka usługi id jest używana jako wartość argumentu --assignee-object-id w az role assignment create poleceniu w następnym kroku.

    Skopiuj element appOwnerOrganizationId z danych wyjściowych JSON, aby użyć go jako wpisu tajnego usługi GitHub do AZURE_TENANT_ID późniejszego użycia.

     az ad sp create --id $appId
    
  3. Utwórz nowe przypisanie roli dla jednostki usługi. Domyślnie przypisanie roli będzie powiązane z domyślną subskrypcją. Zastąp $subscriptionId ciąg identyfikatorem subskrypcji, $resourceGroupName nazwą grupy zasobów i $servicePrincipalId nowo utworzonym identyfikatorem jednostki usługi.

    az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id  $servicePrincipalId --assignee-principal-type ServicePrincipal --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName
    
  4. Uruchom następujące polecenie, aby utworzyć nowe poświadczenie tożsamości federacyjnej dla aplikacji Microsoft Entra ID.

    • Zastąp element APPLICATION-OBJECT-ID objectId (wygenerowany podczas tworzenia aplikacji) dla aplikacji Microsoft Entra ID.
    • Ustaw wartość dla elementu , CREDENTIAL-NAME aby odwoływać się później.
    • Ustaw wartość subject. Wartość tej wartości jest definiowana przez usługę GitHub w zależności od przepływu pracy:
      • Zadania w środowisku funkcji GitHub Actions: repo:< Organization/Repository >:environment:< Name >
      • W przypadku zadań, które nie są powiązane ze środowiskiem, dołącz ścieżkę ref dla gałęzi/tagu na podstawie ścieżki ref używanej do wyzwalania przepływu pracy: repo:< Organization/Repository >:ref:< ref path>. Na przykład: repo:n-username/ node_express:ref:refs/heads/my-branch lub repo:n-username/ node_express:ref:refs/tags/my-tag.
      • W przypadku przepływów pracy wyzwalanych przez zdarzenie żądania ściągnięcia: repo:< Organization/Repository >:pull_request.
    az ad app federated-credential create --id <APPLICATION-OBJECT-ID> --parameters credential.json
    ("credential.json" contains the following content)
    {
        "name": "<CREDENTIAL-NAME>",
        "issuer": "https://token.actions.githubusercontent.com",
        "subject": "repo:octo-org/octo-repo:environment:Production",
        "description": "Testing",
        "audiences": [
            "api://AzureADTokenExchange"
        ]
    }
    

Aby dowiedzieć się, jak utworzyć aplikację usługi Active Directory, jednostkę usługi i poświadczenia federacyjne w witrynie Azure Portal, zobacz Connect GitHub and Azure (Łączenie usług GitHub i Azure).

Konfigurowanie wpisu tajnego usługi GitHub na potrzeby uwierzytelniania

Musisz podać identyfikator klienta aplikacji, identyfikator dzierżawy i identyfikator subskrypcji do akcji logowania. Te wartości można podać bezpośrednio w przepływie pracy lub przechowywać w wpisach tajnych usługi GitHub i odwoływać się do nich w przepływie pracy. Zapisanie wartości jako wpisów tajnych usługi GitHub jest bezpieczniejszą opcją.

  1. W usłudze GitHub przejdź do repozytorium.

  2. Przejdź do pozycji Ustawienia w menu nawigacji.

  3. Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.

    Zrzut ekranu przedstawiający dodawanie wpisu tajnego

  4. Wybierz pozycję Nowy wpis tajny repozytorium.

  5. Utwórz wpisy tajne dla , AZURE_CLIENT_IDAZURE_TENANT_IDi AZURE_SUBSCRIPTION_ID. Użyj tych wartości z aplikacji Microsoft Entra dla wpisów tajnych usługi GitHub:

    Wpis tajny usługi GitHub Aplikacja Microsoft Entra
    AZURE_CLIENT_ID Identyfikator aplikacji (klient)
    AZURE_TENANT_ID Identyfikator katalogu (dzierżawcy)
    AZURE_SUBSCRIPTION_ID Identyfikator subskrypcji
  6. Zapisz każdy wpis tajny, wybierając pozycję Dodaj wpis tajny.

Dodawanie wpisów tajnych usługi GitHub dla kompilacji

  1. Utwórz dwa nowe wpisy tajne w repozytorium GitHub dla i SQLADMIN_PASS SQLADMIN_LOGIN. Upewnij się, że wybrano złożone hasło. W przeciwnym razie krok tworzenia serwera bazy danych SQL zakończy się niepowodzeniem. Nie będzie można ponownie uzyskać dostępu do tego hasła, więc zapisz je oddzielnie.

  2. Utwórz wpis AZURE_SUBSCRIPTION_ID tajny dla identyfikatora subskrypcji platformy Azure. Jeśli nie znasz identyfikatora subskrypcji, użyj tego polecenia w usłudze Azure Shell, aby go znaleźć. Skopiuj wartość w kolumnie SubscriptionId .

    az account list -o table
    

Tworzenie zasobów platformy Azure

Przepływ pracy tworzenia zasobów platformy Azure uruchamia szablon usługi ARM w celu wdrożenia zasobów na platformie Azure. Przepływ pracy:

  • Wyewidencjonuj kod źródłowy za pomocą akcji Wyewidencjonuj.
  • Loguje się do platformy Azure za pomocą akcji Azure Login i zbiera informacje o środowisku i zasobie platformy Azure.
  • Wdraża zasoby za pomocą akcji Wdrażanie usługi Azure Resource Manager.

Aby uruchomić przepływ pracy tworzenia zasobów platformy Azure:

  1. infraworkflow.yml Otwórz plik w .github/workflows repozytorium.

  2. Zaktualizuj wartość AZURE_RESOURCE_GROUP do nazwy grupy zasobów.

  3. Ustaw dane wejściowe dla region w akcjach wdrażania usługi ARM w twoim regionie.

    1. Otwórz templates/azuredeploy.resourcegroup.parameters.json i zaktualizuj rgLocation właściwość w twoim regionie.
  4. Przejdź do pozycji Akcje i wybierz pozycję Uruchom przepływ pracy.

    Uruchom przepływ pracy funkcji GitHub Actions, aby dodać zasoby.

  5. Sprawdź, czy akcja została pomyślnie uruchomiona, sprawdzając zielony znacznik wyboru na stronie Akcje .

    Pomyślne uruchomienie zasobów tworzenia.

  6. Po utworzeniu zasobów przejdź do pozycji Akcje, wybierz pozycję Utwórz zasoby platformy Azure, wyłącz przepływ pracy.

    Wyłącz przepływ pracy Tworzenie zasobów platformy Azure.

Tworzenie wpisu tajnego profilu publikowania

  1. W witrynie Azure Portal otwórz nową tymczasową usługę App Service (miejsce) utworzoną za pomocą Create Azure Resources przepływu pracy.

  2. Wybierz pozycję Pobierz profil publikowania.

  3. Otwórz plik profilu publikowania w edytorze tekstów i skopiuj jego zawartość.

  4. Utwórz nowy wpis tajny usługi GitHub dla programu AZURE_WEBAPP_PUBLISH_PROFILE.

Kompilowanie i wdrażanie aplikacji

Aby uruchomić przepływ pracy kompilacji i wdrożenia:

  1. workflow.yaml Otwórz plik w .github/workflows repozytorium.

  2. Sprawdź, czy zmienne środowiskowe dla AZURE_RESOURCE_GROUP, AZURE_WEBAPP_NAME, SQLSERVER_NAMEi DATABASE_NAME są zgodne z tymi w pliku infraworkflow.yml.

  3. Sprawdź, czy aplikacja została wdrożona, odwiedzając adres URL w danych wyjściowych zamiany na miejsce produkcyjne. Powinna zostać wyświetlona przykładowa aplikacja My TodoList.

Czyszczenie zasobów

Jeśli nie potrzebujesz już przykładowego projektu, usuń grupę zasobów w witrynie Azure Portal i usuń repozytorium w witrynie GitHub.

Następne kroki