你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Pipelines 任务 - Azure Database for PostgreSQL 灵活服务器

适用于: Azure Database for PostgreSQL 灵活服务器

每次使用 Azure Pipelines 成功生成后,便可以将数据库更新自动部署到 Azure Database for PostgreSQL 灵活服务器。 可以使用 Azure CLI 任务,并针对数据库使用 SQL 文件或内联 SQL 脚本来更新数据库。 该任务可在跨平台代理上运行,而这些代理则在 Linux、macOS 或 Windows 操作系统上运行。

先决条件

  • 一个 Azure 帐户。 如果没有帐户,可获取一个免费试用帐户
  • 到你 Azure 帐户的 Azure 资源管理器服务连接
  • Microsoft 托管代理已预安装 Azure CLI。 但是,如果使用的是专用代理,请在运行生成和发布代理的计算机上安装 Azure CLI。 如果代理已在安装了 Azure CLI 的计算机上运行,请重启代理,确保所有相关阶段变量得到更新。
  • 使用 Azure 门户Azure CLI 创建 Azure Database for PostgreSQL 灵活服务器实例

使用 SQL 文件

以下示例演示如何传递数据库参数和运行 execute 命令

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

使用内联 SQL 脚本

以下示例演示如何使用 execute 命令运行内联 SQL 脚本。

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

任务输入

将 Azure CLI 任务与 Azure Pipelines 配合使用时,可以看到所有任务输入的完整列表。

参数 说明
azureSubscription (必需)为部署提供 Azure 资源管理器订阅。 此参数仅在所选任务版本为 0.* 时显示,因为 Azure CLI 任务 v1.0 仅支持 Azure 资源管理器订阅。
scriptType (必需)提供脚本类型。 支持的脚本包括 PowerShell、PowerShell Core、Bat、Shell 和脚本。 在 Linux 代理上运行时,请选择以下其中一项:bashpscore。 在 Windows 代理上运行时,请选择以下其中一项:batchpspscore
scriptLocation (必需)在提供内联脚本时,提供脚本的路径(例如实际文件路径)或使用 Inline script。 默认值为 scriptPath
scriptPath (必需)脚本的完全限定的路径(使用基于 Windows 的代理时,为 .ps1、.bat 或 .cmd,或者使用基于 Linux 的代理时,则为 .ps1 .sh )或相对于默认工作目录的路径。
inlineScript (必需)可在此处内联编写脚本。 使用 Windows 代理时,请使用 PowerShell、PowerShell Core 或批处理脚本,而使用基于 Linux 的代理时,请使用 PowerShell Core 或 shell 脚本。 对于批处理文件,请在每个 Azure 命令前加上前缀“call”。 还可以使用参数将预定义变量和自定义变量传递给此脚本。
PowerShell/PowerShellCore/shell 示例: az --version az account show
批处理示例: call az --version call az account show
参数 (可选)提供传递给脚本的所有参数。 例如 -SERVERNAME mydemoserver
powerShellErrorActionPreference (可选)在 PowerShell/PowerShell Core 脚本顶部预置行 $ErrorActionPreference = 'VALUE'。 默认值设置为 stop。 支持的值为 stop、continue 和 silentlyContinue。
addSpnToEnvironment (可选)将选择的服务主体 ID 和 Azure 终结点的密钥添加到脚本的执行环境。 可以在脚本中使用以下变量:$env:servicePrincipalId、$env:servicePrincipalKey 和 $env:tenantId。 仅在 Azure 终结点具有服务主体身份验证方案时才可执行此操作。 默认值为 false。
useGlobalConfig (可选)若为 false,则此任务将使用自己的独立 Azure CLI 配置目录。 这可用于在并行发布中运行 Azure CLI 任务
默认值:false
workingDirectory (可选)当前运行脚本的工作目录。 空值为存储库(生成)或项目(发布)的根,即 $(System.DefaultWorkingDirectory)。
failOnStandardError (可选)若为 true,则当任何错误写入标准错误流时,此任务都将失败。 取消选中复选框以忽略标准错误,并借助退出代码来确定状态。 默认值为 false。
powerShellIgnoreLASTEXITCODE (可选)若为 false,则行 if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } 将追加到脚本末尾。 这将导致外部命令中的最后一个退出代码作为 PowerShell 的退出代码进行传播。 若为 true,该行将不会追加到脚本末尾。 默认值为 false。

若在使用 CLI 任务时遇到问题,请参阅如何排查生成和发布问题

后续步骤

下面是一些可用于通过 Azure Pipelines 进行部署的相关任务。