65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Visual Studio Team Services (VSTS) 和 .NET Core 进行 Azure 部署

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.96/5 (5投票s)

2018 年 8 月 10 日

CPOL

11分钟阅读

viewsIcon

8485

在 VSTS 中使用 Azure 和 Visual Studio 设置持续集成和部署到 Azure。文章“使用 Visual Studio Team Services (VSTS) 和 .NET Core 进行 Azure 部署”首次发布在 Sander's bits 上。

在三年沉寂之后,我决定写一篇新的博客文章 *人群沸腾*! 自从我上一篇文章以来,发生了很多事情。 我写了一本关于 持续集成、交付和部署(主要使用 JavaScript 和 Jenkins)的书;获得了 Microsoft Azure 认证;利用这些 Azure 技能找到了一份新工作;并且我还有了自己的公司。 三年前,我以一篇关于数学的博客系列结束,但我不会完成它。 如果您非常期待 #4,我深感抱歉…… 我现在的重点将主要放在 Microsoft Azure、Visual Studio Team Services (VSTS) 和 C# .NET Core 上。 那么,事不宜迟,我们来谈谈这些!

Microsoft Azure

Microsoft Azure 已经存在很多年了,您可能听说过它。 它是微软的云平台,直接与亚马逊的 AWS 和谷歌的 Google Cloud 竞争。 如果您不太清楚“云”是什么(除了一个被炒作的热门词),我建议您深入了解一下,因为我相信它是未来(事实上,它就是现在)! 如果您还没有帐户,我建议您创建一个。 它是免费的,您只需要一张信用卡和一个 Microsoft 电子邮件帐户,如 Hotmail 或 Outlook。

请注意,Azure 目前是免费的。 您会获得免费积分,有效期为一个月。 某些服务需要按月付费,其他服务按使用量付费。 仅仅拥有一个空的 Azure 帐户总是免费的。 在本文中,我们将使用 App Service 在 Azure 中托管一个默认的 Web 应用程序(无论如何,这几乎不会花费您任何费用)。

Visual Studio Team Services (VSTS)

VSTS 是微软的 Team Foundation Service (TFS) 的云版本,TFS 是他们用于持续集成和部署、源代码管理以及敏捷工具(如 SCRUM 和 Kanban 板)的工具。 同样,如果您还没有订阅,我建议您创建一个。 就像 Azure 一样,它是免费的,您需要一个 Microsoft 电子邮件地址,如 Hotmail 或 Outlook。 对于 VSTS 的免费版本,您可以获得相当多的功能,例如每月 240 分钟的免费生成时间以及无限免费的私有 Git 存储库(始终使用 Git,切勿使用 Team Foundation Service Control (TFSC))。 拥有 MSDN 订阅,您可以获得一些额外功能,但免费层级对于本文来说已经足够了。

.NET Core

我真的需要解释一下吗? 在过去的几年里,微软一直专注于 .NET Core,这是一个开源的、跨平台的 .NET Framework 子集。 即使在最新的 .NET Core 2.1 版本中,它仍然存在一些问题,但它也非常棒,我已经在生产软件中使用了它。 它与完整的 .NET Framework 有些不同,但差别不大。 您可能需要下载并安装最新的 SDK,所有这些都可以在 .NET Core GitHub 页面上找到。 Visual Studio 对 .NET Core 的支持从 Visual Studio 2017 开始,所以请确保您已更新,否则您大概可以按照常规的 .NET Framework ASP.NET Web 应用程序进行操作。

创建 .NET Core 项目

所以,让我们把这些工具放在一起。 我们首先在 VSTS 中创建一个新的(私有)项目,这很简单。 事实上,当您创建 VSTS 帐户时,您可能已经创建了一个。 我保留了默认值,`MyFirstProject`。 当您在 VSTS 中浏览到项目的“代码”选项卡时,您可以在页面底部初始化您的存储库,并添加一个 `README.md` 文件和一个 `.gitignore` 文件(选择 Visual Studio)。

Initialize a repository in VSTS

在 VSTS 中初始化存储库。

您可以复制链接,或者直接在下一页的右上角的“**克隆**”按钮下克隆到 Visual Studio。 我假设您知道 Git 的工作原理,所以这里不再赘述。

