好代码是管出来的——使用Jenkins搭建CI服务器

时间:2022-05-24 02:33:25

  Jenkins是一个开源的跨平台的CI工具,它可以部署在Windows、Linux等平台上,并且Jenkins提供了非常丰富的插件来帮助完成编译、测试、部署等工作。
  本文将介绍在Windows平台上使用Jenkins完成.Net Core应用的持续集成环境搭建,其主要内容有:

Jenkins下载与安装

  本例使用Jenkins2.136版本进行演示,Jenkins下载地址:https://jenkins.io/download/
  1. 下载Jenkins的Windows安装器:

  好代码是管出来的——使用Jenkins搭建CI服务器

  2. 通过安装向导完成Jenkins安装:

  好代码是管出来的——使用Jenkins搭建CI服务器

  Jenkins的默认端口是8080,当安装完成后可以通过该端口访问Jenkins:

  好代码是管出来的——使用Jenkins搭建CI服务器

  3. 根据Jenkins的配置向导完成相应配置,并进入Jenkins:
  选择常用插件,这些插件包含了Git、SVN等常用插件:

  好代码是管出来的——使用Jenkins搭建CI服务器

  创建用户:

  好代码是管出来的——使用Jenkins搭建CI服务器

  进入Jenkins:

  好代码是管出来的——使用Jenkins搭建CI服务器

创建一个.Net Core编译任务

  1. 创建一个新任务:

  好代码是管出来的——使用Jenkins搭建CI服务器

  填写任务名称选择*风格项目:

  好代码是管出来的——使用Jenkins搭建CI服务器

  2. 修改任务配置:

  好代码是管出来的——使用Jenkins搭建CI服务器

  代码库:

  好代码是管出来的——使用Jenkins搭建CI服务器

  3. 添加构建步骤,此处执行dotnet的编译命令:

  好代码是管出来的——使用Jenkins搭建CI服务器

  4. 执行任务,结果输出如下:

  好代码是管出来的——使用Jenkins搭建CI服务器

实现自动测试

  1. 添加测试运行步骤:

  好代码是管出来的——使用Jenkins搭建CI服务器

  dotnet测试命令参考:https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test?tabs=netcore21
  运行结果:

  好代码是管出来的——使用Jenkins搭建CI服务器

  2. 收集代码覆盖率:
  之前介绍了使用OpenCover来分析.net core的单元测试代码覆盖率,然后再通过ReportGenerator来生成Html格式的报告,所以首先需要添加代码覆盖率分析以及报告生成的构建步骤:

  好代码是管出来的——使用Jenkins搭建CI服务器

  OpenCover.Console.exe -target:"dotnet.exe" -targetargs:"test XUnitTestProject/XUnitTestProject.csproj" -output:coverage.xml -filter:"+[*]* -[*Moq]* -[xunit*]*" -oldstyle
  ReportGenerator.exe "-reports:coverage.xml" "-targetdir:report"
  注:在持续集成工具中使用OpenCover可能会无法生成代码覆盖信息,所以需要对OpenCover.Profiler.dll文件进行注册,注册代码如下:

  好代码是管出来的——使用Jenkins搭建CI服务器

  OpenCover.Profiler.dll文件位于OpenCover的安装目录下,更多详情查考OpenCover安装目录下的Usage.rtf文档。

  如果要将生成的Html在Jenkins上显示,那么必须添加一个HTML Publisher的插件:

  好代码是管出来的——使用Jenkins搭建CI服务器

  然后在构建后操作中添加HTML发布操作:

  好代码是管出来的——使用Jenkins搭建CI服务器

  需要填写HTML的目录和报告起始页面。
  完成后保存配置,并执行构建:

  好代码是管出来的——使用Jenkins搭建CI服务器

  好代码是管出来的——使用Jenkins搭建CI服务器

  好代码是管出来的——使用Jenkins搭建CI服务器

  然后在工程面板中即可查看代码覆盖报告:

  好代码是管出来的——使用Jenkins搭建CI服务器

  报告:

  好代码是管出来的——使用Jenkins搭建CI服务器

实现自动部署

  当完成编译工作后,需要把编译的结果发布出来,对于一个Windows的控制台应用程序来说,实际上把编辑的执行程序以及相关程序集发布出来即可,而这个程序文件实际上是在项目的bin目录下。
在Jenkins中可以通过Artifact Deployer Plug-in这个插件来完成文件发布功能:

  好代码是管出来的——使用Jenkins搭建CI服务器

  插件安装完成后,在项目的构建后操作中添加部署操作,将生成的文件复制到D:\test目录下:

  好代码是管出来的——使用Jenkins搭建CI服务器

  执行构建后将自动把构建结果发布至D:\test目录下。

  好代码是管出来的——使用Jenkins搭建CI服务器

小结

  本文简单的介绍了如何使用Jenkins及相关插件完成.Net Core程序的自动编译、测试和发布功能。无论是前面文章提到的使用各种托管工具还是自己搭建Jenkins其核心步骤都是通过相应工具以执行命令的方式完成的(编译命令、测试命令、代码覆盖率命令、报表生成命令等)。

  虽然都是通过相同的工具以及相同的命令,但是不同的CI工具使用上还是存在一些区别,并且还存在大量的手动配置,有没有一种方法来简化并且重用CI/CD流程呢?敬请期待后续内容(*^_^*)

