Поделиться через


Применение GitHub Actions для подключения к Базе данных SQL Azure

Применимо к: База данных SQL Azure

Начните работу с GitHub Actions, настроив и применив рабочий процесс для развертывания обновлений базы данных в Базе данных SQL.

Необходимые компоненты

Необходимые компоненты:

Общие сведения о файле рабочего процесса

Рабочий процесс в GitHub Actions определяется файлом .yml, который размещается в папке репозитория /.github/workflows/. Этот файл содержит шаги и параметры, составляющие рабочий процесс.

Этот файл содержит два раздела:

Раздел Задачи
Аутентификация 1. Создание учетных данных для развертывания.
Развертывание 2. Развертывание базы данных.

Создание учетных данных для развертывания.

Чтобы использовать действие входа Azure с OIDC, необходимо настроить федеративные учетные данные удостоверения в приложении Microsoft Entra или управляемом удостоверении, назначаемом пользователем.

Вариант 1. Приложение Microsoft Entra

Вариант 2. Управляемое удостоверение, назначаемое пользователем

Копирование строки подключения SQL

На портале Azure перейдите к серверу Базы данных SQL и последовательно откройте Параметры>Строки подключения. Скопируйте строку подключения по протоколу ADO.NET. Замените заполнители значениями для your_database и your_password.

Вы задали строка подключения в качестве секрета AZURE_SQL_CONNECTION_STRINGGitHub.

Настройка секретов GitHub

Необходимо указать идентификатор клиента приложения, идентификатор каталога (клиента) и идентификатор подписки для действия входа. Эти значения могут быть указаны непосредственно в рабочем процессе или храниться в секретах GitHub с указанием ссылок на них в рабочем процессе. Сохранение значений в виде секретов GitHub является более безопасным вариантом.

  1. В GitHub перейдите в репозиторий.

  2. Выберите > переменных".

    Снимок экрана: добавление секрета

  3. Нажмите Создать секрет репозитория.

    Замечание

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

  4. Создайте секреты для AZURE_CLIENT_ID, AZURE_TENANT_ID и AZURE_SUBSCRIPTION_ID. Скопируйте эти значения из приложения Microsoft Entra или управляемого удостоверения, назначаемого пользователем, для секретов GitHub:

    Секрет GitHub Приложение Microsoft Entra или управляемое удостоверение, назначаемое пользователем
    AZURE_CLIENT_ID Идентификатор клиента
    AZURE_SUBSCRIPTION_ID ИД подписки
    AZURE_TENANT_ID Идентификатор каталога (клиента)

    Замечание

    По соображениям безопасности рекомендуется использовать секреты GitHub, а не передавать значения непосредственно в рабочий процесс.

Добавление секрета SQL строка подключения

  1. В GitHub перейдите в репозиторий.

  2. Перейдите к параметрам в меню навигации .

  3. Выберите > переменных".

  4. Нажмите Создать секрет репозитория.

  5. Вставьте строка подключения SQL. Присвойте секрету имя AZURE_SQL_CONNECTION_STRING.

  6. Выберите Добавить секрет.

Добавление рабочего процесса

  1. Перейдите в раздел Actions (Действия) для репозитория GitHub.

  2. Выберите Set up your workflow yourself (Настроить рабочий процесс самостоятельно).

  3. Удалите все содержимое в файле рабочего процесса после раздела on:. Например, оставшийся рабочий процесс может выглядеть следующим образом.

    name: SQL for GitHub Actions
    
    on:
        push:
            branches: [ main ]
        pull_request:
            branches: [ main ]
    
  4. Присвойте рабочему процессу имя SQL for GitHub Actions и добавьте действия для извлечения и входа. Эти действия проверяют код сайта и проходят проверку подлинности в Azure с помощью созданного ранее секрета AZURE_CREDENTIALS 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 }}
    

  1. Используйте действие развертывания Azure SQL для подключения к экземпляру SQL. На корневом уровне репозитория должен размещаться пакет DACPAC с именем Database.dacpac. AZURE_SQL_CONNECTION_STRING Используйте созданный ранее секрет GitHub.

    - uses: azure/[email protected]
      with:
        connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
        path: './Database.dacpac'
        action: 'publish'
    
  2. Завершите создание рабочего процесса, добавив действие для выхода из Azure. Готовый рабочий процесс выглядит так: Файл отображается в папке .github/workflows репозитория.

        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/[email protected]
               with:
                connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
                path: './Database.dacpac'
                action: 'publish'
    
                # Azure logout 
                 - name: logout
                   run: |
                     az logout
    

Проверка развертывания

  1. Перейдите в раздел Actions (Действия) для репозитория GitHub.

  2. Откройте первый результат, чтобы проверить подробные журналы выполнения рабочего процесса.

                                Журнал выполнения действий GitHub Action

Очистка ресурсов

Когда вы закончите работу с базой данных и репозиторием Azure SQL, очистите развернутые ресурсы, удалив группу ресурсов и репозиторий GitHub.

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