系统持续集成是一个好东西。可是一旦发布的程序,不能构建或是构建后发现功能不是正常的,就不是很好了。这里说说这段时间的构建吧。
先说说这几天出的问题吧。这也是项目之初的共性
1在svn上checkout的代码就有错误。造成编译不通过
- 1.1这种问题多为增删文件没有整体提交代码,造成文件局部不存在,但是整体还在。
- 1.2 没有整体编译代码,造成上传错误代码
- 1.3 类库版本不一致,造成编译解决方案冲突
以上三种是基本的构建失败常用的问题。
然后构建成功,并不代表我们的程序正常运行。还得看功能是否正常。这就涉及到类库的引用是否正常了。这里我们将第三方公用包和自己封装的类库使用了NuGet管理包进行了管理,创建了一个packages包,安装我们的类库就自动引入dll放在了packages中,在上传package到svn中,这样程序构建就在packages中查找引用了。当然对于一些如通过反射的dll就需要使用构建后的命令自动拷贝了。下面我们就来做个示范吧
如系统基本架构图
总体包括的有IBLL,IDAL,WEB,和一些工厂。所以构建的时候需要将DAL,BLL以及DALFActory,BLLFacotry中的DLL打包到Web层中。所以就需要将他们的生成路径放入到WEB层,这个在vs中是完全没有问题的。而在 Jenkins构建中,刚开始没有想到构建这些所有项目。当发现构建成功时,任务项目基本是没有问题。当访问功能时却发现数据都没有现象, 当在web调试时发现远程调用方法出现问题
查看生成的dll缺少DAL,DALFacotry,是个严重的问题。于是就增加了构建项目,构建项目也不能生成到发布到web层呀
这样一来,就不会去别去查找,也不依赖系统中的dll了,避免缺失。效果图
批处理文件命令,注意文件路径最好不要有空格,否则Jenkins不识别该命令。该命令是将源码中的dll拷贝到发好的文件中的bin下
bat文件可以查看上篇文章
拷贝的dll
jenkins编译是只编译依赖项目中的dll或(引用中的dll),所以向DAl这些不是直接引用的,就需要自己想办法去生成了。之所有没有在这些文件下输出文件,就像要将这些dll生成到源码中,然后直接复制。基本的思路就结束了,希望对大家有所理解。
原文地址:http://blog.csdn.net/han_yankun2009/article/details/42833697