能否使用 Git 将我的 ASP.NET 网站部署到 Microsoft Azure?
部署到 Microsoft Azure 系列文章的第二部分
这是关于部署到 Microsoft Azure 系列的第二部分。请查看第一部分 - 如何将我的 ASP.NET 网站部署到 Microsoft Azure?
为什么有些人似乎能轻易地掌握整个云发布过程?而另一些人却在原地打转,不知道如何利用所有那些很棒的功能?你也是其中之一吗?
也许你才刚开始学习编码。或者你已经在这个行业里摸爬滚打了很久,但从未亲自将网站发布到云端。你听说过 Git - 那是一个分布式源代码控制系统,对吧?但从未用过。无论如何,你将如何将其连接到 Azure?
像 Azure、BitBucket 和 Github 这样的云系统让这一切都变得轻而易举。刚开始时需要一些设置。一旦完成,就很简单了:
- 进行一些更改
- 将它们提交到 Git
- 将它们推送到 BitBucket
- 部署奇迹发生了
到目前为止,我们已经看到了一种将网站发布到 Azure 的简单方法。所涉及的网站是 DataTables 和 Web API 示例网站,我在之前的系列文章中已经介绍过。你可以在此处获取代码:使用 DataTables 和 Web API。将它保存在一个安全的地方,稍后我们会回来处理。
在本文中,我们将使事情变得更复杂一些。我们还将引入源代码控制。我们将使用 Git,一个流行的分布式版本控制系统。我们还将使用 Atlassian(开发 JIRA 的那群人,但别因此而退缩!)的 BitBucket。这允许我们将代码更改存储在云端。我们也可以使用 GitHub,但我更喜欢 BitBucket 的工作流程。我们将进行设置,以便 Azure 获取我们的网站更改并自己将其部署上线。这次不再需要从 Visual Studio 手动部署。一旦我们将代码更改推送到 BitBucket,它们就会部署到我们 Azure 上的网站。
那么,为了实现这一点,我们需要做什么?
- 安装 Git 和 Git 客户端 (GitKraken),以便在我们对代码进行更改时进行跟踪。
- 创建一个 BitBucket 帐户和存储库,以便在云端管理这些更改。
- 将 GitKraken 连接到 BitBucket。
- 在 Azure 中创建一个 webhook,以便 Azure 可以从 BitBucket 拉取更改并更新我们的网站。
- 进行一些更改!我们将把网站添加到我们的 Git 存储库。然后,我们将它们推送到 BitBucket,以查看一切正常运行。
让我们一一来看。所有这些说明都是针对运行 Windows 的机器。如果你使用的是 Linux 或 Mac,仍然可以按照说明进行,但你需要对某些步骤进行一些修改以适应你的环境。
第一步:安装 Git
我们将从安装 Git 本身开始。前往 Git for Windows 安装网站并下载最新版本的 Git。开始安装过程,确保选中了 Windows Explorer Integration。将 PATH 和行结束符设置保留为默认值。你也可以在附加功能屏幕上保留默认设置。你可以启用 Git Credential Manager,但这并非必不可少。如果你使用 HTTPS 与 BitBucket 通信,它会很有用。我们稍后将配置 SSH,所以你不需要它。稍后会详细介绍。
Credential Manager 会存储你的用户名和密码。这意味着你每次通过 HTTPS 推送代码时都不需要输入它们。再点击几次“Next”然后点击“Install”。
既然我们已经安装了 Git,让我们安装一个精美的 Git 客户端来管理我们的文件。市面上有许多 Git 客户端。我们刚刚完成的安装包括 Git GUI,它还可以。我个人最喜欢并且将在本文中使用的是GitKraken。点击大的下载按钮获取安装程序并启动安装过程。在它安装时,我们将创建一个 BitBucket 帐户和存储库。
第二步:创建 BitBucket 帐户和存储库
回到浏览器,前往BitBucket。点击标题中的大号“Get Started”按钮。输入一些帐户详细信息,然后检查你的收件箱以获取验证电子邮件。一旦你点击该链接并选择用户名,你应该就一切就绪了。
完成注册过程后,你应该会看到一个空的仪表板。让我们添加一些内容使其更有趣。点击“Create repository”链接。如果你展开高级设置,可以添加描述并启用问题跟踪和 wiki 等额外功能(如果你愿意)。
如果你对 fork(分支)感到困惑,它不是一个园艺术语或委婉说法。事实上,它是一种复制存储库的方法。你可以 fork 一个存储库,然后在自己的隔离副本中进行操作和更改。如果你想将一些更改贡献回原始存储库,你可以这样做。你提交一个 pull request。这会通知存储库所有者你有了更改。他们可以审查这些更改,并在需要时将其合并到主存储库中。我们将在下一篇文章中探讨 pull request 和合并过程的工作原理。
现在我们需要往我们的存储库里放点东西,可以说。我们将添加本地机器上的项目代码,所以暂时,我们只添加一个 *.gitignore* 文件。点击“Create a .gitignore”按钮开始。
在这个阶段我们不需要添加太多东西。只需要足够阻止我们提交 *bin*、*obj* 或 *Packages* 文件夹的内容。更新文件后,点击“Commit”按钮。现在你拥有一个包含内容的活动存储库了!
第三步:将 GitKraken 连接到 BitBucket
现在你已经安装了 GitKraken 并创建了 BitBucket 存储库,是时候将它们连接起来了。再次打开 GitKraken,转到 File > Clone Repo,然后选择 BitBucket 选项卡。点击大的绿色 Connect 按钮。
你应该会看到我们没有连接到 BitBucket。点击大的绿色 Connect 按钮,它将在你的浏览器中启动 BitBucket。你需要确认 GitKraken 被允许访问你的 BitBucket 帐户。如果一切顺利,你应该会看到 GitKraken 发出的一个大大的成功消息。
还在跟着吗?再次打开 GitKraken,你应该会看到你现在已连接到 BitBucket。这就是通过 HTTPS 开始使用你的 BitBucket 存储库所需的一切。
HTTPS 和 SSH 到底是怎么回事?
BitBucket 进行身份验证的机制相当复杂。我将尽力在此为你总结。你不需要全部理解才能使用它!
BitBucket(以及 GitHub)有两种通信方法。有 HTTPS 和 SSH。HTTPS 设置起来更简单,每次推送或拉取存储库文件时都会发送你的用户名和密码。SSH 更安全,因为它使用公钥和私钥配对进行身份验证。公钥存储在 BitBucket 中。私钥保存在你的机器上。
SSH 使用你的私钥加密发送到 BitBucket 的每一条消息。这会创建一个数字签名。签名会附加并随消息一起发送。BitBucket 使用该签名和公钥来确认消息源自私钥所有者。只要没有人知道私钥,数据传输就始终是安全的。你可以在 Wikipedia 上阅读更多关于此内容的信息:Public-key cryptography
使用 GitKraken 配置 SSH 非常简单,所以我们现在也来配置一下。点击大的绿色 Generate SSH key 按钮。这会在你的本地计算机上添加一个新的 SSH 公钥-私钥对。你需要将公钥添加到你的 *BitBucket* 帐户。点击大的蓝色 Copy 按钮,它将复制公钥并为你打开 *BitBucket*。进入 *BitBucket* 后,如果你尚未进入帐户设置页面,请前往该页面。选择 SSH Keys 并添加你的 GitKraken 密钥。
现在你应该可以在 GitKraken 的 Clone 屏幕上看到你的 BitBucket 存储库了。选择它,输入你机器上的本地路径以存储文件,然后点击 Clone。
第四步:创建 Azure Webhook
到目前为止,我们已经有了一个云端的 Git 存储库来管理我们的代码更改。我们正在设置,以便 Azure 立即部署这些更改。要做到这一点,我们需要一个 webhook。它们很容易设置。我们将创建 BitBucket 和 Azure 之间的链接。我们将告诉 Azure 需要监视哪个分支以进行更改。在我们的例子中,它是 master 分支。接下来会发生什么:
- 我们在 master 分支上进行一些更改
- 我们将它们推送到 BitBucket
- Azure 看到这些更改,因为它通过 webhook 监视着 master 分支
- 然后 Azure 从该分支拉取代码,编译它,并将其部署到我们的网站
- 如果代码未编译或出现问题,部署将失败。在这种情况下,网站不会更新。
登录你的 Azure 门户并选择你的应用服务。还没有 Azure 帐户或应用服务?本系列的第一篇文章应该能帮你解决这个问题。再次附上链接:将 ASP.NET 网站部署到 Microsoft Azure。别担心,我会等你。
一切就绪?太棒了,我们继续。从左侧菜单中选择 Deployment options。选择 **BitBucket** 作为部署源。授权 Azure 使用你的 BitBucket 帐户。选择我们将要使用的 BitBucket 项目并选择分支。
完成后,你应该会在 Deployment options 面板中看到最初的 *.gitignore* 提交。这意味着我们已经全部设置好了。现在我们可以将网站添加到 BitBucket 并查看所有这些内容了!
第五步:进行一些更改
现在剩下要做的就是将我们的网站添加到存储库。然后我们就可以看到这一切是如何工作的了。还记得文章开头提到的 DataTables 代码吗?现在把它找出来并添加到存储库中。将解决方案解压到你在 GitKraken 中克隆存储库的文件夹中。打开 GitKraken,你应该会看到所有文件都列为 Unstaged。暂存所有添加的文件,添加一个合适的提交消息,然后提交更改。
现在我们将做一些更改。我更新了HomeController的Index操作中的页面标题。我也在布局页面中的Home ActionLink中更改了它。你可以随意更改任何内容!进行一两个更改,添加提交消息,然后提交。现在将你的更改推送到 BitBucket。返回 Azure 门户的 Deployment Options 选项卡。等待几分钟,你应该会看到另一个带有你提交消息的条目。
要检查它是否有效,请浏览到你的网站,查看你的更改如何大放异彩。完成!