使用Jenkins在Azure上实现ASP.NET Core应用的CI/CD

在本系列的前两篇文章中,学习了概念、术语、涉及的技术、安装Jenkins、创建ASP.NET Core应用程序以及通过两种方法(即流水线方法和自由风格项目方法)使用Jenkins实现ASP.NET Core应用程序的持续集成。在第二篇文章中,将ASP.NET Core应用程序发布到Azure App Service并配置了Azure上的Jenkins。

本文将重点介绍Azure Active Directory和Service Principal,并将Jenkins与Azure Service Principal集成,然后继续使用Jenkins Azure Pipeline在Azure上实现ASP.NET Core应用程序的CI/CD。

路线图

将遵循以下路线图来全面学习使用Jenkins在Azure Web App上实现ASP.NET Core应用程序的持续集成和部署(CI/CD)的端到端开发和配置。

  • 第1天:使用Jenkins实现ASP.NET Core应用程序的持续集成
  • 第2天:将ASP.NET Core应用程序发布到Azure App Service并配置Azure上的Jenkins
  • 第3天:将Jenkins与Azure Active Directory和Service Principal集成
  • 第4天:使用Jenkins Azure Pipeline在Azure上实现ASP.NET Core应用程序的CI/CD

先决条件

在开始本文之前,请先阅读本系列的前两篇文章。以下是开发者在开始之前需要在机器上具备的先决条件:

  • Visual Studio 2017/2019
  • 安装了Dotnet 2.1 SDK
  • Azure订阅(免费/付费)
  • Java 1.5或更高版本
  • Git账户
  • Git for Windows

Azure Active Directory和Service Principal

下一步是为应用程序创建一个身份,因为它需要访问Azure Web应用程序。这个身份将作为一个服务主体,可以被分配某些权限来操作应用程序。

在Azure门户中,点击Azure Active Directory,然后点击应用程序注册,如下所示:

  1. 点击“新建注册”以创建新的应用程序注册。
  2. 提供一个有意义的名称。例如,提供了“jenkins_sp”,并选择支持的帐户类型的第一个选项,即“仅限此组织目录中的帐户”。
  3. 点击“注册”以创建这个新的Azure AD和服务主体。
  4. 导航到新创建的应用程序,即“Jenkins_sp”。

要访问Azure资源,应用程序需要被分配到一个角色。例如,如果在Azure订阅中,将角色分配给资源组,那么该资源组中的所有资源都将继承该角色及其权限。

  1. 导航到Azure门户中的订阅。选择订阅。例如,只有一个订阅,如果选择它,那么订阅中的所有资源都将继承分配的角色和权限。
  2. 一旦选中,订阅页面将打开到右侧。
  3. 选择访问控制(IAM)。
  4. 选择“添加角色分配”。
  5. 在“添加角色分配”表单中,选择角色为“参与者”,将访问权限分配给“AzureAD用户、组或服务主体”。在“选择”选项中,通过键入Jenkins进行搜索,可以看到“jeninks_sp”,即服务主体。选择它并保存。

点击新创建的应用程序注册,并在概览页面上,复制以下值到记事本,因为它们将在将服务主体分配给Jenkins时使用。

  • 应用程序(客户端)ID
  • 目录(租户)ID

点击“证书和机密”,并添加“新客户端机密”。为其提供一个名称,并复制创建的客户端机密的值。

现在,需要将此服务主体提供给运行在URL上的Jenkins,以便它能够访问选定订阅上的Azure资源。

在运行的Jenkins URL上,导航到“凭据”->“系统”->“全局凭据”,然后点击“添加凭据”。

  1. 选择“类型”为“Microsoft Azure服务主体”。
  2. 填写以下字段:
    • 范围:全局
    • 订阅ID:Azure订阅ID
    • 客户端ID:从服务主体应用程序复制的应用程序(客户端)ID
    • 客户端机密:复制的机密证书值
    • 租户ID:从服务主体应用程序复制的目录(租户)ID
    • Azure环境:Azure

现在是时候将Jenkins与在Azure门户上创建的服务主体集成了。

点击“验证服务主体”按钮以验证详细信息和连接。一旦它显示“成功验证…”,点击“确定”。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485