本文链接:https://www.cnblogs.com/selimsong/p/9763268.html

好代码是管出来的——浅谈.Net Core的代码管理方法与落地(更新中...)

好代码是管出来的——使用Jenkins搭建CI服务器的更多相关文章

  1. 使用 Jenkins 搭建 CI/CD All In One

    使用 Jenkins 搭建 CI/CD All In One https://ci.jenkins.io/ https://www.jenkins.io/zh/ jobs pipelines refs ...

  2. 使用 jenkins 搭建CI/CD流水线 (MAC)

    如何搭建持续集成/持续交付平台?? 如何使用jenkins搭建持续交付流水线,以及和其他工具(如artifactory)集成?如何使用元数据,记录软件发布过程的构建信息,测试结果,并用rest Api ...

  3. 搭建基于Jenkins的CI服务器

    安装Jenkins和创建任务这些操作网上一搜一大把,这里就没必要写了,直接就开始编译.单元测试,覆盖,git提交触发构建,构建失败发送给提交人邮件. 因为项目比较复杂,为了懒省事我直接在CI服务器上安 ...

  4. 【Gerrit】Gerrit与Jenkins/Hudson CI服务器搭建

    配置Git 很多系统(例如Linux)已经默认提供了Git,在Git主页也可以找到安装程序.对于Windows用户,最好的选择是MsysGit.请注意,如果你安装了Apple Developer To ...

  5. 使用gitlab, jenkins搭建CI(持续集成)系统(3) -- 根据不同触发条件执行不同的构建任务

    前面在jenkins中安装的gitlab hook支持不同的参数,具体可以参考gitlab hook文档https://github.com/jenkinsci/gitlab-hook-plugin# ...

  6. 使用gitlab, jenkins搭建CI(持续集成)系统(1) -- 准备环境

    1. 环境设计 搭建一个从开发到测试知道发布上线可以自动换完成的CI系统.这个系统中包含4个环境. 开发(dev)环境: 码农使用. 测试(test)环境: 测试人员使用. 预发布(prepublis ...

  7. 使用gitlab, jenkins搭建CI(持续集成)系统(4) 灰度发布publish

    publish环境是正式环境,和dev, test, prepublish环境不同的是,正式环境一般要更加谨慎一些,发布的时候需要有一个灰度过程,即:分多次部署,每次部署几个服务器节点,验证没有问题以 ...

  8. 使用gitlab, jenkins搭建CI(持续集成)系统(2) -- 配置webhook触发构建

    1. 在gitlab上配置192.168.1.30的ssh秘钥,使jenkins可以操作gitlab上的project 进入gitlab,点击右上角 点击 Settings -> SSH key ...

  9. Jenkins搭建CI/CD

    所需Jenkins插件: Maven Integration pluginPublish Over SSHSSH plugin 1.配置全局工具 配置JDK: 配置Git: 配置maven: 2.创建 ...

随机推荐

  1. 3-MSP430引脚中断

    为了写一篇文章做铺垫--提醒着自己,,,,,, 这两天一直在寻找 #pragma vector = PORT1_VECTOR __interrupt void P1_Interrupt()//P1口中 ...

  2. iOS开发之数据存取3-CoreData自定义数据类型

    当系统提供的类型不能达到我们的使用要求时,比如我想在CoreData中存储UIColor,该怎么办呢? 这时候就要用到CoreData中非常强大的一个存储类型了:Transformable 下面将通过 ...

  3. 如何利用【百度地图API】,制作房产酒店地图?(下)——结合自己的数据库

    原文:如何利用[百度地图API],制作房产酒店地图?(下)--结合自己的数据库 摘要:应广大API爱好者要求,写了一篇利用自己数据库标点的文章…… -------------------------- ...

  4. [LeetCode] Perfect Number 完美数字

    We define the Perfect Number is a positive integer that is equal to the sum of all its positive divi ...

  5. jenkins针对不同的项目组对用户进行权限分配

    因jenkins上存有de(开发).te(测试)等三个不同环境的项目,同时因为项目需求,需要对不同的开发及测试人员配置不同的jenkins权限,即以项目为单位,对不同人员进行不同权限配置,要求如下: ...

  6. 窗口事件onresize

    在做自适应布局的时候,我们常常需要根据窗口不同的分辨率给出不同布局和样式,今天说的onresize便能帮我们实现这一效果. onresize事件在窗口或者框架的大小发生改变的时候会被调用,下面我们用一 ...

  7. sql不带锁查询

    原文 sql server在执行查询语句时会锁表.在锁表期间禁止增删改操作. 如果不想锁表,那就再表名或别名后面加上WITH(NOLOCK) 如下所示: SELECT Id FROM dbo.T_Ta ...

  8. 20145319 return-to-libc攻击实验

    20145319 Return-to-libc攻击实验 一 实验内容 return-to-libc实验是一个基于缓冲区溢出攻击实验的基础上的一种攻击实验 缓冲区溢出攻击相关知识: 原理:通过一段包含s ...

  9. [你必须知道的.NET]第二十一回:认识全面的null

    发布日期:2008.7.31 作者:Anytao © 2008 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 null.nullable.??运算符.null ...

  10. 福大软工1816:Alpha(10/10)

    Alpha 冲刺 (10/10) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务: 文字/口头描述: 1.和愈明.韫月一起对接 2 ...