使用 Azure Pipelines 部署到 Azure Stack Hub 应用服务
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
本文将引导你设置 CI/CD 管道,以便使用 Azure Pipelines 将应用程序部署到 Azure Stack Hub 实例中的应用服务。
在本文中,可以了解如何创建或验证:
- Azure Stack Hub 服务主体 (SPN) 管道的凭据。
- Azure Stack Hub 实例中的 Web 应用。
- 与 Azure Stack Hub 实例的服务连接。
- 包含要部署到应用的应用代码的存储库
先决条件
- 访问已启用 App 服务 RP 的 Azure Stack Hub 实例。
- 与 Azure Stack Hub 租户关联的 Azure DevOps 解决方案 。
创建或验证 SPN
SPN 提供基于角色的凭据,以便 Azure 外部的进程可以连接到资源并与之交互。 需要具有参与者访问权限的 SPN,以及这些说明中指定的属性才能与 Azure DevOps 管道一起使用。
作为 Azure Stack Hub 的用户,你没有创建 SPN 的权限。 需要向云操作员请求此主体。 此处提供了相关说明,以便如果你是云操作员,则可以创建 SPN;如果你是云操作员提供的工作流中使用 SPN 的开发人员,则可以验证 SPN。
云操作员需要使用 Azure CLI 创建 SPN。
以下代码片段是使用 PowerShell 提示符和 适用于 Azure Stack Hub 的 Azure CLI 为 Windows 计算机编写的。 如果在 Linux 计算机上使用 CLI 并 bash,请删除行扩展或将其 \
替换为 。
准备用于创建 SPN 的以下参数的值:
参数 示例 说明 endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" 资源管理终结点。 suffix-storage-endpoint "orlando.azurestack.corp.microsoft.com" 存储帐户的终结点后缀。 suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Key Vault 服务 DNS 后缀。 endpoint-active-directory-graph-resource-id "https://graph.windows.net/" Active Directory 资源 ID。 endpoint-sql-management https://notsupported SQL Server 管理终结点。 将其设置为 https://notsupported
个人资料 2019-03-01-hybrid 要用于此云的配置文件。 打开你的命令行工具(例如 Windows PowerShell 或 Bash)并登录。 使用以下命令:
az login
register
对于新环境,请使用 命令;update
如果使用现有环境,请使用 命令。 使用以下命令。az cloud register ` -n "AzureStackUser" ` --endpoint-resource-manager "https://management.<local>.<FQDN>" ` --suffix-storage-endpoint ".<local>.<FQDN>" ` --suffix-keyvault-dns ".vault.<local>.<FQDN>" ` --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" ` --endpoint-sql-management https://notsupported ` --profile 2019-03-01-hybrid
获取要用于 SPN 的订阅 ID 和资源组。
通过以下命令使用订阅 ID 和资源组创建 SPN:
az ad sp create-for-rbac --name "myApp" --role contributor ` --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} ` --sdk-auth
如果没有云操作员权限,还可以使用云操作员提供的 SPN 登录。 需要客户端 ID、机密和租户 ID。 使用这些值,可以使用以下 Azure CLI 命令创建包含创建服务连接所需的值的 JSON 对象。
az login --service-principal -u "<client-id>" -p "<secret>" --tenant "<tenant-ID>" --allow-no-subscriptions az account show
检查生成的 JSON 对象。 你将使用 JSON 对象创建服务连接。 JSON 对象应具有以下属性:
{ "environmentName": "<Environment name>", "homeTenantId": "<Tenant ID for the SPN>", "id": "<Application ID for the SPN>", "isDefault": true, "managedByTenants": [], "name": "<Tenant name>", "state": "Enabled", "tenantId": "<Tenant ID for the SPN>", "user": { "name": "<User email address>", "type": "user" } }
创建 Web 应用目标
- 登录到 Azure Stack Hub 门户。
- 选择“创建资源”>“Web + 移动”>“Web 应用”。
- 选择订阅。
- 创建或选择资源组。
- 键入应用的名称。 应用的名称将显示在应用的 URL 中,例如
yourappname.appservice.<region>.<FQDN>
- 为应用选择运行时堆栈。 运行时必须与计划用于 Web 应用的代码匹配。
- 选择将托管运行时和应用的操作系统 (OS)。
- 为 Azure Stack Hub 实例选择或键入区域。
- 根据 Azure Stack Hub 实例、区域和应用 OS 选择计划。
- 选择“查看 + 创建” 。
- 查看 Web 应用。 选择“创建”。
- 选择“转到资源”。
- 记下应用名称。 将名称添加到存储库中定义管道的 yml 文档。
创建服务连接
创建服务连接。 需要 SPN 中的值和 Azure Stack Hub 订阅的名称。
登录到 Azure DevOps 组织,然后导航到项目。
选择“项目设置”,然后选择“服务连接”。
选择“ 服务连接>”“新建服务连接”。
选择“Azure 资源管理器”,然后选择“下一步”。
(手动) 选择“服务主体”。
从“环境”中选择“Azure Stack”。
填写表单,然后选择“ 验证并保存”。
为服务连接命名。 (需要服务连接名称才能创建 yaml 管道) 。
创建存储库并添加管道
如果尚未将 Web 应用代码添加到存储库,请立即添加它。
打开存储库。 选择存储库,然后选择“ 浏览”。
选择 管道
选择“新建管道”。
选择“Azure Repos Git”。
选择存储库。
选择“初学者管道”。
导航回存储库并打开
azure-pipelines.yml
。添加以下 yaml:
# Starter pipeline # Start with a minimal pipeline that you can customize to build and deploy your code. # Add steps that build, run tests, deploy, and more: # https://aka.ms/yaml trigger: - main variables: azureSubscription: '<your connection name>' VSTS_ARM_REST_IGNORE_SSL_ERRORS: true steps: - task: AzureWebApp@1 displayName: Azure Web App Deploy inputs: azureSubscription: $(azureSubscription) appName: <your-app-name> package: '$(System.DefaultWorkingDirectory)'
注意
若要忽略 SSL 错误,请将名为 的
VSTS_ARM_REST_IGNORE_SSL_ERRORS
变量设置为生成或发布管道中的 值true
,如以下示例所示。使用
azureSubscription
服务连接的名称更新值。appName
使用应用名称更新 。 现在可以开始部署了。
有关将 Azure 任务与 Azure Stack Hub 配合使用的说明
以下 Azure 任务通过 Azure Stack Hub 进行验证: