下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页用MSBuild和Jenkins搭建持续集成环境发表于:2023-11-21来源:InfoQ:MustafaSaeedHajiA点击数:标签:持续集成
用MSBuild和Jenkins搭建持续集成环境.你或其他人刚刚写完了一段代码,提交到项目的版本仓库里面。但等一下,如果新提交的代码把构建搞坏了怎么办?万一出现编译错误,或者有的测试失败了,或者代码不符合质量标准所要求的底限,你该怎么办?
你或其他人刚刚写完了一段代码,提交到项目的版本仓库里面。但等一下,如果新提交的代码把构建搞坏了怎么办?万一出现编译错误,或者有的(测试)失败了,或者代码不符合质量标准所要求的底限,你该怎么办?
最不靠谱的解决方案就是寄希望于所有人都是精英,他们根本不会犯这些错误。但如果真的出现了这些问题,我们就希望发现的越早越好。最好的方式就是只要有代码提交,我们就有某种方式对它进行验证。这就是持续集成的作用。
持续集成相关的工具有很多。最流行的要数一款基于(Java)的名叫Jenkins的工具。它提供了(Web)界面,用户可以在界面上配置Job,每个Job都包含一系列的构建步骤。Jenkins可以完成开头那个场景中所提到的所有验证工作,它还能更进一步做(自动化)部署或者一键式部署。
Jenkins是由Sun的前员工(开发)的,它的根基是Java,但也可以用在非Java的项目里,比如PHP、RubyonRails、(.NET)。在(.NET)项目里,你除了Jenkins之外还要熟悉另一样工具:MSBuild。
VisualStudio用MSBuild构建.NET项目。MSBuild所需的仅仅是一个脚本,在脚本中指定要执行的target。项目中的.csproj和.vbproj文件都是MSBuild脚本。
在这篇文章中,我们会从头开始,一步步完成一个属于我们自己的MSBuild脚本。在它完成以后,我们只需要一个命令就可以删除之前的构建产物,构建.NET应用,运行(单元测试)。后面我们还会配一个JenkinsJob,让它从代码库中更新代码,执行MSBuild脚本。最后还会配另一个JenkinsJob,让它监听第一个Job的结果,当第一步成功以后,它会把相关的构建产物复制出来,放到(web)(服务器)里启动运行。
我们用一个ASP.NETMVC3应用做例子,在VS里面创建ASP.NETMVC3应用并选择"application'模版就行。我们还要用一个单元测试项目来跑测试。代码可以在这里(下载)。
你好,MSBuild
MSBuild是在.NET2.0中引入的针对VisualStudio的构建系统。它可以执行构建脚本,完成各种Task──最主要的是把.NET项目编译成可执行文件或者DLL。从技术角度来说,制作EXE或者DLL的重要工作是由编译器(csc,vbc等等)完成的。MSBuild会从内部调用编译器,并完成其他必要的工作(例如拷贝引用──CopyLocal,执行构建前后的准备及清理工作等)
这些工作都是MSBuild执行脚本中的Task完成的。MSBuild脚本就是XML文件,根元素是Project,使用MSBuild自己的命名空间。MSBuild文件都要有Target。Target由Task组成,MSBuild运行这些Task,完成一个完整的目标。Target中可以不包含Task,但是所有的Target都要有名字。
下面来一起创建一个"HelloWorld'的MSBuild脚本,先保证配置正确。我建议用VS来写,因为它可以提供IntelliSense支持,不过用文本编辑器也无所谓,因为只是写个XML文件,IntelliSense的用处也不是很大。先创建一个XML文件,命名为"basics.msbuild',这个扩展名只是个约定而已,好让我们容易认出这是个MSBuild脚本,你倒不用非写这样的扩展名。给文件添加一个Project元素作为根元素,把/developer/msbuild/2023设置成命名空间,如下所示
下一步,给Project元素添加一个Target元素,起名叫"EchoGreeting'
这就行了。我们已经有了一个可以运行的MSBuild脚本。它虽然还啥事都没干,但我们可以用它来验证当前环境是不是可以运行MSBuild脚本。在运行脚本的时候,我们要用到.NET框架安装路径下的MSBuild可执行文件。打开命令行,执行"MSBuild/nologo/version'命令,看看.NET框架安装路径是不是放到了PATH环境变量里面。如果一切正确,你应该能看到屏幕上打印出MSBuild的当前版本。倘若没有的话,或者把.NET框架安装路径放到PATH里面去,或者直接用VisualStudioCommandPrompt,它已经把该配的都配好了。
进入存放刚才那个脚本的目录后,以文件名当作参数调用MSBuild,就可以执行脚本了。在我的机器上可以看到下面的执行结果:
C:\msbuildbasics.msbuild
Microsoft(R)BuildEngineVersion4.0.30319.1
[Microsoft.NETFramework,Version4.0.30319.269]
Copyright(C)MicrosoftCorporation2023.Allrightsreserved.
Buildstarted8/2/20235:59:45AM.
Buildsucceeded.
0Warning(s)
0Error(s)
TimeElapsed00:00:00.03
执行完脚本以后,MSBuild会首先显示一个启动界面和版权信息(用/nologo开关可以隐藏掉它们)。接下来会显示一个启动时间,然后便是真正的构建过程。因为咱们的脚本啥都没干,所以构建就直接成功了。总计用时也会显示在界面上。下面咱们来给EchoGreetingTarget添加一个Task,让脚本真的干点事。
lt;ExecCommand=echoHellofromMSBuild/
现在EchoGreetingTarget有了一个ExecTask
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 附件:1.1521项拟继续有效行业标准复审结论-表(征求意见稿)
- 石河子大学《药物波谱解析》2022-2023学年第一学期期末试卷
- 石河子大学《食品包装学》2022-2023学年第一学期期末试卷
- 石河子大学《计算机网络基础》2022-2023学年期末试卷
- 沈阳理工大学《弱信号检测技术》2021-2022学年第一学期期末试卷
- 沈阳理工大学《建筑节能》2023-2024学年第一学期期末试卷
- 沈阳理工大学《过程控制系统与仪表》2021-2022学年期末试卷
- 沈阳理工大学《电镀工艺》2022-2023学年期末试卷
- 沈阳理工大学《环境工程概论》2023-2024学年第一学期期末试卷
- 合同产值申报
- 建筑工程项目管理咨询招标(范本)
- 三位数除两位数的除法练习题
- 慢性胃炎的中医治疗培训课件
- Python程序设计课件第7章面向对象程序设计
- 最新爆破安全规程
- 主题班会课防盗
- 幼儿园课件《挠挠小怪物》
- 教师教案检查八大评分标准教案的评分标准
- 政府会计基础知识讲义
- 幼儿园整合式主题活动设计案例《温馨家园》
- 荒漠区生态治理(麦草沙障、植物固沙)施工方案
评论
0/150
提交评论