一旦您在本地拥有了存储库,我们就可以开始添加一些代码了。 由于我们专注于使用 VSTS 部署到 Azure,所以您有什么代码并不重要,只需在 Visual Studio 2017 中创建一个 ASP.NET Core Web 应用程序即可。 您可以选择常规的 Web 应用程序(默认使用 Razor View Pages)或 Model-View-Controller 项目,随您喜欢。 一旦默认的 Web 应用程序模板加载,您就可以将其提交并推送到您的 Git 存储库,然后我们就可以开始有趣的环节了!

Azure App Services

下一步,我们将稍微弄一下 Azure。 登录到您的 Azure 门户,找到您的 App Services。 只需单击“添加”按钮,选择“Web App”,然后单击“创建”。 在下一页,您可以为您的 Web 应用设置一些选项,例如您的应用程序将托管的 URL(始终以 .azurewebsites.net 结尾)。

New Azure Web App

新的 Azure Web App

您还必须创建一个资源组或选择一个现有的资源组。 资源组只是一种将特定资源分组以便快速概览的方式。 例如,您可以为开发、测试、验收和生产环境设置单独的资源组,或者为您的客户门户和内部工具设置单独的资源组,一切由您决定。

这里最重要的设置是 App Service Plan/Location。 这基本上是一个您需要付费的服务器。 系统会为您生成一个新的计划,但您也可以自己创建一个。 您有不同的价格层级,具有不同的硬件规格和 Azure 功能,如 CPU、内存、自定义域、暂存槽和每日备份。

您的计划的位置决定了服务器的物理位置。 对我来说,在荷兰,西欧是理想的选择,因为我知道它在阿姆斯特丹。 就选择标准的 S1 计划即可。 即使您没有免费积分,在阅读完这篇博文后也可以删除它,它只会花费您大约 0.03 美元,所以不用担心成本。

从 Azure 设置部署

现在,我们还在 Azure 中。 您可能已经在 VSTS 中看到了“**生成和发布**”按钮。 在那里,您可以创建新的生成和部署管道,这很棒,但也需要一些工作。

生成管道可以在推送到 Git 后自动生成和测试您的软件。 这包括还原 NuGet 包、最小化和捆绑您可能拥有的任何 HTML、CSS 和 JavaScript、执行任务运行器以及基本上您需要做的任何事情来构建和运行您的软件。 当您的最新提交被生成和测试后,VSTS 可以创建一个用于发布的构件。

部署管道可以从生成管道下载构件并将其部署到 Azure(或您自己的本地服务器)中。 部署的触发器通常是生成成功,但也可能是推送到 Git 或手动触发。

当您自动生成和测试您的软件时,这称为持续集成 (CI);当您的软件也自动部署时,这称为持续部署 (CD)。 介于两者之间有一种模式,它会推迟部署,直到用户明确按下按钮并给出“确定”信号,这称为持续交付。 当您同时进行 CI 和持续交付和/或部署时,您就在做“CI/CD”。

让我们用几乎单击按钮的方式来设置它。 Azure 中有两个选项。 在您的 Web App 中,您可以从“**部署选项**”菜单项配置部署,或者使用较新的“**部署中心 (预览版)**”,顾名思义,它仍处于预览阶段。

Deployment options in Azure

Azure 中的部署选项

部署选项

它真的非常简单,以至于我不确定是否应该带您完成接下来的步骤。 单击“**部署选项**”菜单项,然后填写您要使用的选项。

Deployment settings in Azure

Azure 中的部署设置

就是这样。 如果您现在浏览到 Web App 的“部署选项”,您会看到 Azure 显示了您所有的提交。 如果您将新的提交推送到您的存储库,您甚至可以在 Azure 中看到生成状态,因为 Azure 已将其链接到您的 VSTS 帐户。

Continuous deployment in Azure

Azure 中的持续部署

部署完成后,浏览到您的 Azure 网站(对我来说是 imunique.azurewebsites.net),然后欣赏一下,您的网站已上线并运行! 尝试更改主页上的某些内容,将其推送到 Git,等待几分钟,然后查看您的网站更新。

部署中心 (预览版)

我猜微软计划用“部署中心 (预览版)”取代“部署选项”。 如果您已经使用“部署选项”设置了 CI/CD,您在这里也会看到您的提交。 为了本博客的目的,我们将“**断开连接**”(顶部菜单中的按钮)。

