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


Краткое руководство. Использование GitHub Actions для подключения к База данных Azure для MySQL — гибкий сервер

Начало работы с GitHub Actions с помощью рабочего процесса для развертывания обновлений базы данных на База данных Azure для MySQL гибком сервере.

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

Что вам понадобится:

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

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

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

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

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

Создайте субъект-службу с помощью командыaz ad sp create-for-rbac в Azure CLI. Чтобы выполнить эту команду, откройте Azure Cloud Shell на портале Azure или нажмите кнопку Попробовать.

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

Параметр --json-auth доступен в версиях >Azure CLI = 2.51.0. Версии до этого использования --sdk-auth с предупреждением об нерекомендуемом.

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

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

Скопируйте строку подключения MySQL

В портал Azure перейдите к База данных Azure для MySQL гибкому экземпляру сервера и откройте строки подключения параметров>. Скопируйте строку подключения по протоколу ADO.NET. Замените заполнители значениями для your_database и your_password.

Внимание

  • Для одного сервера База данных Azure для MySQL используйте Uid=adminusername@servername. Обратите внимание, что @servername является обязательным элементом.
  • Для База данных Azure для MySQL гибкого сервера используйте uid=adminusername без @servername.

Эту строку подключения вы примените в качестве секрета GitHub.

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

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

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

  3. Выберите "Секреты безопасности>" и "Действия переменных>".

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

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

  5. Вставьте все выходные данные JSON, полученные из команды Azure CLI, в поле значения секрета. Присвойте секрету имя AZURE_CREDENTIALS.

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

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

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

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

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

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. Присвойте рабочему процессу имя MySQL for GitHub Actions и добавьте действия для извлечения и входа. Эти действия проверяют код сайта и проходят проверку подлинности в Azure с помощью созданного ранее секрета AZURE_CREDENTIALS 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@v1
                with:
                    creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  5. Используйте действие развертывания Azure MySQL для подключения к экземпляру MySQL. Замените MYSQL_SERVER_NAME именем сервера. На корневом уровне репозитория должен размещаться файл данных MySQL с именем data.sql.

    - uses: azure/mysql@v1
      with:
        server-name: MYSQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }}
        sql-file: './data.sql'
    
  6. Завершите создание рабочего процесса, добавив действие для выхода из Azure. Готовый рабочий процесс выглядит так: Файл отображается в папке .github/workflows репозитория.

    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@v1
                with:
                  creds: ${{ secrets.AZURE_CREDENTIALS }}
    
              - 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
    

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

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

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

    Снимок экрана: запуск журнала действий GitHub.

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

Если База данных Azure для MySQL гибкой базе данных сервера и репозитория больше не нужны, очистите ресурсы, развернутые путем удаления группы ресурсов и репозитория GitHub.

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