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

在当今快速发展的软件开发领域,自动化和持续集成/持续部署(CI/CD)的概念已经成为提高开发效率和质量的关键。Jenkins作为一个开源的自动化服务器,能够帮助团队和开发者持续构建和测试软件代码。本文将介绍如何使用Jenkins实现ASP.NET Core应用的CI/CD,包括本地开发环境的配置,将应用发布到Azure Web App Service,以及在Azure上配置Jenkins以实现托管应用的持续集成和持续部署。

学习路线图

本系列文章将分为四天来介绍Jenkins在ASP.NET Core应用CI/CD中的应用:

  • 第一天:使用Jenkins实现ASP.NET Core应用的持续集成
  • 第二天:将ASP.NET Core应用发布到Azure App Service并配置Azure上的Jenkins
  • 第三天:将Jenkins与Azure Active Directory和Service Principal集成
  • 第四天:使用JenkinsAzure Pipeline在Azure上实现ASP.NET Core应用的CI/CD

Jenkins简介

Jenkins是一个开源的自动化服务器,它可以帮助开发者自动化几乎任何类型的任务,包括构建、测试和部署软件。Jenkins可以设置为在每次代码提交时自动执行持续集成,持续测试构建,发布工件和文档,以及部署代码。Jenkins可以配置在服务器上,无论是开发、测试还是生产环境,以满足部署需求。

先决条件

在开始本文之前,请确保机器上已经安装了以下软件:

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

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

本节将介绍如何启用应用的持续集成和部署。所有必要的设置已经完成,现在只需要配置Jenkins即可实现。将通过使用管道项目方法来实现。

在Jenkins首页,创建一个新的作业。给管道项目一个有意义的名称(例如,Jenkins-on-Azure),并选择“Pipeline”作为项目类型。

在“General”标签页,勾选“此项目是参数化的”选项。将在这里添加一些参数。

  • 添加三个字符串参数,分别命名为git_repo(提供git仓库的URL),res_group(提供资源组的名称)和JenkinsIntegration(这将是Web应用项目的名称)。可以在这里提供默认值,或者在运行构建时提供这些值。
  • 添加一个名为azure_cred_id的凭据参数,并选择凭据类型为“MicrosoftAzureService Principal”,默认值将是之前创建的服务主体ID。

在管道脚本部分,提供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/" } }

保存配置并返回首页。可以手动触发构建,由于没有在参数中提供默认值,它会要求提供值。提供值后点击“Build”按钮。

让在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

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

转到Jenkins首页,再次尝试触发构建。可以看到构建成功了。

让设置构建触发器以实现自动轮询,即一旦代码提交到git仓库,构建就应该触发。检查Poll SCM并设置计划值为“* * * * *”。

打开浏览器并浏览部署在Azure上的应用。可以看到应用正在运行。

现在对cshtml文件进行一些更改以检查自动构建是否触发。所以,将Index.cshtml文件中的文本从“Getting Started with Jenkins”更改为“Getting Started with Jenkins on Azure”。

并更改应用的版本为2.0。

提交代码并推送到origin。

可以看到,一旦代码推送到仓库,构建就会在一秒钟内自动触发。

检查构建是否成功。

回到浏览器并刷新它,可以看到更改的内容已经反映在这里,这意味着应用已经自动部署到Azure上了。

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