注意
从 2024 年 6 月 1 日开始,新创建的应用服务应用可以生成使用命名约定 <app-name>-<random-hash>.<region>.azurewebsites.net
的唯一默认主机名。 例如: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
。 现有应用名称保持不变。
有关详细信息,请参阅关于创建具有唯一默认主机名的 Web 应用的博客文章。
可以使用 Azure 应用服务从 GitHub、Bitbucket 和 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 。 |
WebJobs | App_Data/jobs/continuous 下的 <job_name>/run.<extension> (表示连续 WebJobs),或者 App_Data/jobs/triggered (表示触发的 WebJobs)。 有关详细信息,请参阅 Kudu WebJobs 文档。 |
Functions | 请参阅 Azure Functions 的连续部署。 |
若要自定义部署,请在存储库根目录中包括一个 .deployment
文件。 有关详细信息,请参阅自定义部署和自定义部署脚本。
小窍门
Visual Studio 可以为你创建存储库。 使用此方法,你的项目立即可以通过 Git 进行部署。
配置部署源
在 Azure 门户中,转到应用服务应用的管理窗格。
在左侧菜单中,选择 “部署中心”。 然后选择“设置”。
在 “源 ”框中,选择一个 持续部署(CI/CD) 选项:
若要继续,请选择与构建提供程序对应的选项卡。
GitHub Actions 是默认的生成提供程序。 若要更改提供程序,选择“更改提供程序”“应用服务生成服务”>“确定”>。
若是第一次从 GitHub 进行部署,请选择“授权”并按授权提示进行操作。 若要从其他用户的存储库进行部署,请选择“ 更改帐户”。
使用 GitHub 授权 Azure 帐户后,选择相应的 组织、 存储库和 分支。
如果找不到组织或存储库,可能需要在 GitHub 上启用更多权限。 有关详细信息,请参阅管理对组织存储库的访问权限。
在“身份验证类型”下,选择“用户分配的标识”以提高安全性。 有关详细信息,请参阅常见问题解答。
注意
如果 Azure 帐户具有“用户分配的标识”选项的所需权限,Azure 会为你创建一个用户分配的托管标识。 如果没有所需的权限,请与 Azure 管理员协作,在 应用上创建具有所需角色的标识,然后在下拉列表中选择该标识。
(可选)若要在保存更改之前查看文件,请选择“预览文件”。 应用服务根据应用 的语言堆栈设置 选择工作流模板,并将其提交到所选的 GitHub 存储库中。
选择“保存”。
选定存储库和分支中的新提交现在将持续部署到应用服务应用中。 可以在“日志”选项卡中,跟踪提交和部署。
禁用持续部署
在 Azure 门户中,转到应用服务应用的管理页面。
在左侧菜单中,选择 “部署中心”。 然后选择 “设置>断开连接”。
默认情况下,GitHub Actions 工作流文件将保留在存储库中,但它会继续触发对应用的部署。 若要从存储库中删除文件,请选择“删除工作流文件”。
选择“确定”。
生成提供程序有哪些?
在部署中心,根据你的部署源,你可能会看到一些构建提供程序选项。 构建服务提供商通过自动化生成、测试和部署,帮助您使用 Azure 应用服务构建持续集成和持续交付(CI/CD)解决方案。
你不受限于部署中心内的生成提供程序选项,但使用应用服务可让你快速设置它们并获取一些集成的部署日志记录体验。
GitHub Actions 生成提供程序仅适用于 GitHub 部署。 从应用的部署中心进行配置时,生成提供程序通过将 GitHub Actions 工作流文件存入 GitHub 存储库来设置 CI/CD,以处理到应用服务的生成和部署任务。
对于基本身份验证,它将应用的发布配置文件添加为 GitHub 机密。 工作流文件使用此机密通过应用服务进行身份验证。 对于用户分配的标识,请参阅用户分配的标识选项对 GitHub Actions 有何用途?
它从工作流运行日志中捕获信息,并将其显示在部署中心的“日志”选项卡上。
可通过以下方式自定义 GitHub Actions 生成提供程序:
- 可以在 GitHub 存储库中生成工作流文件后对这些文件进行自定义。 有关详细信息,请参阅 GitHub Actions 的工作流语法。 只需确保工作流通过
azure/webapps-deploy
操作部署到应用服务。 - 如果所选分支受到保护,仍可以预览工作流文件而不保存配置,然后手动将其添加到存储库。 此方法不提供与 Azure 门户集成日志。
- 还可以使用 Microsoft Entra ID 中的服务主体进行部署,而不使用基本身份验证或用户分配的标识。 无法在门户中配置此方法。
部署期间我的应用会发生什么情况?
使用官方支持的部署方法时,对应用 /home/site/wwwroot
文件夹中的文件进行了更改。 这些文件用于运行你的应用。 由于文件锁定,部署可能会失败。 应用可能会在部署期间发生不可预测的行为,因为这些文件并非同时更新。 这种行为对于面向客户的应用来说是需要避免的。
可通过几种方法避免这些问题:
- 直接从 ZIP 包运行应用,而无需将其解压。
- 部署期间停止应用或启用脱机模式。 有关详细信息,请参阅处理部署过程中锁定的文件。
- 部署到暂存槽,且开启了自动交换。
常见问题解答
- 如果禁用基本身份验证,GitHub Actions 生成提供程序是否可以使用基本身份验证?
- 用户分配的标识选项对 GitHub Actions 有何用途?
- 为什么我会看到“此标识对此应用没有写入权限”的错误? 请选择其他标识,或者与管理员协作,在此应用上向标识授予网站参与者角色”?
- 为什么我会看到错误:“此标识对此应用没有写入权限。 请选择其他标识,或者与管理员协作,在此应用上向标识授予网站参与者角色”?
如果禁用基本身份验证,GitHub Actions 生成提供程序是否可以使用基本身份验证?
不。 尝试将 GitHub Actions 与“用户分配的标识”选项结合使用。
有关详细信息,请参阅 “在没有基本身份验证的情况下部署”。
用户分配的标识选项对 GitHub Actions 有何用途?
在 GitHub Actions 源下选择用户分配的标识时,应用服务在 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 管理员协作,使用 网站参与者角色创建用户分配的托管标识。 在 部署中心中,可以在 GitHub>Identity 下拉列表中选择标识。
有关使用替代步骤的详细信息,请参阅 使用 GitHub Actions 部署到应用服务。
为什么我看到错误“该身份用户对该应用没有写入权限”? 请选择其他标识,或者与管理员协作,在此应用上向标识授予网站参与者角色”?
该消息指示所选的用户分配的托管标识没有所需的角色在 GitHub 存储库和应用服务应用之间启用 OpenID Connect。 该标识在应用上必须具有以下角色之一: 所有者、 参与者或 网站参与者。 标识所需的最低特权角色是网站参与者。