如何自动部署ASP.NET Core应用程序到Heroku

328 阅读6分钟

ASP.NET核心以其跨平台的兼容性和优雅的结构而闻名,是微软为构建现代网络应用而创建的一个开源框架。有了它,开发团队可以建立任何规模和复杂性的单体网络应用程序和RESTful API。由于CircleCI改进了基础设施和对Windows平台和技术的支持,为ASP.NET Core应用程序设置自动化部署流程变得更加容易。

本文将指导您完成ASP.NET Core应用程序的自动化部署到Heroku。

先决条件

这是你从本教程中获得最大收益所需的项目列表。

克隆和运行演示的ASP.NET Core项目

首先,你将从GitHub克隆一个用ASP.NET Core MVC构建的简单应用程序。要做到这一点,请输入这个命令。

git clone https://github.com/yemiwebby/dotnet-heroku-starter.git dotnet-heroku-demo-app

这将把启动程序下载到你的开发文件夹(或你运行该命令的地方)中一个名为dotnet-heroku-demo-app 的文件夹。

接下来,进入新克隆的应用程序并运行该应用程序。

// Move into the project folder
cd dotnet-heroku-demo-app

// run the application
dotnet watch run

你可能会得到一个关于框架版本兼容性的错误。

ASP.NET Core version error

出现这个错误是因为默认情况下,.NET框架应用程序是在其构建的版本上运行的。该演示应用程序是用ASP.NET Core版本3.1 。如果你运行的是不同的版本,就会出现上述错误。通过运行这个命令,检查当前安装在你电脑上的版本。

dotnet --version

如果输出的是版本3.1 以外的版本,你可以通过编辑应用程序根部内的demoDotnet.csproj 文件来修复它。像这样更新它。

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp5.0</TargetFramework>
  </PropertyGroup>
</Project>

用前面显示的版本取代5.0 ,从你的终端。如果你有一个类似于a.b.c 的版本,你只需要在配置中添加a.b 。完成后,用dotnet watch run 再次运行该项目。

通过导航到http://localhost:5000 ,打开默认主页。

Default homepage for sample app

这里没有什么事情发生。对ASP.NET Core应用程序的默认主页上的内容做了一个小小的修改。

现在,按CTRL + C ,停止应用程序的运行。

在Heroku上创建应用程序

你需要做的下一件事是在Heroku上创建一个新的应用程序。这个新的应用程序将承载并运行我们的ASP.NET Core应用程序。转到Heroku仪表板开始。点击新建,然后点击新建应用程序。在表格中填写你的应用程序的名称和你的地区。

Create the Heroku App

然后,点击创建应用程序按钮。你将被重定向到你新创建的应用程序的部署视图。

添加ASP.NET Core构建包

正如Heroku Buildpacks页面上所详述的,buildpacks扩展了Heroku的构建系统,以支持你选择的任何编程语言。Buildpacks还可以使二进制包在运行时可用。

为了使这个项目在Heroku上成功运行,你需要添加一个构建包。要做到这一点,单击 "设置"选项卡。在buildpacks部分,点击Add buildpack按钮。

这就会出现一个表格,你可以选择一个官方支持的构建包,或者为你的构建包提供一个URL。目前,Heroku没有官方支持的ASP.NET Core构建包。这没关系,你可以提供.NET Core构建包的URL来代替。将https://github.com/heroku-softtrends/heroku-buildpack-dotnetcore.git ,然后点击保存更改

Add buildpack using a URL

我们需要的最后一件事是一个API密钥。你将使用这个密钥和应用程序的名称来连接你的CircleCI管道和Heroku。要获得你的API密钥,打开账户设置页面。

Click Account Settings

滚动到API密钥部分。

Reveal API Key section of Account Settings

点击 "揭示"按钮,复制API密钥。把它保存在你以后能容易找到的地方。

添加CircleCI配置文件

接下来,我们需要添加CircleCI的管道配置。对于这个项目,管道将包括安装项目的依赖性和编译生产的应用程序的步骤。

在你项目的根部,创建一个名为.circleci 的文件夹。在该文件夹中,创建一个名为config.yml 的文件。在新创建的文件中,添加这个配置。

version: 2.1
orbs:
  heroku: circleci/heroku@1.2.6
  windows: circleci/windows@2.4.1
jobs:
  build:
    description: Build application with Release configuration
    executor:
      name: windows/default
    steps:
      - checkout
      - restore_cache:
          keys:
            - dotnet-packages-v1-{{ checksum "demoDotnet.csproj" }}
      - run:
          name: "Install project dependencies"
          command: dotnet.exe restore
      - run:
          name: "Build Application according to some given configuration"
          command: dotnet.exe build --configuration Release
workflows:
  heroku_deploy:
    jobs:
      - heroku/deploy-via-git

这个配置拉入了Heroku orbcircleci/heroku ,它自动让我们访问一组强大的Heroku作业和命令。其中一个作业是heroku/deploy-via-git ,它将你的应用程序从GitHub repo直接部署到你的Heroku账户。它还会拉入Windows orb,为你提供构建Windows项目的工具,如通用Windows平台(UWP)应用程序、.NET可执行文件或Windows特定项目(如.NET框架)。

该配置指定了一个名为build 的工作。它使用windows/default 执行器,安装项目所需的所有依赖项,然后构建项目。

接下来,我们需要在GitHub上建立一个仓库,并将项目链接到CircleCI。

接下来,登录你的CircleCI账户。如果你用GitHub账户注册,你所有的仓库都会在项目的仪表板上出现。

点击为你的dotnet-heroku-demo-app 项目设置项目

Set Up Project

你会被提示写一个新的配置文件或使用你项目中的现有配置文件。选择现有的选项。输入你的代码在GitHub上存放的分支名称,然后点击设置项目按钮。

Select Existing Configuration File

你的第一个工作流程将开始运行,但它会失败。

Build fails

这个部署过程失败是因为我们没有提供我们的Heroku API密钥。我们现在可以解决这个问题。点击项目设置按钮,然后点击环境变量。添加这两个新变量。

  • HEROKU_APP_NAME 是Heroku中的应用名称 ( )dotnet-core-heroku-demo-app
  • HEROKU_API_KEY 是你从账户设置页面获取的Heroku API密钥。

选择 "重新运行工作流"(Rerun Workflow from Failed),重新运行Heroku部署。这一次,你的工作流将成功运行。

Build Successful

为了确认你的工作流是成功的,你可以在浏览器中打开你新部署的应用程序。你的应用程序的URL应该是这样的格式https://<HEROKU_APP_NAME>.herokuapp.com/

Heroku Live App

结语

在本教程中,我向您展示了如何将ASP.NET Core应用程序部署到Heroku平台上,而不需要费力。CircleCI基础设施可以很容易地使用现有的工具来快速处理部署,让你和你的团队有宝贵的时间来专注于开发你的应用程序。