Udostępnij za pośrednictwem


Importowanie plików konfiguracji z repozytorium GitHub do magazynu App Configuration

Jeśli konfiguracja została przyjęta jako kod i zarządzasz konfiguracjami w usłudze GitHub, możesz użyć funkcji GitHub Actions, aby automatycznie zaimportować pliki konfiguracji z repozytorium GitHub do magazynu usługi App Configuration. Dzięki temu można wprowadzać zmiany w plikach konfiguracji w zwykły sposób, jednocześnie uzyskując korzyści ze sklepu App Configuration, takie jak:

  • Scentralizowana konfiguracja poza kodem.
  • Aktualizowanie konfiguracji bez ponownego wdrażania całej aplikacji.
  • Integracja z usługami, takimi jak usługa aplikacja systemu Azure i funkcje.

Przepływ pracy akcji usługi GitHub definiuje zautomatyzowany proces w repozytorium GitHub. Aby zaimportować plik konfiguracji z repozytorium GitHub do magazynu konfiguracji aplikacja systemu Azure, użyj akcji GitHub interfejsu wiersza polecenia platformy Azure, która zapewnia pełne możliwości importowania plików do magazynu usługi App Configuration.

Uwierzytelnianie

Aby zaimportować konfiguracje do magazynu konfiguracji aplikacja systemu Azure, możesz uwierzytelnić się przy użyciu jednej z następujących metod:

Korzystanie z identyfikatora Entra firmy Microsoft

Zalecanym sposobem uwierzytelniania jest użycie identyfikatora Entra firmy Microsoft, który umożliwia bezpieczne łączenie się z zasobami platformy Azure. Proces uwierzytelniania można zautomatyzować przy użyciu akcji Azure Login GitHub.

Logowanie do platformy Azure umożliwia uwierzytelnianie przy użyciu jednostek usługi za pomocą wpisów tajnych lub openID Connect przy użyciu poświadczeń tożsamości federacyjnej. W tym przykładzie użyjesz narzędzia OpenID Connect, aby zalogować się do sklepu App Configuration.

Używanie identyfikatora logowania platformy Azure z programem OpenID Connect

Aby użyć usługi Azure Login z usługą OpenID Connect, musisz wykonać następujące kroki:

  1. Skonfiguruj aplikację Firmy Microsoft Entra przy użyciu jednostki usługi.
  2. Przypisz aplikację Firmy Microsoft Entra rolę Właściciel danych konfiguracji aplikacji, aby umożliwić usłudze GitHub odczytywanie i zapisywanie w magazynie usługi App Configuration.
  3. Podaj identyfikator klienta aplikacji Microsoft Entra, identyfikator dzierżawy i identyfikator subskrypcji do akcji logowania. Te wartości można podać bezpośrednio w przepływie pracy lub przechowywać jako wpisy tajne usługi GitHub w celu uzyskania lepszych zabezpieczeń. W poniższym przykładzie te wartości są ustawiane jako wpisy tajne. Aby uzyskać więcej informacji na temat używania wpisów tajnych w usłudze GitHub, zobacz Używanie wpisów tajnych w funkcji GitHub Actions.

Aby rozpocząć korzystanie z tej akcji usługi GitHub, przejdź do repozytorium i wybierz kartę Akcje . Wybierz pozycję Nowy przepływ pracy, a następnie skonfiguruj przepływ pracy samodzielnie. Na koniec wyszukaj w witrynie Marketplace frazę "Azure Login". Po znalezieniu tej akcji kliknij akcję i skopiuj podany fragment kodu do pliku przepływu pracy.

Wybieranie karty Akcja

Wybieranie akcji logowania platformy Azure

Przykład użycia identyfikatora Entra firmy Microsoft

# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions: 
  id-token: write
  contents: read
 
jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps: 
      - name: Azure login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

Używanie parametrów połączenia

Alternatywnie możesz uwierzytelnić się, przekazując parametry połączenia bezpośrednio do polecenia interfejsu wiersza polecenia platformy Azure. Ta metoda obejmuje pobranie parametry połączenia z witryny Azure Portal i użycie jej w poleceniach lub skryptach.

Aby rozpocząć, możesz znaleźć parametry połączenia w obszarze Ustawienia dostępu sklepu App Configuration w witrynie Azure Portal.

