VC项目编译/发布自动化实践

    现在,偶维护的控件,每发布一次,需要做不少工作。手脚麻利,脑袋清醒,一次
需要差不多30分钟,但仔细想来,几乎没做什么有意义的事情:
    假定代码已经调试完毕,准备发版,简单罗列一下需要做的事儿:
    1:签出相关的发布文件。因为牵扯多个版本,所以有好几个不同的文件。
    2:编译源码:
       首先呢,需要升级控件编本号(通过修改rc文件和odl文件)。
       由于控件根据不同的编译开关,需要生成多个版本,所以,需要编译多次,每编译
       完成一次,再在IDE中切换当前编译项目,开始重编,编译下一个。
    3:注册各个控件,用不同的测试用例进行简单测试。
       现在的测试呢,主要是保证可以注册,可以通过简单示例。
    4:拷贝编译生成的相关文件到发布目录。
    5:签入相关的发布文件。
    6:写发布日志。
    7:发送邮件通过发版。
    明白了吧,这些全是很无聊的事情。
    要不是在傻傻的等机器干完活(编译,切换),要不就是在机械的点鼠标,拷个文件,
写固定格式的邮件,没一点技术含量。唉,这哪是俺们高智商的脑力劳动者该做的事儿呢,
再说了,一不小心,手抽个筋,小脑袋开个小差,可能就忘了改版本,忘了写日志哈的,搞错
了,是要挨批地,嘿,你说是不是。
    在控件的测试和集成期,改动多,每天都有约两次的发布,准确性很重要。

    其实呢,一早就知道上述过程可以自动化,但总是懒得去做,今天开个头。
    下面,我依次列出实现方法,
    1:签出/签入文件,以VSS为例,完全可以用VSS的命令行来完成。
    如:
    登录VSS并定位工程:
    set SSDIR=//192.168.16.5/easctrl_work
    ss CP $/OCX/v10.21/V10_Release -Ystone,12345
    签出/签入:
    ss checkout -I- -GLE:/work/ocx/v10.21/V10_Release xxxxu.ocx
    ss checkin -I- -GLE:/work/ocx/v10.21/V10_Release xxxx.ocx
    2:自动编译。
    2.1:首先,对于不同版本,大多可以在编译设置中用预编译宏开关来设置。
    要简单生成新的编译项目,可以在IDE中简单建立,然后用文本编辑器打开dsp文件,进行相同
部分拷贝,再回到IDE进行不同处的设置。
    注意:在MFC的控件项目中,源码,资源,odl各自都有其不同的预编译开关设置处。
    2.2:通过VC的IDE导出mak文件,当然不用自已去手写啦,如果你够强,直接改mak,去掉一些不
    必要的步骤。注意:如果你对mak文件很熟,那无颖你的编译自动化会进行得更加完善,你可以动态
    添加或删除修改一些开关,以更灵活的生成多个版本的发行文件,而不依赖于烦琐的IDE界面。
    2.3:用NMAKE命令进行编译:
    如:
    NMAKE /a /f "xxxx.mak" CFG="xxxx - Win32 Release"
    NMAKE /a /f "xxxxu.mak" CFG="xxxxu - Win32 Unicode Release"
    /a:表示强制重编  CFG指:编译的项目
    3:版本号自增:
    这个呢,可以通过VC插件方式实现:我就不详述了,可参见MSDN:
    http://support.microsoft.com/default.aspx?scid=kb;en-us;237870
    4:用例测试:
    这个得自已写测试程序,将命令加到批处理中即可。
    注意,用例要有约定好的返回值,以便批处理判定测试是否成功。
    5:发布日志:
    这个得看你的日志记录方式,相信,一点都不难。如果是用文本,那就写文本好了。
    6:自动发邮件:
    嗯,我再偷偷懒,你自已去查Outlook的相应的命令行,或者利用它的宏(后面有样例)。
    7:用DOS的bat文件实现批处理。
    相关命令可以查操作系统的帮助。特别注意使用 if,goto,%n等控件批处理流程和输入的命令。
    8:用VC的mak工程来整合自动化发布。
    新建一个makfile工程,让它运行我们实现的批处理即可。
    可以将这个mak工程加入到你的工程组中,这样,需要发布时,只要选择该工程的Build即可自动进行了。
    当然,也可以直接运行批处理命令来执行发布。

嗯,差不多就这些了。
再补充几点我的体会:
1:.Net和Java中企业应用的大规模部署,引入了Ant之类的自动发布辅助工具,看似挺新鲜,实际上呢,对于
Windows编程,基本所有IDE工具都提供了Shell,如果我们能掌握各种IDE中被我们忽视的shell命令,很多工作
都是可以自动化的,这不是自动化编程,因为根本没有在编程,只不过是懒人的一种工作方式。
2:在VB中有提供自动编译的组件,可以同样完成自动编译工作。
可参见:http://dev.csdn.net/develop/article/18/18746.shtm
3:我已实现了一个bat,确实给我带来好处,我想我会继续尝试,做一个真正的懒人。

附A:自动发送邮件的VBA示例。
Sub sendReleaseMail()
    
    '要能正确发送并需要对Microseft Outlook进行有效配置
    On Error Resume Next
    Dim objOutlook As New Outlook.Application
    Dim objMail As MailItem
    
    '创建objOutlook为Outlook应用程序对象
    Set objOutlook = New Outlook.Application
    '开始发送电子邮件
    '创建objMail为一个邮件对象
    Set objMail = objOutlook.CreateItem(olMailItem)
    With objMail
        '设置收件人地址(从通讯录表的“E-mail地址”字段中获得)
        .To = "stone_zheng@kdsv.kingdee.com"
        '设置邮件主题
        .Subject = "控件发版测试"
        '设置邮件内容(从通讯录表的“内容”字段中获得)
        .Body = "测试的邮件内容"
        '设置附件(从通讯录表的“附件”字段中获得)
        '.Attachments.Add Cells(rowCount, 4)
        '自动发送邮件
        .Send
    End With
    '销毁objMail对象
    Set objMail = Nothing
    '销毁objOutlook对象
    Set objOutlook = Nothing

    '电子邮件发送完成时提示
    MsgBox "发送成功"
    
End Sub

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值