概念
持续集成指的是,频繁地(一天多次)将代码集成到主干
- 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
- 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
简介
CI(Continuous Integration)持续集成,最重要的服务对象是TDD,它是一个集合概念,包括自动构建build项目,自动分析代码,自动测试,自动邮件报告,自动预编译检查,自动发布等等,
这些都围绕一个中心词“Auto”,当然它不能帮您自动完成代码 :)。所有这些操作,直接解放了项目管理者,每日构建集成(Build every day)将会很大程度上提高项目的稳定性,代码的健壮性及随时反馈。
持续集成是一种能让团队成员友好“集成”(integrate)工作的软件开发实践,通常每个人最少每日“集成”一次,也就是说每天都要进行大量的“集成”(multiple integrates per day)。每一次集成都被自动构建器(automated build including test)尽可能快的检测集成错误。许多团队开发者发现,这种方法极大的降低了团队简集成的问题,而且能让团队更快的开发出有凝聚力,结合力的软件(cohesive software)。
与持续集成相关的,还有两个概念,分别是持续交付和持续部署
一、持续交付
持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
二、持续部署
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
From
流程
提交 => 测试(第一轮)=> 构建(build) => 测试(第二轮)=> 部署=>回滚
核心是develop => master
工具
- TeamCity
- ThoughtWorks的Go(收费)
-
Jenkins
代码审查
前提
团队需要认识到代码审查是为了提高整个团队的能力,而不是针对个体设置的检查“关卡”。“A的代码有个bug被B发现,所以A能力不行,B能力更好”,这一类的陷阱很容易被扩散从而影响团队内部的协作,因此需要避免。 另外,代码审查本身可以提高开发者的能力,让其从自身犯过的错误中学习,从他人的思路中学习。如果开发者对这个流程有抵触或者反感,这个目的就达不到。
在代码审查中如果发现问题,对于问题的发现者来说这是好事,应该予以鼓励。
但对于被发现者,我们不主张使用这个方式予以惩罚。软件开发中bug在所难免,过度苛求本身有悖常理。
更糟的是,如果造成参与者怕承担责任,不愿意在审查中指出问题,代码审查就没有任何的价值和意义。
建议
- 每次审查200行-400行的代码效果最好
- 需要带着问题去做,比如拿一个实际的功能,让参与者有代入感
- 代码审查需要轻松的、非正式的环境
- 自我的code review
-
回顾总结
##工具
- gitlab
Web Deploy MSN
How does it work?
相关资料
初步方案
MSBuild + TeamCity + GitLab(TFS) + NUnit(非必要)
方案实施
gitlab8.0集成了gitlab ci. 待补充
持续交付(CD)
环境变量设置
C:\Windows\Microsoft.NET\Framework\v4.0.30319\
C:\windows\system32\inetsrv\
Build
MSBuild "C:\Users\qingpan\Desktop\WebApplication1\WebApplication1\WebApplication1.csproj" /T:Package /property:Configuration=Release /P:VisualStudioVersion=12.0 /P:PackageLocation="E:\发布\pakagezip\WebApplication.zip"
建立localhost和域名的区别是,localhost端口号后面要加:
appcmd add site /name:"WebApplication" /bindings:http/*:8096: /physicalPath:"E:\publish"
appcmd add site /name:"WebApplication" /bindings:http://ids.uoko.ioc:80 /physicalPath:"E:\publish"
建立程序池
appcmd add apppool /name:WebApplication
设置程序池
appcmd set app WebApplication/ -applicationPool:WebApplication
本地部署
E:\发布\pakagezip\WebApplication.deploy.cmd "-setParam:name='IIS Web Application Name',value=WebApplication" /y
远程部署
E:\发布\pakagezip>WebApplication.deploy.cmd /Y /U:simple-deploy /P:deploy /A:Basic "/M:https://WIN-DEVTEST-002:8172/msdeploy.axd?site=ids.uoko.ioc" -allowUntrusted "-setParam:name='IIS Web Application Name',value='WebApplication'"
备份
appcmd add backup "WebApplication"
还原备份
appcmd restore backup "WebApplication"
多环境问题
针对项目多环境不同配置文件,采取的解决方案是生成不同的web.config文件,通过config transfer进行转换.
相关文档

This work is licensed under a CC A-S 4.0 International License.