使用 Jenkins 在 Azure Web App 上对 ASP.NET Core 应用程序进行持续集成和部署 (CI/CD) – 第二天





5.00/5 (6投票s)
在本文中,我们将把 ASP.NET Core 应用程序发布到 Azure App Service,并在进行下一步之前在 Azure 上配置 Jenkins。
主题
本系列文章将解释如何使用 Jenkins 在本地开发环境中对 ASP.NET Core Web 应用程序进行 CI 和 CD,将 Web 应用程序发布到 Azure Web App Service,并在 Azure 上配置 Jenkins,以实现托管应用程序的持续集成和持续部署。GitHub 将作为源代码控制存储库。我们将使用 Jenkins 创建一个管道,该管道从 GitHub 获取代码、构建代码、运行测试并部署包。这将是在 GitHub 上的代码每次提交时都要执行的重复性任务。
在本系列的第一篇文章中,我们了解了涉及的概念、术语、技术,安装了 Jenkins,创建了 ASP.NET Core 应用程序,并通过两种方法(管道方法和自由风格项目方法)使用 Jenkins 对 ASP.NET Core 应用程序进行了持续集成。在本文中,我们将把 ASP.NET Core 应用程序发布到 Azure App Service,并在进行下一步之前在 Azure 上配置 Jenkins。
路线图
以下是我们将在使用 Jenkins 在 Azure Web App 上对 ASP.NET Core 应用程序进行持续集成和部署 (CI/CD) 的端到端开发和配置中遵循的路线图。
- 第一天:使用 Jenkins 进行 ASP.NET Core 应用程序的持续集成
- 第二天:将 ASP.NET Core 应用程序发布到 Azure App Service 并配置 Azure 上的 Jenkins
- Day 3: 将 Jenkins 与 Azure Active Directory 和服务主体集成
- 第四天:使用 Jenkins Azure 管道在 Azure 上对 ASP.NET Core 应用程序进行 CI/CD
必备组件
在开始之前,开发人员需要在其计算机上具备以下先决条件。
- Visual Studio 2017/2019
- 已安装 Dotnet 2.1 SDK
- Azure 订阅(免费/付费)
- Java 1.5 或更高版本
- Git 帐户
- Git for Windows
将 ASP.NET Core 应用程序发布到 Azure App Service
我们已经在本地配置和测试了 Jenkins。现在是时候使用 Azure Web App 服务将我们的 Web 应用程序发布到 Azure,并在 Azure 上配置 Jenkins 以进行持续集成和部署。
Jenkins 的作用是获取 Azure 上的 GitHub 代码,对其进行编译,如果编译成功,则将更改发布到已部署的网站。要实现这一点,应用程序已需要在 Azure App Service 上进行预配。
所以,我们先将应用程序部署到 Azure,并使其在公共 URL 上运行。
- 在 Visual Studio 中打开应用程序的解决方案文件。右键单击 Web 项目,然后单击发布。
- 在下一个屏幕上,选择“App Service”,然后选择“创建新”选项。单击发布。
- 单击发布后,系统会要求您创建应用服务。提供所需的字段,如下图所示。
- 应用名称:应用程序的名称。您可以选择任何您喜欢的名称。
- 订阅:选择您拥有的 Azure 订阅。
- 资源组:您可以使用现有的资源组或创建一个新的资源组。我创建了一个新的资源组,并将其命名为
JenkinsIntegrationRSG
。 - 托管计划:在这里创建一个新的托管计划,给它一个名称。在本例中,它是
JenkinsIntegrationHP
, 选择一个位置,并且由于我们将其用于示例应用程序,因此在大小中选择“免费”。单击确定。
提供所有详细信息后,单击“创建”。这将需要一些时间来创建应用服务并将应用程序部署到该应用服务。
- 部署完成后,您将在浏览器中打开已部署应用程序的 URL。正如我们在这里看到的,该应用程序已部署到 Azure 并具有公共 URL,我们在这里看到的托管名来自 Azure 上的托管计算机。
- 在 Azure 门户上验证相同内容。登录到您的 Azure 门户,您可以在仪表板上找到新创建的资源,其名称与从 Visual Studio 创建应用服务时提供的应用服务名称相同。在门户上导航到该资源以检查资源组和 URL。资源组是我们发布时提供的相同资源组。
在 Azure 上配置 Jenkins
我们将在 Azure 上配置 Jenkins 服务器,并将我们的应用程序集成到 CI 和 CD。
在继续之前,请卸载安装在本地计算机上的 Jenkins,并删除在 Program Files 中创建的 Jenkins 文件夹。
在 Azure 上创建 Jenkins 服务器
我们在本地开发计算机上安装并运行了 Jenkins。让我们看看如何在 Azure 上配置它。
- 在 Azure 门户上,创建一个新资源,然后在搜索选项中搜索 Jenkins,如下图所示
- Jenkins 资源从 Azure Marketplace 加载,单击创建以在 Azure 上部署新的 Jenkins 服务器。
- 在表单中提供所需信息,然后单击确定。
- 名称:为您的 Jenkins 服务器提供一个有意义的名称
- 用户名:提供一个用户名,该用户名可用作 Jenkins 服务器计算机的管理用户。
- 身份验证类型:您可以选择 SSH 密钥或密码。我选择了密码,所以请提供一个您能记住的密码,并确认密码。
- 订阅:选择您的 Azure 订阅。
- 资源组:您可以创建一个新的资源组或使用现有的资源组。我创建了一个名为 JenkinsConfigRSG 的新资源组。
- 位置:为 Jenkins 服务器选择一个位置。
- 填写附加设置表单。
- 大小:选择 Jenkins 服务器的大小。为了演示,我选择了最小的一个。
- VM 磁盘类型:选择 SSD。
- 虚拟网络:此项是可选的,暂时保留。
- 子网:配置子网名称,然后按确定。
- 公共 IP 地址:您可以将其保留为默认值,或提供自己的名称。
- 域名标签:提供一个名称,该名称将附加到 Jenkins VM 的 cloudapp URL。我将其命名为“
jenkinsintegration
”。 - Jenkins 版本类型:选择所需的版本类型。我选择了 LTS。
- JDK 类型:选择 Zulu。
- 在集成设置中,选择否以启用云代理。
- 单击确定完成。在摘要中,验证详细信息,然后单击确定。
- 在购买页面上,阅读条款并单击创建。创建和部署 Jenkins 服务器将需要一些时间。
解锁 Jenkins
Jenkins 部署完成后,就可以解锁它了。这与我们在开发计算机上本地解锁的方式略有不同。
- 在门户上,导航到新创建的 Jenkins 资源组。
- 在资源组页面上,单击新创建的 Jenkins 虚拟机。
- 我们看到这里的操作系统是 Linux,因为我们将 Jenkins 服务器部署在 Linux 上,并且我们将使用 Linux 的方式来解锁 Jenkins。复制 VM 的 DNS 名称。
- 在您的计算机上打开浏览器,并浏览复制的 DNS 名称。这将打开一个 Jenkins 页面,您将在其中看到 SSH 字符串。复制该字符串。
- 打开命令提示符,并在复制的 SSH 字符串中,将“
username
”部分替换为 Jenkins VM 用户名的名称。在我们的例子中,它是“Jenkins
”。我们在创建 Jenkins 服务器时,在基本设置中提供了它。现在将修改后的字符串粘贴到命令提示符中,然后按 Enter。 - 这将要求您提供 Jenkins VM 的密码。输入创建 Jenkins 服务器时提供的密码,然后按 Enter。这将登录到 Jenkins VM,即 Linux 计算机,并打开一个 SSH 会话。现在我们可以在此终端中使用 Linux 命令。
要解锁 Jenkins,我们需要从 Linux 计算机上安装的 Jenkins 中获取管理员密码。键入命令“sudo cat /var/lib/jenkins/secrets/initialAdminPassword” 以检索初始管理员密码,如下图所示。 - 现在,在您的本地计算机上,再次浏览到 URL https://:8080,这将显示解锁 Jenkins 屏幕,在最后一步中提供检索到的密码并解锁 Jenkins。单击继续。
- 在开始使用页面上,安装建议的插件,即默认选项。
- 提供创建管理员用户的详细信息。
这样,Jenkins 就可以在 URL https://:8080 上运行了。
结论
在本文中,我们学习了如何将 ASP.NET Core 应用程序发布到 Azure App Service,并在 Azure 上配置 Jenkins 服务器。在下一篇文章中,我们将学习 Azure Active Directory 和服务主体,并将 Jenkins 与 Azure 服务主体集成,然后再进行使用 Jenkins Azure 管道在 Azure 上对 ASP.NET Core 应用程序进行 CI/CD。
历史
- 2019 年 11 月 27 日:初始版本