您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.
持续部署到 Azure 应用服务
03/12/2021
本文内容
备注
Azure 门户中的“开发中心(经典)”页面(部署体验的较早版本)已于 2021 年 3 月弃用。 此更改不会影响应用中的现有部署设置,你可以继续在门户中的“部署中心”页中管理应用部署。
准备存储库
若要从 Azure 应用服务生成服务器获取自动生成,请确保项目中存储库根路径具有正确的文件。
运行时
根目录文件
ASP.NET(仅限 Windows)
*.sln、 *.csproj 或 default.aspx
ASP.NET Core
*.sln 或 *.csproj
PHP
index.php
Ruby(仅限 Linux)
Gemfile
Node.js
server.js、app.js 或具有启动脚本的 package.json
Python
*.py 、 requirements.txt 或 runtime.txt
HTML
default.htm、default.html、default.asp、index.htm、index.html 或 iisstart.htm
Web 作业
/run., 位于 App_Data/jobs/continuous(适用于连续的 WebJobs)或 App_Data/jobs/triggered(适用于触发的 WebJobs)下 。 有关详细信息,请参阅 Kudu WebJobs 文档。
要自定义部署,可以在存储库根路径中添加 .deployment 文件。 有关详细信息,请参阅自定义部署和自定义部署脚本。
备注
如果在 Visual Studio 中进行开发,让 Visual Studio 创建存储库。 该项目可立即通过 Git 进行部署。
配置部署源
在 Azure 门户中,导航到应用服务应用的管理页。
从左侧菜单中单击“部署中心” > “设置”。
在“源”中,选择 CI/CD 选项之一。
选择与你的选择相对应的选项卡来了解相关步骤。
GitHub Actions 是默认的生成提供程序。 若要更改它,请单击“更改提供程序” > “应用服务生成服务(Kudu)”>“确定”。
备注
若要使用 Azure Pipelines 作为应用服务应用的生成提供程序,请不要在应用服务中配置它, 而是直接从 Azure Pipelines 配置 CI/CD。 “Azure Pipelines”选项就会为你指引正确的方向。
如果你是第一次从 GitHub 进行部署,请单击“授权”并按授权提示操作。 如果要从另一个用户的存储库进行部署,请单击“更改帐户”。
通过 GitHub 授权 Azure 帐户后,选择要为其配置 CI/CD 的“组织”、“存储库”和“分支”。 如果找不到组织或存储库,可能需要在 GitHub 上启用附加权限。 有关详细信息,请参阅管理对组织的存储库的访问权限
当 GitHub Actions 是所选的生成提供程序时,你可以在“运行时堆栈”和“版本”下拉列表中选择所需的工作流文件。 Azure 会将此工作流文件提交到选定的 GitHub 存储库中来处理生成和部署任务。 若要在保存更改之前查看文件,请单击“预览文件”。
备注
应用服务会检测应用的语言堆栈设置,并选择最合适的工作流模板。 如果选择其他模板,则可能会部署不能正常运行的应用。 有关详细信息,请参阅 GitHub Actions 生成提供程序工作原理。
单击“保存”。
选定存储库和分支中的新提交现在将持续部署到应用服务应用中。 可以在“日志”选项卡中跟踪提交和部署。
BitBucket 集成使用应用服务生成服务 (Kudu) 实现生成自动化。
如果你是第一次从 BitBucket 进行部署,请单击“授权”并按授权提示操作。 如果要从另一个用户的存储库进行部署,请单击“更改帐户”。
对于 Bitbucket,请选择要持续部署的 Bitbucket 团队、存储库 和 分支。
单击“保存”。
选定存储库和分支中的新提交现在将持续部署到应用服务应用中。 可以在“日志”选项卡中跟踪提交和部署。
备注
作为部署源的 Azure Repos 是对 Windows 应用的支持。
应用服务生成服务 (Kudu) 是默认的生成提供程序。
备注
若要使用 Azure Pipelines 作为应用服务应用的生成提供程序,请不要在应用服务中配置它, 而是直接从 Azure Pipelines 配置 CI/CD。 “Azure Pipelines”选项就会为你指引正确的方向。
选择要持续部署的“Azure DevOps 组织”、“项目”、“存储库”和“分支”。
如果未列出 DevOps 组织,则表明它尚未关联到你的 Azure 订阅。 有关详细信息,请参阅创建 Azure 服务连接。
禁用持续部署
在 Azure 门户中,导航到应用服务应用的管理页。
从左侧菜单中单击“部署中心” > “设置” > “断开连接”。
默认情况下,GitHub Actions 工作流文件保留在你的存储库中,但会持续触发向你的应用进行部署。 若要将其从存储库中删除,请选择“删除工作流文件”。
单击 “确定” 。
部署期间我的应用会发生什么情况?
所有官方支持的部署方法都会更改应用的 /home/site/wwwroot 文件夹中的文件。 这些文件用于运行你的应用。 因此,部署可能会因为文件锁定而失败。 应用在部署期间的行为也可能无法预测,因为并非所有文件都同时更新。 这对于面向客户的应用来说是不合需要的。 可通过多种不同方式避免这些问题:
部署期间停止应用或对应用启用脱机模式。 有关详细信息,请参阅处理部署过程中锁定的文件。
部署到过渡槽且启用了自动交换。
GitHub Actions 生成提供程序工作原理
GitHub Actions 生成提供程序是适用于从 GitHub 进行 CI/CD 的选项,可通过执行以下操作来设置 CI/CD:
将 GitHub Actions 工作流文件存储到 GitHub 存储库中,以便处理目标为应用服务的生成和部署任务。
添加应用的发布配置文件作为 GitHub 机密。 工作流文件使用此机密通过应用服务进行身份验证。
捕获工作流运行日志中的信息,将其显示在应用的“部署中心”的“日志”选项卡中。
可通过以下方式自定义 GitHub Actions 生成提供程序:
在 GitHub 存储库中生成工作流文件后,对该工作流文件进行自定义。 有关详细信息,请参阅 GitHub Actions 的工作流语法。 只需确保工作流通过 azure/webapps-deploy 操作部署到应用服务。
如果所选分支受保护,则仍可在不保存配置的情况下预览工作流文件,然后将其手动添加到存储库中。 此方法不提供与 Azure 门户的日志集成。
请使用 Azure Active Directory 中的服务主体进行部署,而不是使用发布配置文件。
使用服务主体进行身份验证
此可选配置会将默认身份验证替换为生成的工作流文件中的发布配置文件。
在 Azure CLI 中使用 az ad sp create-for-rbac 命令生成服务主体。 在以下示例中,请将 、 和 替换为你自己的值:
az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
--scopes /subscriptions//resourceGroups//providers/Microsoft.Web/sites/ \
--sdk-auth
重要
为了安全起见,请为服务主体授予所需的最低访问权限。 上一个示例中的范围仅限于特定的应用服务应用而不是整个资源组。
保存整个 JSON 输出(包括顶级 {})供下一步使用。
在 GitHub 中,浏览存储库,选择“设置”>“机密”>“添加新机密”。
将 Azure CLI 命令的整个 JSON 输出粘贴到机密的值字段中。 为机密指定名称,如 AZURE_CREDENTIALS。
在 部署中心 生成的工作流文件中,使用类似于以下示例所示的代码(修改自 Node.js 工作流文件)修改 azure/webapps-deploy 步骤:
- name: Sign in to Azure
# Use the GitHub secret you added
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
# Remove publish-profile
- uses: azure/webapps-deploy@v2
with:
app-name: ''
slot-name: 'production'
package: .
- name: Sign out of Azure
run: |
az logout
从其他存储库进行部署
对于 Windows 应用,你可以从门户不直接支持的云 Git 或 Mercurial 存储库(例如 GitLab)手动配置持续部署。 为此,请在“源”下拉列表中选择“外部 Git”。 有关详细信息,请参阅使用手动步骤设置持续部署。
更多资源