天天看点

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

目录

主题

路线图

Jenkins

先决条件

使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD

创建新的管道作业

添加参数

添加管道脚本

运行构建

安装Dotnet

安排构建

构建自动轮询

持续部署

结论

主题

在该系列的第一篇文章中,我们通过两种方法(管道方法和自由样式项目方法)了解了Jenkins的概念,术语,涉及的技术,安装Jenkins,创建ASP.NET Core应用程序以及使用Jenkins持续集成ASP.NET Core应用程序。在第二篇文章中,我们将ASP.NET Core应用程序发布到Azure App Service和Azure上的Configured Jenkins。在该系列的第三篇文章中,我们重点介绍了Azure Active Directory和Service Principal,以及如何将Jenkins与Azure Service Principal集成。

路线图

本系列文章将说明如何在本地开发环境中为CI和CD的ASP.NET Core Web应用程序使用Jenkins,将Web应用程序发布到Azure Web App Service以及在Azure上配置Jenkins以便持续集成和持续部署托管应用程序。GitHub将DevOps用作源代码控制存储库。我们将使用Jenkins创建一个管道,该管道从GitHub获取代码,构建代码,运行测试并部署程序包。这是对GitHub上代码的每次提交的重复性任务。

以下是我们将遵循的路线图,以完全了解使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI / CD)的端到端开发和配置。

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

Jenkins

Jenkins是自动化的开源工具,可帮助团队/开发人员持续构建和测试软件代码。它使开发人员无需人工干预即可轻松集成和测试代码。可以设置该工具以创建一个部署管道,该管道包括在每次代码提交时对代码进行持续集成,不断地测试构建,发布工件和文档以及部署代码。可以在服务器上配置Jenkins,根据部署需要将其配置为开发,暂存或生产。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

先决条件

在开始本文之前,请阅读本系列的前两篇文章。

以下是开发人员在开始使用计算机之前的先决条件。

  1. Visual Studio 2017/2019年
  2. 已安装Dotnet 2.1 SDK
  3. 免费/付费Azure订阅
  4. Java 1.5或更高版本
  5. Git帐户
  6. Windows版Git

使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD

本节将说明如何启用应用程序的持续集成和部署。所有必需的设置均已完成。我们只需要立即配置Jenkins即可实现。我们将使用管道项目方法进行此操作。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

创建新的管道作业

在Jenkins主页上,创建一个新作业。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

给管道项目取一个有意义的名称(例如,Jenkins-on-Azure),然后选择“Pipeline”作为项目类型。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

添加参数

在“常规”选项卡上,选中选项“此项目已参数化 ”。我们将在此处添加一些参数。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

添加三个字符串参数,命名git_repo为提供git存储库的URL,res_group提供资源组的名称和JenkinsIntegration,这将是我们的Web应用程序项目的名称。您可以在此处提供默认值,否则将在运行构建时要求您提供默认值。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

添加名为azure_cred_id的凭据参数,并将凭据类型选择为“Microsoft Azure Service Principal”,默认值为我们之前创建的id服务主体。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

添加管道脚本

在“管道脚本”部分中,提供管道脚本以进行git签出,构建,发布和部署。

node {
    stage('Checkout git repo') {
      git branch: 'master', url: params.git_repo
    }
    stage('build and publish') {
        sh(script: "dotnet publish JenkinsIntegration -c Release ", returnStdout: true)
    }
    stage('deploy') {
        azureWebAppPublish azureCredentialsId: params.azure_cred_id,
            resourceGroup: params.res_group, appName: params.JenkinsIntegration, 
            sourceDirectory: 
                "JenkinsIntegration/JenkinsIntegration/bin/Release/netcoreapp2.1/publish/"
        }
}
           
使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

运行构建

保存配置并转到主页。您可以手动触发构建,并且由于我们没有在参数中提供默认值,因此它要求提供这些值。提供值,然后单击“构建”按钮。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

我们期待一个干净而成功的构建,但是下面我们看到我们的构建失败了。它说的原因是在发布时找不到“dotnet”命令。由于Jenkins处在Linux工作区下运行。我们的Linux服务器应该安装了dotnet。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

安装Dotnet

让我们在Linux上安装dotnet SDK 2.1。返回运行隧道的终端,并一步一步运行以下命令以注册Microsoft密钥和源。

  • wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  • sudo dpkg -i packages-microsoft-prod.deb

现在运行以下命令来安装.NET Core 2.1 SDK。

  • sudo apt-get install apt-transport-https
  • sudo apt-get update
  • sudo apt-get install dotnet-sdk-2.1
使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

这将在Linux服务器上安装.NET Core 2.1 SDK。

安排构建

转到Jenkins的主页,然后再次尝试触发构建。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

我们看到我们的构建成功了。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

构建自动轮询

让我们为自动轮询设置构建触发器,即,一旦代码在git存储库中提交,构建就会触发。检查“轮询SCM”,计划值应为“ * * * * *”。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

持续部署

打开浏览器,浏览到Azure上已部署的应用程序。我们看到应用程序正在运行。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

现在,在cshtml文件中进行一些更改,以检查是否触发了自动生成。因此,我将Index.cshtml文件中的文本从“Jenkins入门”更改为“Azure上的Jenkins入门” 。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

并且,将应用程序的版本更改为2.0。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

提交代码并推送到源代码处。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

我们看到,将代码推送到存储库后,一秒钟之内就会自动生成触发器。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

检查构建是否成功。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

回到浏览器,并刷新它,我们看到所做的更改已反映在此处,这意味着我们的应用程序已自动部署在Azure上。

使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天主题路线图Jenkins先决条件使用Jenkins Azure Pipeline在Azure上的ASP.NET Core应用程序的CI/CD持续部署结论

结论

在本系列文章中,我们了解了Jenkins的用法以及它在我们的软件开发生命周期中的有用性。我们学习了在本地开发环境中为CI和CD的ASP.NET Core Web应用程序的使用Jenkins,将Web应用程序发布到Azure Web App Service,以及在Azure上配置Jenkins以便持续集成和持续部署托管应用程序的过程。Jenkins是一个广泛的话题,在使用它时,需要耐心等待设置,但是一旦设置,它就可以无缝运行。