Azure Pipelines для База данных Azure для MySQL — гибкий сервер

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — гибкий сервер

Вы можете автоматически развертывать обновления базы данных для гибкого сервера Базы данных Azure для MySQL после каждой успешной сборки с помощью Azure Pipelines. Задачу Azure CLI можно использовать для обновления базы данных с помощью файла SQL или встроенного скрипта SQL для базы данных. Эту задачу можно выполнять в кроссплатформенных агентах в операционных системах Linux, macOS или Windows.

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

  • Учетная запись Azure. Если у вас ее нет, получите бесплатную пробную версию.

  • Подключение к службе Azure Resource Manager для учетной записи Azure

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

В качестве отправной точки в этом кратком руководстве используются ресурсы, созданные в соответствии со следующими материалами:

  • Создайте экземпляр гибкого сервера База данных Azure для MySQL с помощью портал Azure или Azure CLI.

Использование файла SQL

В примере ниже показано, как передавать аргументы базы данных и выполнять команду execute.

- task: AzureCLI@2
  displayName: Azure CLI
  inputs:
    azureSubscription: <Name of the Azure Resource Manager service connection>
    scriptLocation: inlineScript
    arguments:
      -SERVERNAME mydemoserver `
      -DBNAME pollsdb `
      -DBUSER pollsdbuser`
      -DBPASSWORD pollsdbpassword
    inlineScript: |
      az login --allow-no-subscription
      az mysql flexible-server execute --name $(SERVERNAME) \
      --admin-user $(DBUSER) --admin-password '$(DBPASSWORD)' \
      --database-name $(DBNAME) \
      --file-path /code/sql/db-schema-update.sql

Использование встроенного скрипта SQL

В примере ниже показано, как запустить встроенный скрипт SQL с помощью команды execute.

- task: AzureCLI@2
  displayName: Azure CLI
  inputs:
    azureSubscription: <Name of the Azure Resource Manager service connection>
    scriptLocation: inlineScript
    arguments:
      -SERVERNAME mydemoserver `
      -DBNAME pollsdb `
      -DBUSER pollsdbuser`
      -DBPASSWORD pollsdbpassword
      -INLINESCRIPT 
    inlineScript: |
      az login --allow-no-subscription
      az mysql flexible-server execute --name $(SERVERNAME) \
      --admin-user $(DBUSER) --admin-password '$(DBPASSWORD)' \
      --database-name $(DBNAME) \
      --query-text "UPDATE items SET items.retail = items.retail * 0.9 WHERE items.id =100;" 

Входные данные задачи

Полный список всех входных данных задачи можно просмотреть при использовании задачи Azure CLI с Azure Pipelines.

Параметр Описание
azureSubscription (Обязательно.) Укажите подписку Azure Resource Manager для развертывания. Этот параметр отображается, только если выбранная версия задачи имеет значение 0.*, так как задача Azure CLI версии 1.0 поддерживает только подписки Azure Resource Manager.
scriptType (Обязательный параметр) Укажите тип скрипта. Поддерживаются скрипты PowerShell, PowerShell Core, Bat, Shell и script. При запуске на агенте Linux выберите один из следующих вариантов: bash или pscore. При запуске на агенте Windows выберите один из следующих вариантов: batch, ps и pscore.
scriptLocation (Обязательный параметр) Укажите путь к скрипту, например реальный путь к файлу, или используйте Inline script при использовании встроенных скриптов. Значение по умолчанию — scriptPath.
scriptPath (Обязательный параметр) Укажите полный путь к скрипту (PS1, BAT или CMD при использовании агента на основе Windows и .ps1 или .sh при использовании агента на основе Linux) или путь относительно рабочего каталога по умолчанию.
inlineScript (Обязательный параметр) Здесь можно ввести встроенные скрипты. Для агента Windows используйте PowerShell или PowerShell Core или пакетные скрипты, а для агентов на основе Linux используйте скрипты PowerShell Core или командной оболочки. Для пакетных файлов используйте префикс «call» перед каждой командой Azure. В этот скрипт также можно передать стандартные и пользовательские переменные с помощью аргументов.
Пример для PowerShell/PowerShellCore/оболочки: az --version az account show.
Пример для пакетов: call az --version call az account show.
аргументы (Необязательный параметр) Укажите все аргументы, передаваемые в скрипт. Пример: -SERVERNAME mydemoserver.
powerShellErrorActionPreference (Необязательный параметр) Указывается перед строкой $ErrorActionPreference = 'VALUE' в верхней части скрипта PowerShell/PowerShell Core. Значение по умолчанию — stop. Поддерживаемые значения: stop, continue и silentlyContinue.
addSpnToEnvironment (Необязательный параметр) Добавляет идентификатор и ключ субъекта-службы выбранной конечной точки Azure в среду выполнения скрипта. Вы можете использовать в скрипте следующие переменные: $env:servicePrincipalId, $env:servicePrincipalKey и $env:tenantId. Они учитываются, только если конечная точка Azure имеет схему проверки подлинности субъекта-службы. По умолчанию используется значение false.
useGlobalConfig (Необязательный параметр) Если это значение равно false, задача будет использовать отдельный каталог конфигурации Azure CLI. Это можно использовать для запуска задач Azure CLI в параллельных выпусках"
Значение по умолчанию: false
WorkingDirectory (Необязательный параметр) Текущий рабочий каталог, в котором выполняется скрипт. Empty — это корень репозитория (сборка) или артефакты (выпуск), то есть $(System.DefaultWorkingDirectory).
failOnStandardError (Необязательный параметр) Если значение true, эта задача завершится сбоем, когда в поток StandardError записываются ошибки. Снимите флажок, чтобы игнорировать стандартные ошибки и использовать коды выхода для определения состояния. По умолчанию используется значение false.
powerShellIgnoreLASTEXITCODE (Необязательно.) При значении false строка if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } добавляется в конец скрипта. Это приведет к тому, что последний код выхода из внешней команды будет считаться кодом выхода для PowerShell. В противном случае строка не добавляется в конец скрипта. По умолчанию используется значение false.

Если у вас возникли проблемы с задачей CLI, см. раздел об устранении неполадок со сборкой и выпуском.

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

Ниже приведены некоторые связанные задачи, которые необходимо выполнить для развертывания в Azure.