你当前正在访问 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 代理上运行时,请选择以下其中一项:bash 或 pscore 。 在 Windows 代理上运行时,请选择以下其中一项:batch 、ps 或 pscore 。 |
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 进行部署的相关任务。