现在转到部署中心 (预览版),您应该会看到各种源代码管理选项,如 VSTS、Github 和 Bitbucket。 它比大多数 Azure 面板更具视觉吸引力。 所以选择 VSTS 并继续。 接下来,您必须选择一个生成提供程序。 我对 Kudu 没有任何经验,所以选择“**VSTS 持续交付**”(不知为何它不是默认选项)。

Deployment center in Azure

Azure 中的部署中心

在下一个面板中,您可以选择您的 VSTS 帐户和存储库。 不幸的是,在撰写本文时,这里似乎存在一个错误,阻止我选择帐户。 它过去曾工作过,Azure 团队表示他们已经在即将发布的版本(相当频繁)中修复了这个问题…… 所以自己尝试一下,这可能会对您有效!

无论如何,如果您继续,Azure 会在 VSTS 中创建一个生成管道和部署管道! 这相当酷。 它让您可以完全控制您的生成和部署,因为您可以根据需要进行调整。 同时,部署中心现在显示了已部署的生成。

VSTS 中的管道

所以,转到您的 VSTS 并查看生成。 用户界面并不总是直观的,但您应该能够找到它。 您可以编辑生成并随意点击。 您无需更改它,但可以。

VSTS build

VSTS 生成

部署有点不同。 对于每一块代码只有一个生成,但可以有多个部署,例如,用于您的整个 DTAP 街道(开发、测试、验收和生产)。 Azure 创建了一个具有单个环境“**Dev**”的发布。

VSTS release

VSTS 发布

您可以在该环境的“**任务**”中更改部署(单击 Dev 磁贴或在顶部菜单中选择任务)。 这些任务看起来与 VSTS 生成类似,并且可以为每个环境(完全)不同。 大多数情况下,您的任务将大致相同,而您只需要更改一些每个环境不同的值。 您可以使用“**变量**”来表示这些不同的值,但这超出了本文的范围。

克隆整个环境(包括其任务和变量)也很容易。 只需将鼠标悬停在要克隆的环境的磁贴上,就会出现一个“**克隆**”按钮。 单击它,您将获得一个与您克隆的环境完全相同的新环境。 构建和发布的进一步设置超出了本文的范围,但如果您愿意,可以随意点击。

完成后,只需删除发布和生成管道(按此顺序)。 另外,请确保在 Azure 部署中心断开连接。

从 Visual Studio 2017 进行部署

最后,让我们切换回 Visual Studio。 您可以在 Visual Studio 中执行完全相同的操作。 右键单击您要发布的项目(即您的 Web 项目),然后在下拉菜单中选择“**概述**”。 在打开的页面上,转到左侧菜单中的“**发布**”。

在这里,您可以发布或设置您的 CI/CD。 单击“**持续交付**”下的“**开始**”按钮,您可以再次选择 VSTS 订阅和 App Service(它默认创建一个新的 App Service,但您也可以选择一个现有的)。 只需单击“**确定**”按钮,结果将与我们在部署中心所做的一样。 它将创建一个新的生成和部署管道,该管道也可在您的部署中心中看到。 非常酷!

回到 Visual Studio 中的发布页面,您也可以直接发布。 如果您想立即将某项内容发布到 Azure,这非常有用。 只需单击“**发布**”下的“**开始**”按钮。 您现在可以创建一个新的 Azure App Service 或选择一个现有的。 只需按照向导操作,您的应用程序将直接发布到 Azure,无需生成或部署管道。 但请注意,您本地生成的版本将被部署,这通常与生成服务器生成的版本不同。

总结

就是这样! 部署从未如此简单! 只需几分钟,我们就创建了一个应用程序,将其放入源代码管理,并将其部署到云端,供全世界查看(您可以限制访问,但这超出了范围)。 过去,设置新服务器可能需要数小时(如果还需要订购,则需要数天甚至数周),但这个替代方案要快得多,也便宜得多。

下一步是使用 ARM (Azure Resource Management) 模板自动创建 App Services 和其他 Azure 资源。 查看 我关于 ARM 模板的帖子 以开始。

别忘了删除您的 App Service 和 App Service Plan,否则您将需要付费!

祝您好运,编码愉快!

文章 使用 Visual Studio Team Services (VSTS) 和 .NET Core 进行 Azure 部署 首次发布在 Sander's bits

© . All rights reserved.