Jenkins流水线构建并发布.Net项目

在Jenkins中实现CI / CD的方法有很多,例如Blue Ocean,Free Style项目和Declarative Pipeline。在本文中,我将解释如何使用带有声明式管道的Jenkins自动化集成和部署过程。我试图用.net核心应用程序明确解释所有步骤。

我们不会深入研究Jenkins Pipeline,因为它不在本篇文章的讨论范围之内,但是您可以在历史文章找到有关Pipeline的所有详细信息。

我希望您现在对Jenkins Pipeline有所了解,并希望您已经完成了Jenkins的基本设置。

在配置管道阶段,选择管道定义作为Pipeline script,在Pipeline Scripts下,设置环境变量和脚本触发器。

pipeline{agent any
environment {dotnet ='C:\\Program Files (x86)\\dotnet\\'}
triggers {pollSCM 'H * * * *'}}

CI的第一步是从Git 出代码。为此,我们的管道代码如下:

stages{ stage('Checkout') {    steps {     git credentialsId: 'Give Your Credential ID', url: 'https://github.com/YourAcc/YourRepoName.git/', branch: 'Branch on which you want to set the CI'     }  }

恢复包

下一步是还原应用程序的软件包。让我们运行restore命令,如果Windows代理程序中没有可用的软件包,它将还原该软件包:

stage('Restore packages'){   steps{      bat "dotnet restore YourProjectPath\\Your_Project.csproj"     }  }

clean

stage('Clean'){    
  steps{        
    bat "dotnet clean YourProjectPath\\Your_Project.csproj"     
  } 
}

build,它将dll和其他内置文件放在bin\Debug\netcoreapp2.x下

stage('Build'){   steps{      bat "dotnet build YourProjectPath\\Your_Project.csproj --configuration Release"    } }

在这一阶段,我们可以添加SonarQube来自动化代码质量性能测试。

自动化测试

下一步将在您的项目上构建单元测试和集成测试。那将建立解决方案的测试案例。

stage('Test: Unit Test'){   steps {     bat "dotnet test YourProjectPath\\UnitTest_Project.csproj"     }  }
 stage('Test: Integration Test'){    steps {       bat "dotnet test ProjectPath\\IntegrateTest_Project.csproj"      }   }

发布

让我们添加publish命令以从Jenkins发布我们的软件包。

stage('Publish'){     steps{       bat "dotnet publish YourProjectPath\\Your_Project.csproj "     }}

我们可以将发布注释发送到相关的电子邮件地址,这是发布项目的最有效方法。您将收到一封有关您的部署的电子邮件

post{  always{    emailext body: "${currentBuild.currentResult}: Job   ${env.JOB_NAME} build ${env.BUILD_NUMBER}\n More info at: ${env.BUILD_URL}",    recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']],    subject: "Jenkins Build ${currentBuild.currentResult}: Job ${env.JOB_NAME}"    }  }

Checkout -> Restore -> Clean -> Build -> Test-> Publish