Udostępnij przez


Szybki start: nawiązywanie połączenia z usługą Azure Database for MySQL za pomocą funkcji GitHub Actions — serwer elastyczny

Rozpocznij pracę z funkcją GitHub Actions przy użyciu przepływu pracy, aby wdrożyć aktualizacje bazy danych na serwerze elastycznym usługi Azure Database for MySQL.

Wymagania wstępne

Potrzebne będą następujące elementy:

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

Opcja 2. Tożsamość zarządzana przypisana przez użytkownika

Kopiowanie parametry połączenia MySQL

W witrynie Azure Portal przejdź do wystąpienia serwera elastycznego usługi Azure Database for MySQL 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.

Ważne

  • W przypadku pojedynczego serwera usługi Azure Database for MySQL użyj identyfikatora Uid=adminusername@servername. Zwróć uwagę, że @servername jest wymagany.
  • W przypadku serwera elastycznego usługi Azure Database for MySQL użyj identyfikatora Uid=adminusername bez .@servername

Użyjesz parametry połączenia jako wpisu tajnego usługi GitHub.

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

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

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

    Zrzut ekranu przedstawiający dodawanie wpisu tajnego

  3. Wybierz pozycję Nowy wpis tajny repozytorium.

    Uwaga / 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_IDAZURE_TENANT_IDi 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.

    Wpis tajny usługi GitHub Aplikacja Microsoft Entra lub tożsamość zarządzana przypisana przez użytkownika
    AZURE_CLIENT_ID ID klienta
    AZURE_SUBSCRIPTION_ID Identyfikator subskrypcji
    AZURE_TENANT_ID Identyfikator katalogu (dzierżawcy)

    Uwaga / Notatka

    Ze względów bezpieczeństwa zalecamy używanie GitHub Secrets zamiast przekazywania wartości bezpośrednio do workflow.

Dodawanie przepływu pracy

  1. Przejdź do pozycji Akcje dla 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: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. Zmień nazwę przepływu pracy MySQL 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 tajnego AZURE_CREDENTIALS usługi GitHub.

    name: MySQL 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 }}
    
  5. Użyj akcji Wdrażanie usługi Azure MySQL, aby nawiązać połączenie z wystąpieniem programu MySQL. Zastąp MYSQL_SERVER_NAME ciąg nazwą serwera. Plik danych MySQL powinien mieć nazwę data.sql na poziomie głównym repozytorium.

    - uses: azure/mysql@v1
      with:
        server-name: MYSQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }}
        sql-file: './data.sql'
    
  6. 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: MySQL 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/mysql@v1
                with:
                  server-name: MYSQL_SERVER_NAME
                  connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }}
                  sql-file: './data.sql'
    
                # Azure logout
              - name: logout
                run: |
                  az logout
    

Przeglądanie wdrożenia

  1. Przejdź do pozycji Akcje dla repozytorium GitHub.

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

    Zrzut ekranu przedstawiający uruchamianie dziennika funkcji GitHub Actions.

Czyszczenie zasobów

Gdy baza danych i repozytorium serwera elastycznego usługi Azure Database for MySQL nie są już potrzebne, wyczyść wdrożone zasoby, usuwając grupę zasobów i repozytorium GitHub.

Następny krok