Nawiązywanie połączenia z usługą Azure SQL Database przy użyciu funkcji GitHub Actions
Dotyczy:Azure SQL Database
Rozpocznij pracę z funkcją GitHub Actions przy użyciu przepływu pracy, aby wdrożyć aktualizacje bazy danych w usłudze Azure SQL Database.
Wymagania wstępne
Należy wykonać:
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Repozytorium GitHub z pakietem dacpac (
Database.dacpac
). Jeśli nie masz konta usługi GitHub, zarejestruj się bezpłatnie. - An Azure SQL Database. Szybki start: tworzenie pojedynczej bazy danych usługi Azure SQL Database.
- Plik dacpac do zaimportowania do bazy danych.
Omówienie pliku przepływu pracy
Przepływ pracy funkcji GitHub Actions jest definiowany przez plik YAML (.yml) w /.github/workflows/
ścieżce w repozytorium. Ta definicja zawiera różne kroki i parametry tworzące przepływ pracy.
Plik zawiera dwie sekcje:
Sekcja | Zadania |
---|---|
Authentication | 1.1. Generowanie poświadczeń wdrożenia. |
Wdrażanie | 1. Wdróż bazę danych. |
Generowanie poświadczeń wdrożenia
Aby użyć Azure Login z OIDC, należy skonfigurować poświadczenie tożsamości federacyjnej w aplikacji Microsoft Entra lub przydzielonej tożsamości zarządzanej przez użytkownika.
Opcja 1: aplikacja Microsoft Entra
- Utwórz aplikację Microsoft Entra z jednostką usługi za pomocą portalu Azure , Azure CLI lub Azure PowerShell .
- Skopiuj wartości dla identyfikatora klienta, identyfikatora subskrypcjii identyfikatora katalogu (dzierżawcy), aby użyć ich później w przepływie pracy GitHub Actions.
- Przypisz odpowiednią rolę do jednostki usługi za pomocą portalu Azure , Azure CLIlub Azure PowerShell.
- Skonfiguruj poświadczenie tożsamości federacyjnej w aplikacji Microsoft Entra na potrzeby tokenów zaufania wystawionych przez funkcję GitHub Actions do repozytorium GitHub.
opcja 2: tożsamość zarządzana przypisana użytkownikowi
- Utwórz tożsamość zarządzaną przypisaną przez użytkownika.
- Skopiuj wartości identyfikatora klienta , identyfikatora subskrypcji oraz identyfikatora katalogu (dzierżawy) , aby użyć ich później w przepływie pracy GitHub Actions.
- Przypisz odpowiednią rolę swojej tożsamości zarządzanej przypisanej użytkownikowi.
- Skonfiguruj poświadczenie tożsamości federacyjnej w tożsamości zarządzanej przypisanej przez użytkownika do tokenów zaufania wystawionych przez funkcję GitHub Actions w repozytorium GitHub.
Kopiowanie parametry połączenia SQL
W witrynie Azure Portal przejdź do usługi Azure SQL Database i otwórz pozycję Ustawienia>Parametry połączenia. Skopiuj parametry połączenia ADO.NET. Zastąp wartości symboli zastępczych dla your_database
i your_password
.
Ustawisz parametry połączenia jako wpis tajny usługi GitHub. AZURE_SQL_CONNECTION_STRING
Konfigurowanie wpisów tajnych usługi GitHub
Musisz podać identyfikator klienta aplikacji , identyfikator katalogu (dzierżawy) oraz identyfikator subskrypcji do wykonania 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.
Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.
Wybierz pozycję Nowy wpis tajny repozytorium.
Notatka
Aby zwiększyć bezpieczeństwo przepływu pracy w repozytoriach publicznych, użyj sekretów środowiska zamiast sekretów repozytorium. Jeśli środowisko wymaga zatwierdzenia, zadanie nie może uzyskać dostępu do tajnych danych środowiska, dopóki nie zostanie zatwierdzone przez jednego z wymaganych recenzentów.
Utwórz wpisy tajne dla ,
AZURE_CLIENT_ID
AZURE_TENANT_ID
iAZURE_SUBSCRIPTION_ID
. Skopiuj te wartości ze swojej aplikacji Microsoft Entra lub z tożsamości zarządzanej przypisanej przez użytkownika do sekretów GitHub.Wpis tajny usługi GitHub Aplikacja Microsoft Entra lub tożsamość zarządzana przypisana przez użytkownika AZURE_CLIENT_ID Identyfikator klienta AZURE_SUBSCRIPTION_ID Identyfikator subskrypcji AZURE_TENANT_ID Identyfikator katalogu (dzierżawcy) Notatka
Ze względów bezpieczeństwa zalecamy używanie GitHub Secrets zamiast przekazywania wartości bezpośrednio do workflow.
Dodawanie wpisu tajnego parametry połączenia SQL
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.
Wklej parametry połączenia SQL. Nadaj wpisowi tajnym nazwę
AZURE_SQL_CONNECTION_STRING
.Wybierz przycisk Add secret (Dodaj wpis tajny).
Dodawanie przepływu pracy
Przejdź do pozycji Akcje dla repozytorium GitHub.
Wybierz pozycję Skonfiguruj przepływ pracy samodzielnie.
Usuń wszystko po
on:
sekcji pliku przepływu pracy. Na przykład pozostały przepływ pracy może wyglądać następująco.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ]
Zmień nazwę przepływu pracy
SQL for GitHub Actions
i dodaj akcje wyewidencjonowania i logowania. Te akcje sprawdzają kod witryny i uwierzytelniają się na platformie Azure przy użyciu utworzonego wcześniej wpisu tajnegoAZURE_CREDENTIALS
usługi GitHub.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Użyj akcji Wdrażanie usługi Azure SQL, aby nawiązać połączenie z wystąpieniem SQL. Pakiet dacpac (
Database.dacpac
) powinien znajdować się na poziomie głównym repozytorium. Użyj utworzonego wcześniej wpisu tajnegoAZURE_SQL_CONNECTION_STRING
usługi GitHub.- uses: azure/sql-action@v2 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'Publish'
Ukończ przepływ pracy, dodając akcję w celu wylogowania się z platformy Azure. Oto ukończony przepływ pracy. Plik zostanie wyświetlony w
.github/workflows
folderze repozytorium.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} # Azure logout - name: logout run: | az logout
Przeglądanie wdrożenia
Przejdź do pozycji Akcje dla repozytorium GitHub.
Otwórz pierwszy wynik, aby wyświetlić szczegółowe dzienniki przebiegu przepływu pracy.
Czyszczenie zasobów
Gdy baza danych Azure SQL Database i repozytorium nie są już potrzebne, wyczyść wdrożone zasoby, usuwając grupę zasobów i repozytorium GitHub.