最近在学习 Jenkins,为公司的持续集成迈出第一步。初步设想是所有在研项目都接入到持续集成环境中,目前正在往这个方向努力中。

安装.NET 环境

Jenkins 的安装部署等,不在本文的范畴,社区有大量相关文章作为参考。

.NET 的构建需要上述的几个环境,前三个环境根据提示安装即可,最后一个是不用安装的,放在一个目录下即可。

安装 MSBuild

打开 Jenkins 系统管理,找到管理插件选项,点击进入,切换到可选插件选项卡在搜索框输入 MSBuild 搜索。在搜索结果中找到 MSBuild 插件并安装。

配置 MSBuild

打开 Jenkins 系统管理,找到 Global Tool Configuration 选项,点击进入。找到 MSBuild 并配置如下

MSBuild 的一般路径是C:\Program Files (x86)\MSBuild\15.0\Bin ,图中使用的是 VS2017 中的 MSBuild。

新建 Jenkins Job

此项目是多项目依赖,主项目有依赖一个公共类库(单独项目)

选择 Multiple SCMs 的原因:

1. 项目中存在依赖的情况,单纯的一个 Git 仓库地址是不能搞定的。
2. 如果项目是单一项目,可以直接选择 Git 配置。
3. 如果是多项目依赖的情况需要安装Multiple SCMs插件。

此处设置为检测到更新就自动拉取代码并编译项目

日程表用法自行百度

保存项目后,回到项目页面,点击立即构建,可以看到项目正在构建中。点击这个正在构建的任务查看控制台输出,可以看到项目最终是构建成功了。

构建结果的通知

  1. 如果一切顺利,你将成功的构建好了.NET 项目,代码的每次签入都会触发构建器去构建项目,构建的结果一般是以邮件的形式通知到相应的负责人。
  2. 由于邮件通知的时效性,可能由于种种原因相应的负责人没收到邮件或者压根没看邮件,不能起到及时处理构建失败的原因,我在想一个替补方案。
  3. 企业微信应该很多公司都在用,如果能以系统通知的形式通知到相应的负责人,那么这种处理方式会比邮件通知好很多。
  4. 理论上是可行的,待实践成功后另外发表一篇文章分享给大家。

踩坑记录

由于第一次接触.NET 项目,在构建过程中遇到各种问题,有环境问题,有其他问题,下面记录下遇到的主要问题以及解决方案,供大家参考。

这是因为项目中采用了 C# 6.0 的新特性,编译工具的版本太老导致的

issues

我们只要升级 MSBuild 即可,第一次安装的是Microsoft Build Tools 2013 ,改完安装Microsoft Build Tools 2015

这个忘记是怎么解决的了,大概还是因为 MSBuild 的版本问题还是没有安装Microsoft Build Tools 导致的

起初是根据错误提示,找到相应的文件并打开,查看它引用的目录在哪,然后从开发那里(开发那边能编译通过)拷贝对应的文件过来,最后是编译通过了。但还是觉得很麻烦,万一依赖升级了或者有其他变动呢,难道没有像安卓一样有gradle 这种工具,自动下载依赖?

后来了解到可以通过NuGet 来完成,所以问题也都解决了。

分享预告


↙↙↙阅读原文可查看相关链接,并与作者交流