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:
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Konto usługi GitHub. Jeśli nie masz takiego konta, zarejestruj się bezpłatnie.
- Repozytorium GitHub do przechowywania szablonów usługi Resource Manager i plików przepływu pracy. Aby go utworzyć, zobacz Tworzenie nowego repozytorium.
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.
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-id
elementemappId
. Elementid
jestAPPLICATION-OBJECT-ID
używany do tworzenia poświadczeń federacyjnych przy użyciu wywołań interfejsu API programu Graph. Zapisz wartość do użycia jakoAZURE_CLIENT_ID
wpis tajny usługi GitHub później.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ługiid
jest używana jako wartość argumentu--assignee-object-id
waz 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 doAZURE_TENANT_ID
późniejszego użycia.az ad sp create --id $appId
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
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
lubrepo: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
.
- Zadania w środowisku funkcji GitHub Actions:
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" ] }
- Zastąp element
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ą.
W usłudze GitHub przejdź do repozytorium.
Przejdź do pozycji Ustawienia w menu nawigacji.
Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.
Wybierz pozycję Nowy wpis tajny repozytorium.
Utwórz wpisy tajne dla ,
AZURE_CLIENT_ID
AZURE_TENANT_ID
iAZURE_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 Zapisz każdy wpis tajny, wybierając pozycję Dodaj wpis tajny.
Dodawanie wpisów tajnych usługi GitHub dla kompilacji
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.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 kolumnieSubscriptionId
.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:
infraworkflow.yml
Otwórz plik w.github/workflows
repozytorium.Zaktualizuj wartość
AZURE_RESOURCE_GROUP
do nazwy grupy zasobów.Ustaw dane wejściowe dla
region
w akcjach wdrażania usługi ARM w twoim regionie.- Otwórz
templates/azuredeploy.resourcegroup.parameters.json
i zaktualizujrgLocation
właściwość w twoim regionie.
- Otwórz
Przejdź do pozycji Akcje i wybierz pozycję Uruchom przepływ pracy.
Sprawdź, czy akcja została pomyślnie uruchomiona, sprawdzając zielony znacznik wyboru na stronie Akcje .
Po utworzeniu zasobów przejdź do pozycji Akcje, wybierz pozycję Utwórz zasoby platformy Azure, wyłącz przepływ pracy.
Tworzenie wpisu tajnego profilu publikowania
W witrynie Azure Portal otwórz nową tymczasową usługę App Service (miejsce) utworzoną za pomocą
Create Azure Resources
przepływu pracy.Wybierz pozycję Pobierz profil publikowania.
Otwórz plik profilu publikowania w edytorze tekstów i skopiuj jego zawartość.
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:
workflow.yaml
Otwórz plik w.github/workflows
repozytorium.Sprawdź, czy zmienne środowiskowe dla
AZURE_RESOURCE_GROUP
,AZURE_WEBAPP_NAME
,SQLSERVER_NAME
iDATABASE_NAME
są zgodne z tymi w plikuinfraworkflow.yml
.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.