使用 Jenkins 在 Azure Web App 上持续集成和部署 (CI/CD) ASP.NET Core 应用程序 – 第二天
介绍
本系列文章将解释如何在本地开发环境中使用 Jenkins 进行 ASP.NET Core Web 应用程序的 CI 和 CD。它还展示了将 Web 应用程序发布到 Azure Web 应用服务以及在 Azure 上配置 Jenkins 以实现托管应用程序的持续集成和持续部署。GitHub 将 DevOps 作为源控制存储库。我们将使用 Jenkins 创建一个管道,该管道从 GitHub 获取代码、构建代码、运行测试并部署包。每次提交位于 GitHub 上的代码时,这将是一项重复性任务。
在本系列的第一篇文章中,我们通过管道方法和自由式项目方法两种方法了解了概念、术语、涉及的技术、安装 Jenkins、创建 ASP.NET Core 应用程序以及使用 Jenkins 持续集成 Asp.NET Core 应用程序。在本文中,我们将在继续下一步之前将 ASP.Net 核心应用程序发布到 Azure 应用服务并在 Azure 上配置 Jenkins。
路线图
以下是我们将使用的路线图,以完全学习使用 Jenkins 在 Azure Web 应用程序上进行 Asp.Net Core 应用程序的持续集成和部署 (CI/CD) 的端到端开发和配置。
- 第 1 天:使用 Jenkins 持续集成 ASP.NET Core 应用程序。
- 第 2 天:将 ASP.Net 核心应用程序发布到 Azure 应用服务并在 Azure 上配置 Jenkins。
- 第 3 天:将 Jenkins 与 Azure Active Directory 和服务主体集成。
- 第 4 天:使用 Jenkins Azure Pipeline 在 Azure 上对 ASP.NET Core 应用程序进行 CI/CD。
必备条件
在开始这篇文章之前,先阅读本系列的第一篇文章。
以下是开发人员在开始之前在他们的机器上拥有的必备条件:
- Visual Studio 2017/2019。
- 已安装 Dotnet 2.1 SDK。
- Azure 订阅免费/付费。
- Java 1.5 或更高版本。
- Git账号
- 适用于 Windows 的 Git
将 ASP.NET Core 应用程序发布到 Azure 应用服务
我们在本地配置和测试了 Jenkins。现在是使用 Azure Web App 服务将我们的 Web 应用程序发布到 Azure 并在那里配置 Jenkins 以进行持续集成和部署的时候了。
Jenkins 的作用是从 Azure 上的 GitHub 获取代码,编译它,如果编译成功,将更改发布到部署的网站。为此,已需要在 Azure 应用服务上预配应用程序。
让我们首先将应用程序部署到 Azure 并让它在公共 URL 上运行。
- 在 Visual Studio 中打开应用程序的解决方案文件。右键单击 Web 项目,然后单击发布。
- 在下一个屏幕上,选择“应用服务”并选择“新建”选项。点击发布。
- 当您单击“发布”时,系统会要求您创建应用服务。提供必填字段,如下图所示。
-
- 应用程序名称:应用程序的名称。您可以提供任何您选择的名称。
- 订阅:选择您拥有的 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 市场加载,单击创建以在 Azure 上部署新的 Jenkins 服务器。
- 在表单上提供所需的信息,然后单击“确定”。
名称:您的 Jenkins 服务器的一个有意义的名称。用户名:提供可用作 Jenkins 服务器机器管理员用户的用户名。身份验证类型:您可以选择 SSH 密钥或密码。我选择了密码,因此提供一个您可以记住的密码并确认密码。订阅:选择您的 Azure 订阅。资源组:您可以创建新资源组或使用现有资源组。我创建了一个名为JenkinsConfigRSG的新文件。
位置:为 Jenkins 服务器选择一个位置。
- 填写附加设置表格。
大小:选择 Jenkins 服务器的大小。为了演示目的,我选择了最小的一个。VM 磁盘类型:选择 SSD。虚拟网络:这是可选的,暂时不用。子网:配置子网名称并按 OK。公共 IP 地址:您可以将其保留为默认值或提供您自己的名称。
域名标签:提供一个名称,该名称另外会将cloudapp URL附加到 Jenkins VM。我给它起了个名字“jenkinsintegration”。
Jenkins 发布类型:选择所需的发布类型。我选择了 LTS。
JDK 类型:选择祖鲁语。
- 在集成设置中,选择“否”以启用云代理。
- 单击确定完成。在“摘要”上,验证详细信息并单击“确定”。
- 在“购买”页面上,阅读条款并单击“创建”。创建和部署 Jenkins 服务器需要一些时间。
解锁Jenkins
- 在门户上,导航到新创建的 Jenkins 资源组。
- 在资源组页面,点击新建的Jenkins虚拟机。
- 我们看到这里的操作系统是 Linux,因为我们在 Linux 上部署了我们的 Jenkins 服务器,我们将使用 Linux 方式来解锁 Jenkins。复制 VM 的 DNS 名称。
- 在您的机器上打开浏览器并浏览复制的 DNS 名称。这将打开一个 Jenkins 页面,您可以在其中获取 SSH 字符串。复制那个字符串。
- 打开命令提示符,在复制的 SSH 字符串中,将“用户名”部分替换为 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 http://localhost:8080,这将显示解锁 Jenkins 屏幕,提供在最后一步中检索到的密码并解锁 Jenkins。单击继续。
- 在入门页面上,安装建议的插件,即默认选项。
- 提供创建管理员用户的详细信息。
结论
在本文中,我们学习了如何将 Asp.NET Core 应用程序发布到 Azure 应用服务并在 Azure 上配置 Jenkins 服务器。在下一篇文章中,我们将了解 Azure Active Directory 和服务主体以及将 Jenkins 与 Azure 服务主体集成,然后再继续使用 Jenkins Azure Pipeline 在 Azure 上进行 ASP.NET Core 应用程序的 CI/CD。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!