Następnie ustaw tę parametry połączenia jako zmienną wpisu tajnego w repozytorium GitHub. Aby uzyskać więcej informacji na temat używania wpisów tajnych w usłudze GitHub, zobacz Używanie wpisów tajnych w funkcji GitHub Actions.

Przykład użycia parametry połączenia

on: 
  push: 
    branches: 
      - 'main' 
    paths: 
      - 'appsettings.json'
 
jobs: 
  syncconfig: 
    runs-on: ubuntu-latest
    
    # pass the secret variable as an environment variable to access it in your CLI action.
    env:
      CONNECTION_STRING: ${{ secrets.<ConnectionString> }}

Importowanie pliku konfiguracji

Akcja usługi GitHub interfejsu wiersza polecenia platformy Azure służy do importowania pliku konfiguracji do magazynu usługi App Configuration. Aby rozpocząć korzystanie z tej akcji usługi GitHub, przejdź do repozytorium i wybierz kartę Akcje . Wybierz pozycję Nowy przepływ pracy, a następnie skonfiguruj przepływ pracy samodzielnie. Na koniec wyszukaj w witrynie Marketplace frazę "Akcja interfejsu wiersza polecenia platformy Azure". Po znalezieniu tej akcji kliknij akcję i skopiuj podany fragment kodu do pliku przepływu pracy.

Wybieranie akcji interfejsu wiersza polecenia platformy Azure

W poniższym przykładzie użyjesz akcji interfejsu wiersza polecenia platformy Azure, aby zaimportować pliki konfiguracji do magazynu konfiguracji aplikacja systemu Azure, gdy zmiana zostanie wypchnięta do appsettings.json. Gdy deweloper wypchnie zmianę appsettings.jsondo , skrypt przekazany do akcji interfejsu wiersza polecenia platformy Azure aktualizuje magazyn App Configuration przy użyciu nowych wartości.

Sekcja w tym przepływie pracy określa, że akcja jest wyzwalana na wypchnięciu zawierającym appsettings.json do gałęzi głównej. Sekcja zadań zawiera listę zadań uruchamianych po wyzwoleniu akcji. Akcja sprawdza odpowiednie pliki i aktualizuje magazyn App Configuration.

on: 
  push: 
    branches: 
      - 'main' 
    paths: 
      - 'appsettings.json'

# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions: 
  id-token: write
  contents: read

jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps: 
      - name: Azure login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      # checkout done so that files in the repo can be read by the sync 
      - uses: actions/checkout@v1 
      - uses: azure/cli@v2
        with: 
          azcliversion: latest
          inlineScript: |
            az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --yes

Aby uzyskać więcej informacji na temat poleceń importowania interfejsu wiersza polecenia konfiguracji aplikacja systemu Azure, zobacz dokumentację interfejsu wiersza polecenia aplikacja systemu Azure Configuration.

Używanie etykiety dynamicznej podczas importowania

Użycie etykiety dynamicznej w każdym importowaniu jest dobrym sposobem na zachowanie jasnej i precyzyjnej kontroli wersji konfiguracji. Umożliwia ona unikatowe zidentyfikowanie każdego importu do magazynu usługi App Configuration, co ułatwia mapowania zmian kodu na aktualizacje konfiguracji.

Przykład użycia etykiety dynamicznej podczas importowania

W poniższym przykładzie wszystkie zaimportowane wartości kluczy będą miały unikatową etykietę na podstawie skrótu zatwierdzenia.

 jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps:      
      # Creates a label based on the branch name and the first 8 characters          
      # of the commit hash 
      - id: determine_label 
        run: echo ::set-output name=LABEL::"${GITHUB_REF#refs/*/}/${GITHUB_SHA:0:8}" 
      # checkout done so that files in the repo can be read by the sync 
      - uses: actions/checkout@v1 
      - uses: azure/cli@v2
        with: 
          azcliversion: latest
          inlineScript: |
            az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --label ${{ steps.determine_label.outputs.LABEL }} --yes

Następne kroki

Aby dowiedzieć się, jak używać poleceń importowania interfejsu wiersza polecenia, zapoznaj się z naszym kompleksowym przewodnikiem dotyczącym poleceń importowania interfejsu wiersza polecenia platformy Azure.

Aby dowiedzieć się więcej na temat różnych profilów zawartości plików, zobacz aplikacja systemu Azure Obsługa konfiguracji plików konfiguracji.