本文介绍如何通过从 GitHub、Bitbucket、Azure Repos 或其他存储库拉取更新来配置持续部署(CD)到 Azure 应用服务。
在源代码管理存储库中对 Azure 应用服务应用写入权限。
若要从 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 作业 | App_Data/jobs/continuous(适用于连续的 WebJobs)或 App_Data/jobs/triggered(适用于触发的 WebJobs)下的 job_name/run.extension。 有关详细信息,请参阅 Kudu WebJobs 文档。 |
要自定义部署,可以在存储库根路径中添加 .deployment 文件。 有关详细信息,请参阅自定义部署和自定义部署脚本。
备注
如果在 Visual Studio 中进行开发,让 Visual Studio 创建存储库。 该项目可立即通过 Git 进行部署。
在 Azure 门户中,转到应用服务应用的页面,然后从左侧导航菜单中选择 部署中心 。
在“源”下的“设置”选项卡上,选择源代码管理存储库类型。
请根据您的源类型说明来配置部署。
按照使用 Git 在本地部署到 Azure 应用服务的说明进行操作。
选定存储库和分支中的新提交现在将持续部署到应用服务应用中。 可以在“日志”选项卡中,跟踪提交和部署。
若要禁用连接的源的持续部署,请执行以下操作:
在 Azure 门户中,转到应用服务应用的页面,然后从左侧导航菜单中选择 部署中心 。
在 “设置” 选项卡上,选择“ 断开连接”。
选择“确定”。
构建提供商通过 Azure 应用服务自动化构建、测试和部署过程,从而帮助您构建持续集成和持续交付(CI/CD)解决方案。 某些部署源提供了多个构建提供方选项。 所有列出的源都可以使用应用服务生成服务进行生成。
可供选择的不仅限于列出的构建服务选项,但应用服务可以使你快速设置这些选项,并开始接收集成部署日志记录。
GitHub Actions 构建提供程序仅适用于 GitHub 源代码,并且是 GitHub 部署的默认选项。 生成提供程序通过将 GitHub Actions 工作流文件存入处理应用服务生成和部署任务的 GitHub 存储库来设置 CI/CD。
对于基本身份验证,GitHub Actions 生成提供程序会将应用的发布配置文件添加为 GitHub 机密。 工作流文件使用此机密通过应用服务进行身份验证。
对于用户分配的标识,应用服务启用建议Microsoft OpenID Connect 身份验证并在 Azure 和 GitHub 中配置必要的资源。 有关详细信息,请参阅 用户分配的标识选项对 GitHub Actions 有何用途?
GitHub Actions 生成提供程序从工作流运行日志中捕获信息,并将其显示在应用的部署中心的“日志”选项卡上。
可以通过多种方式自定义 GitHub Actions 生成提供程序:
- 在工作流文件在 GitHub 存储库中生成后,自定义该文件。 有关详细信息,请参阅 GitHub Actions 的工作流语法。 使用
azure/webapps-deploy
操作将自定义工作流部署到应用服务。 - 如果所选分支受到保护,则预览工作流文件而不保存配置。 自定义文件,然后手动将其添加到存储库。 此方法不提供与 Azure 门户集成日志。
- 使用 Microsoft Entra ID 服务主体 而不是使用基本身份验证或用户分配的标识进行部署。 无法在门户中配置此方法。
应用服务生成服务是本机应用服务部署和生成引擎。 选择此选项时,应用服务会将 Webhook 添加到已授权的存储库中。 任何推送到存储库的代码都会触发“Webhook”,应用服务会拉取更改并执行相应的部署任务。 有关详细信息,请参阅从 GitHub (Kudu) 进行部署。
应用服务生成服务需要 源代码管理管理器(SCM)基本身份验证 才能使 Webhook 正常工作。 基本身份验证比其他身份验证方法安全性更低。 有关详细信息,请参见:
- 如果禁用基本身份验证,GitHub Actions 生成提供程序将如何工作?
- 用户分配的标识选项对 GitHub Actions 有何用途?
- 为什么我会看到“你对此应用没有足够的权限来分配对托管标识的基于角色的访问权限并配置联合凭据”错误?
- 为什么我会看到“此标识对此应用没有写入权限”的错误? 请选择其他标识,或者与管理员协作,在此应用上向标识授予网站参与者角色”?
如果禁用基本身份验证,则 GitHub Actions 生成提供程序不适用于基本身份验证。 请尝试改用具有用户分配的标识选项的 GitHub Actions。 有关详细信息,请参阅 “在没有基本身份验证的情况下部署”。
所有官方支持的部署方法均会更改应用的 /home/site/wwwroot 文件夹中的文件。 这些文件用于运行你的应用。 因此,部署可能会因为锁定的文件而失败。 应用可能会在部署期间发生不可预测的行为,因为这些文件并非同时更新。 这种行为对于面向客户的应用来说是需要避免的。 可以通过几种方法避免这些问题:
- 直接从 ZIP 包运行应用,而无需将其解压。
- 部署期间停止应用或为其启用脱机模式。 有关详细信息,请参阅处理部署过程中锁定的文件。
- 部署到过渡槽且开启了自动交换。
为 GitHub 源选择用户分配的标识时,应用服务在 Azure 和 GitHub 中配置所有必要的资源。 应用服务使用 GitHub Actions 启用推荐的 Microsoft OpenID Connect 身份验证。
具体来说,应用服务执行以下操作:
- 在 Azure 中的用户分配的托管标识与你在 GitHub 中选择的存储库和分支之间创建联合凭据。
- 根据所选 GitHub 存储库中的联合凭据创建机密
AZURE_CLIENT_ID
、AZURE_TENANT_ID
和AZURE_SUBSCRIPTION_ID
。 - 将标识分配给应用。
然后,您可以在 GitHub 存储库中的 GitHub Actions 工作流中使用 Azure/login
操作,通过 OpenID Connect 进行应用身份验证。 有关示例,请参阅将工作流文件添加到 GitHub 存储库。
如果 Azure 帐户具有所需的权限,应用服务会创建用户分配的托管标识并为你配置它。 此标识不会显示在应用的 “标识 ”页上。 如果 Azure 帐户没有所需的权限,则必须选择一个具有所需角色的现有标识。
该消息指示 Azure 帐户没有为 GitHub Actions 创建用户分配的托管标识所需的权限。 需要以下权限,范围限定为应用:
Microsoft.Authorization/roleAssignments/write
Microsoft.ManagedIdentity/userAssignedIdentities/write
默认情况下,Azure 用户访问管理员 和 所有者 角色具有这些权限,但 参与者 角色没有。 如果没有所需的权限,请与 Azure 管理员合作,创建具有 网站参与者 角色的用户分配托管标识。 然后,可以在应用服务部署中心的 GitHub 源的“标识”下拉列表中选择该标识。
有关使用替代步骤的详细信息,请参阅 使用 GitHub Actions 部署到应用服务。
该消息指示所选的用户分配的托管标识没有所需的角色在 GitHub 存储库和应用服务应用之间[启用 OpenID Connect]((#what-does-the-user-assigned-identity-option-do-for-github-actions)。 该标识必须在应用上具有 “所有者”、“ 参与者”或 “网站参与者 ”角色。 标识所需的最低特权角色是网站参与者。