Udostępnij przez


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

Potrzebujesz:

Omówienie pliku przepływu pracy

Przepływ pracy GitHub Actions jest definiowany przez plik YAML (.yml) w ścieżce /.github/workflows/ w repozytorium. Ten plik zawiera kroki i parametry, które tworzą przepływ pracy.

Plik zawiera dwie sekcje:

Sekcja Zadania
Authentication 1. Generowanie poświadczeń wdrożenia.
Wdrażanie 2. 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

Kopiowanie parametry połączenia SQL

W usłudze Azure Portal przejdź do swojej bazy danych Azure SQL Database i otwórz Ustawienia>Ciągi połączeń. Skopiuj parametry połączenia ADO.NET. Zastąp wartości zastępcze dla your_database i your_password.

Ustawisz parametry połączenia jako sekret GitHub. AZURE_SQL_CONNECTION_STRING

Konfigurowanie tajnych danych w 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 tajnych danych GitHub jest bezpieczniejszą opcją.

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

  2. Wybierz Bezpieczeństwo > Sekrety i zmienne > Akcje.

    Zrzut ekranu dodawania tajemnicy

  3. Wybierz opcję Nowy sekret 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.

  4. Utwórz wpisy tajne dla AZURE_CLIENT_ID, AZURE_TENANT_ID i AZURE_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.

    Sekret 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.

Dodaj tajny klucz połączenia SQL

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

  2. Przejdź do pozycji Ustawienia w menu nawigacji.

  3. Wybierz Zabezpieczenia > Tajne wpisy i zmienne > Akcje.

  4. Wybierz pozycję Nowy sekret repozytorium.

  5. Wklej parametry połączenia SQL. Nadaj wpisowi tajnym nazwę AZURE_SQL_CONNECTION_STRING.

  6. Wybierz przycisk Add secret (Dodaj wpis tajny).

Dodaj swój przepływ pracy

  1. Przejdź do sekcji Akcje dla swojego repozytorium GitHub.

  2. Wybierz pozycję Skonfiguruj przepływ pracy samodzielnie.

  3. 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 ]
    
  4. Zmień nazwę przepływu pracy SQL for GitHub Actions i dodaj akcje check-out oraz logowania. Te akcje sprawdzają kod witryny i uwierzytelniają się w Azure przy użyciu utworzonego wcześniej sekretu GitHub AZURE_CREDENTIALS.

        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 }}
    

  1. Użyj akcji "Azure SQL Deploy", aby połączyć się z instancją SQL. Pakiet dacpac (Database.dacpac) powinien znajdować się na poziomie głównym repozytorium. Użyj utworzonego wcześniej sekretu AZURE_SQL_CONNECTION_STRING GitHub.

    - uses: azure/sql-action@v2.3
      with:
        connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
        path: './Database.dacpac'
        action: 'publish'
    
  2. 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 }}
             - uses: azure/sql-action@v2.3
               with:
                connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
                path: './Database.dacpac'
                action: 'publish'
    
                # Azure logout 
                 - name: logout
                   run: |
                     az logout
    

Przejrzyj swoje wdrożenie

  1. Przejdź do sekcji Akcje dla repozytorium GitHub.

  2. Otwórz pierwszy wynik, aby wyświetlić szczegółowe dzienniki przebiegu przepływu pracy.

    Dziennik przebiegów akcji usługi GitHub

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.

Następne kroki