背景:我做测试工作,但有一类工作就是将svn中的程序部署到测试环境,以前我可以自己控制发布频次,但是当工程师也需要使用测试站调试时,就需要配合工程师反复发布测试站,特别是当同时测试多个项目时,这类工作就会占用我很多时间,所以有了持续集成的想法:是不是可以,点击一下按钮,程序就会自动部署到测试站?
当然可以,实践之路如下:
1、下载安装jenkins及MSBuild
jenkins:https://jenkins.io/download/
MSBuild2015:https://www.microsoft.com/en-us/download/details.aspx?id=48159
2、安装(省略)
3、新建项目
3.1 输入任意任务名称,选择自由风格的软件项目,点击确定,项目默认创建在 {安装目录}workspace下
3.2 点击配置,配置svn
3.3 点击配置,选择构建
3.3.1 增加构建步骤,Execute Windows batch command,目的是自动下载项目引用的包文件,nuget.exe 下载后放置任意目录即可
3.3.2 增加构建步骤:Build a Visual Studio project or solution using MSBuild,目的是编译项目,并发布到指定文件夹,.pubxml为发布配置文件
3.4 点击配置,选择构建后操作,将发布后的内容传到测试服务器
3.5 返回项目首页,点击“立即构建”,开始构建项目,如果一切顺利,将看到一个蓝色的小圆点,并且项目也发布到对应的测试服务器
但是现实总是残酷的,在上面的步骤中,失败的N多次,总结下来有以下几点:
- 程序中会用到office组件,所以服务器必须安装office(word、excel即可)
- 上述过程中的路径要设置正确,否则会提示找不到
- 在设置路径过程中,一定要注意大小写问题,jenkins设置区分大小写
- 编译过程中,会提示引用的dll不存在,手动将项目依赖的dll拷贝到jenkins服务器即可,需要根据错误信息定位拷贝到哪里,比如下面的错误,就需要拷贝到C:Program Files (x86)Reference AssembliesMicrosoftFrameworkv3.5下面
并且在同事的帮助下,了解了两个插件:Active Directory plugin和Publish Over CIFS
Active Directory plugin用于域账号集成
设置完成后,就可以用域账号登陆jenkins了,非常简单
Publish Over CIFS主要是传输文件,类似FTP,优势在于,不用搭建服务器,使用域账号的权限来同步文件
使用此功能,需要在系统设置中,预先配置文件要传输到哪里
遗留问题:
其实步骤3.3.2中,可以直接将项目发布到服务器上,而省略步骤3.4,但是在发布项目的时候,web.config文件是不能被覆盖的,而步骤3.4可以设置排除某个文件或文件夹,步骤3.3.2不能设置排除某个文件
如果有哪位大侠知道更简单的设置方案,欢迎留言