Импорт файлов конфигурации из репозитория GitHub в хранилище Конфигурация приложений

Если вы приняли конфигурацию в качестве кода и управляете конфигурациями в GitHub, вы можете использовать GitHub Actions для автоматического импорта файлов конфигурации из репозитория GitHub в хранилище Конфигурация приложений. Это позволяет вносить изменения в файлы конфигурации, как правило, при получении Конфигурация приложений преимуществ хранения, таких как:

  • Централизованная конфигурация за пределами кода.
  • Обновление конфигурации без повторного развертывания всего приложения.
  • Интеграция со службами, такими как приложение Azure служба и функции.

Рабочий процесс GitHub Action определяет автоматизированный процесс в репозитории GitHub. Чтобы импортировать файл конфигурации из репозитория GitHub в хранилище Конфигурация приложений Azure, используйте действие Azure CLI GitHub, которое предоставляет полные возможности для импорта файлов в хранилище Конфигурация приложений.

Проверка подлинности

Чтобы импортировать конфигурации в хранилище Конфигурация приложений Azure, можно выполнить проверку подлинности с помощью одного из следующих методов:

Использование идентификатора Microsoft Entra

Рекомендуемый способ проверки подлинности — использовать идентификатор Microsoft Entra, который позволяет безопасно подключаться к ресурсам Azure. Процесс проверки подлинности можно автоматизировать с помощью действия GitHub для входа Azure.

Имя входа Azure позволяет выполнять проверку подлинности с помощью субъектов-служб с секретами или OpenID Connect с помощью учетных данных федеративного удостоверения. В этом примере вы будете использовать OpenID Connect для входа в хранилище Конфигурация приложений.

Использование имени входа Azure с OpenID Connect

Чтобы использовать azure Login с OpenID Connect, вам потребуется:

  1. Настройте приложение Microsoft Entra с помощью субъекта-службы.
  2. Назначьте приложению Microsoft Entra роль владельца данных Конфигурация приложений, чтобы разрешить действие GitHub читать и записывать в хранилище Конфигурация приложений.
  3. Укажите идентификатор клиента приложения Microsoft Entra, идентификатор клиента и идентификатор подписки для действия входа. Эти значения можно предоставить непосредственно в рабочем процессе или хранить как секреты GitHub для повышения безопасности. В приведенном ниже примере эти значения задаются как секреты. Дополнительные сведения об использовании секретов в GitHub см. в разделе "Использование секретов" в GitHub Actions.

Чтобы приступить к работе с этим действием GitHub, перейдите в репозиторий и выберите вкладку Actions (Действия). Щелкните New workflow (Создать рабочий процесс), затем выберите Set up a workflow yourself (Настроить рабочий процесс самостоятельно). Наконец, выполните поиск в Marketplace по запросу "Имя входа Azure". Найдя его, щелкните действие и скопируйте предоставленный фрагмент кода в файл рабочего процесса.

Выбор вкладки

Выберите действие входа Azure

Пример использования идентификатора Microsoft Entra

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

использование строки подключения;

Кроме того, можно пройти проверку подлинности, передав строка подключения непосредственно в команду Azure CLI. Этот метод включает получение строка подключения из портал Azure и его использование в командах или сценариях.

Чтобы приступить к работе, можно найти строка подключения в разделе "Параметры доступа" хранилища Конфигурация приложений в портал Azure.

Затем задайте этот строка подключения в качестве секретной переменной в репозитории GitHub. Дополнительные сведения об использовании секретов в GitHub см. в разделе "Использование секретов" в GitHub Actions..

Пример использования строка подключения

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

Импорт файла конфигурации

Вы используете действие Azure CLI GitHub для импорта файла конфигурации в хранилище Конфигурация приложений. Чтобы приступить к работе с этим действием GitHub, перейдите в репозиторий и выберите вкладку Actions (Действия). Щелкните New workflow (Создать рабочий процесс), затем выберите Set up a workflow yourself (Настроить рабочий процесс самостоятельно). Наконец, выполните поиск в Marketplace по запросу "Действие Azure CLI". Найдя его, щелкните действие и скопируйте предоставленный фрагмент кода в файл рабочего процесса.

Выберите действие Azure CLI

В следующем примере используется действие Azure CLI для импорта файлов конфигурации в хранилище Конфигурация приложений Azure при отправке appsettings.jsonизменений. Когда разработчик отправляет измененияappsettings.json, скрипт, переданный в действие Azure CLI, обновляет хранилище Конфигурация приложений новыми значениями.

В разделе этого рабочего процесса указывается, что действие активируется при отправке, содержащей appsettings.json основную ветвь. В разделе заданий перечислены задания , выполняемые после активации действия. Действие проверяет соответствующие файлы и обновляет хранилище Конфигурация приложений.

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

Дополнительные сведения о командах импорта Конфигурация приложений Azure CLI см. в документации приложение Azure Confifguration CLI.

Использование динамической метки для импорта

Использование динамической метки для каждого импорта — это хороший способ обеспечения четкого и точного управления версиями конфигураций. Он позволяет каждому импорту в хранилище Конфигурация приложений быть уникальным образом идентифицированным, что упрощает сопоставление изменений кода с обновлениями конфигурации.

Пример использования динамической метки при импорте

В следующем примере все импортированные значения ключей будут иметь уникальную метку на основе хэша фиксации.

 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

Следующие шаги

Чтобы узнать, как использовать команды импорта CLI, ознакомьтесь с нашим исчерпывающим руководством по командам импорта Azure CLI.

Дополнительные сведения о различных профилях содержимого файлов см. в Конфигурация приложений Azure поддержке файлов конфигурации.