设置面向单租户 Azure 逻辑应用中的标准逻辑应用的 DevOps 部署
适用于:Azure 逻辑应用(标准)
本指南主要介绍如何使用 DevOps 工具和流程设置将 Visual Studio Code 中的标准逻辑应用项目部署到基础结构。 如果标准逻辑应用存在于 Azure 门户中,则可以下载逻辑应用的工件文件,以用于 DevOps 部署。 根据你要使用的是 GitHub 还是 Azure DevOps,选择最适合部署方案的路径和工具。
如果没有标准逻辑应用,仍可以使用链接的示例标准逻辑应用项目以及通过 GitHub 或 Azure DevOps 部署到 Azure 的示例来遵循本指南。 有关详细信息,请查看面向单租户 Azure 逻辑应用的 DevOps 部署概述。
先决条件
具有活动订阅的 Azure 帐户。 如果你没有 Azure 订阅,请创建一个试用版订阅。
免费版 Visual Studio Code、适用于 Visual Studio Code 的 Azure 逻辑应用(标准)扩展以及其他相关先决条件。
要用于 DevOps 工具和流程的标准逻辑应用。
可以从 Azure 门户下载标准逻辑应用资源的工件文件,也可以使用通过 Visual Studio Code 和 Visual Studio Code 的 Azure 逻辑应用(标准)扩展创建的标准逻辑应用项目。
门户:下载的 zip 文件包含标准逻辑应用工件文件,例如 workflow.json、connections.json、host.json 和 local.settings.json。 请参阅从门户下载标准逻辑应用工件文件。
Visual Studio Code:需要在 Azure 门户中使用空的标准逻辑应用资源作为部署目标。 若要快速创建空的标准逻辑应用资源,请查看创建基于单租户的逻辑应用工作流 - 门户。
如果没有现有的逻辑应用或基础结构,可以使用链接的示例标准逻辑应用项目来部署示例逻辑应用和基础结构,具体取决于你要使用的是 GitHub 还是 Azure DevOps。 要详细了解用于运行示例逻辑应用的随附示例项目和资源,请查看部署基础结构资源。
部署基础结构资源
若要在未事先设置标准逻辑应用或基础结构的情况下尝试 DevOps 部署体验,请使用以下示例项目,以便可以根据要使用的是 GitHub 还是 Azure DevOps 为示例标准逻辑应用和基础结构设置部署:
-
此示例包括标准逻辑应用项目示例以及 Azure 部署和 GitHub Actions 的示例。
适用于单租户 Azure 逻辑应用的 Azure DevOps 示例
此示例包括标准逻辑应用项目示例以及 Azure 部署和 Azure Pipelines 的示例。
这两个示例均包含标准逻辑应用用于运行的以下资源:
资源名称 | 必需 | 说明 |
---|---|---|
标准型逻辑应用 | 是 | 此 Azure 资源包含在单租户 Azure 逻辑应用中运行的工作流。 重要说明:在逻辑应用项目中,每个工作流都有一个包含工作流定义的 workflow.json 文件,其中包括了触发器定义和操作定义。 |
API 连接 | 是,如果 API 连接存在 | 这些 Azure 资源可定义工作流用于运行托管连接器操作(如 Office 365、SharePoint 等)的任何托管 API 连接。 重要提示:在逻辑应用项目中,connections.json 文件包含任何托管 API 连接的元数据、终结点和密钥,以及工作流使用的 Azure 函数。 若要在各种环境中使用不同的连接和函数,请确保实现 connections.json 文件参数化并更新终结点。 有关详细信息,请查看 API 连接资源和访问策略。 |
Functions 高级托管计划或应用服务托管计划 | 是 | 此 Azure 资源可指定用于运行逻辑应用的托管资源,如计算、处理、存储、网络等。 重要提示:在当前体验中,标准逻辑应用资源需要工作流标准托管计划(基于 Azure Functions 高级托管计划)。 |
Azure 存储帐户 | 是,同时适用于监控状态和无状态的工作流 | 此 Azure 资源可存储有关工作流的元数据、访问控制密钥、状态、输入、输出、运行历史记录和其他信息。 |
Application Insights | 可选 | 此 Azure 资源可为工作流提供监视功能。 |
Azure 资源管理器 (ARM) 模板 | 可选 | 此 Azure 资源定义可以重复使用或导出的基线基础结构部署。 |
API 连接资源和访问策略
在单租户 Azure 逻辑应用中,工作流中的每个托管 API 连接资源均需要一个关联的访问策略。 此策略需要逻辑应用的标识,以便提供正确的权限来访问托管连接器基础结构。 内含示例项目包含一个 ARM 模板,其中含有所有必要的基础结构资源(包括这些访问策略)。
例如,下图显示了标准逻辑应用项目与基础结构资源之间的依赖关系:
从门户下载标准逻辑应用工件
如果标准逻辑应用是在 Azure 门户中,则可以下载包含逻辑应用工件文件的 zip 文件,包括 workflow.json、connections.json、host.json 和 local.settings.json。
在 Azure 门户中,找到并打开标准逻辑应用资源。
在逻辑应用菜单中,选择“概述” 。
在“概述”工具栏上,选择“下载应用内容”。 在出现的确认框中,选择“下载”。
出现提示时,选择“另存为”,浏览到所需的本地文件夹,然后选择“保存”以保存 zip 文件。
提取 zip 文件。
在 Visual Studio Code 中,打开包含解压缩文件的文件夹。
打开文件夹时,Visual Studio Code 会自动创建一个工作区。
编辑文件夹的内容,以仅包含使用 DevOps 进行部署所需的文件夹和文件。
完成后,保存更改。
生成和部署逻辑应用(zip 部署)
可以在 Azure 内部或外部设置生成和发布管道,以将标准逻辑应用部署到基础结构。
生成项目
将标准逻辑应用项目和工件文件推送到源存储库,例如 GitHub 或 Azure DevOps。
完成以下相应的操作,根据逻辑应用项目类型设置生成管道:
项目类型 说明和步骤 基于 Nuget 基于 NuGet 的项目结构以 .NET Framework 为基础。 若要生成这些项目,请务必遵循 .NET Standard 的生成步骤。 有关详细信息,请查看使用 MSBuild 创建 NuGet 包的文档。 基于捆绑包 基于扩展捆绑包的项目并非采用特定语言,且无需任何语言特定的生成步骤。 使用所需的任何方法压缩项目文件。
重要
请确保 zip 文件包含项目在根级别的实际生成工件,包括所有工作流文件夹、配置文件(如 host.json、connections.json、local.settings.json)和其他任何相关文件。 不要添加任何额外的文件夹,也不要将任何生成工件放入项目结构中不存在的文件夹。
例如,下面的列表显示示例 MyBuildArtifacts.zip 文件结构:
MyStatefulWorkflow1-Folder MyStatefulWorkflow2-Folder connections.json host.json local.settings.json
在发布到 Azure 之前
逻辑应用项目的“connections.json”文件内的托管 API 连接是专为 Visual Studio Code 中的本地使用而创建的。 必须更新项目工件,然后才能将这些工件从 Visual Studio Code 发布到 Azure。 若要在 Azure 中使用托管 API 连接,必须更新其身份验证方法,以便采用正确的格式在 Azure 中使用。
更新身份验证类型
对于使用身份验证的每个托管 API 连接,必须分别将 authentication
对象从 Visual Studio Code 中的本地格式更新为 Azure 门户格式,如第一个和第二个代码示例所示:
Visual Studio Code 格式
{
"managedApiConnections": {
"sql": {
"api": {
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/chinanorth/managedApis/sql"
},
"connection": {
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ase/providers/Microsoft.Web/connections/sql-2"
},
"connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-chinanorth.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
"authentication": {
"type": "Raw",
"scheme": "Key",
"parameter": "@appsetting('sql-connectionKey')"
}
}
}
}
Azure 门户格式
{
"managedApiConnections": {
"sql": {
"api": {
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/chinanorth/managedApis/sql"
},
"connection": {
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ase/providers/Microsoft.Web/connections/sql-2"
},
"connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-chinanorth.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
"authentication": {
"type": "ManagedServiceIdentity",
}
}
}
}
根据需要创建 API 连接
如果要将标准逻辑应用部署到不同于本地开发环境的 Azure 区域或订阅,则还必须确保在部署之前创建这些托管 API 连接。 Azure 资源管理器模板(ARM 模板)部署是创建托管 API 连接的最简单方法。
以下示例演示了 ARM 模板中的 SQL 托管 API 连接资源定义:
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016–06–01",
"location": "[parameters('location')]",
"name": "[parameters('connectionName')]",
"properties": {
"displayName": "sqltestconnector",
"api": {
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
},
"parameterValues": {
"authType": "windows",
"database": "TestDB",
"password": "TestPassword",
"server": "TestServer",
"username": "TestUserName"
}
}
}
若要查找 properties
对象所需的值,以便可以完成连接资源定义,请针对特定连接器使用以下 API:
GET https://management.chinacloudapi.cn/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/{connector-name}?api-version=2016-06-01
在响应中查找 connectionParameters
对象,该对象包含完成该特定连接器的资源定义所需的信息。 以下示例演示了 SQL 托管连接的示例资源定义:
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016–06–01",
"location": "[parameters('location')]",
"name": "[parameters('connectionName')]",
"properties": {
"displayName": "sqltestconnector",
"api": {
"id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
},
"parameterValues": {
"authType": "windows",
"database": "TestDB",
"password": "TestPassword",
"server": "TestServer",
"username": "TestUserName"
}
}
}
或者可以使用 Azure 逻辑应用中的工作流设计器创建连接时捕获和查看网络跟踪。 按照前文所述,查找发送到托管连接器的 API 的 PUT
调用,并查看请求正文来了解所有必需信息。
本地数据网关资源定义
如果连接使用本地数据网关资源,则此资源定义与连接器资源定义分开存在。 若要查看数据网关的资源定义,请参阅使用 Azure 资源管理器模板自动部署 Azure 逻辑应用和 Microsoft.Web connectionGateways。
发布到 Azure
若要设置部署到 Azure 的发布管道,请执行 GitHub、Azure DevOps 或 Azure CLI 的关联步骤。
对于 GitHub 部署,可以使用 GitHub Actions 部署逻辑应用,例如,Azure Functions 中的 GitHub Actions。 此操作要求传递以下信息:
- 用于部署的逻辑应用名称
- 包含实际生成工件的 zip 文件,其中包括所有工作流文件夹、配置文件(如 host.json、connections.json、local.settings.json)以及任何其他相关文件。
- 用于进行身份验证的发布配置文件
- name: 'Run Azure Functions Action'
uses: Azure/functions-action@v1
id: fa
with:
app-name: 'MyLogicAppName'
package: 'MyBuildArtifact.zip'
publish-profile: 'MyLogicAppPublishProfile'
有关详细信息,请查看使用 GitHub Action 持续交付。
部署到 Azure 后
每个 API 连接都有访问策略。 Zip 部署完成后,必须在 Azure 门户中打开标准逻辑应用资源,并为每个 API 连接创建访问策略,以便为部署的逻辑应用设置权限。 Zip 部署不会为你创建应用设置。 在部署后,必须基于逻辑应用项目中的 local.settings.json 文件创建这些应用设置。
相关内容
我们希望你就单租户 Azure 逻辑应用体验提供反馈!
- 如果发现 bug 或问题,请在 GitHub 中创建问题。
- 如有问题、请求、意见和其他反馈,请使用此反馈表单。