post-commit-hook-hudson.vbs

repos   = WScript.Arguments.Item(0)
rev     = WScript.Arguments.Item(1)
svnlook = WScript.Arguments.Item(2)
hudson  = WScript.Arguments.Item(3)

Set shell = WScript.CreateObject("WScript.Shell")

Set uuidExec = shell.Exec(svnlook & " uuid " & repos)
Do Until uuidExec.StdOut.AtEndOfStream
  uuid = uuidExec.StdOut.ReadLine()
Loop
Wscript.Echo "uuid=" & uuid

Set changedExec = shell.Exec(svnlook & " changed --revision " & rev & " " & repos)
Do Until changedExec.StdOut.AtEndOfStream
  changed = changed + changedExec.StdOut.ReadLine() + Chr(10)
Loop
Wscript.Echo "changed=" & changed

change=CStr(changed)
a=InStr(change,"trunk/code/")

url = "http://127.0.0.1/hudson/job/code%E6%9E%84%E5%BB%BA%E5%92%8C%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/build?token=testanddevelop"
Wscript.Echo url

if a>0 then
Set http = CreateObject("Microsoft.XMLHTTP")
http.open "POST", url, False
http.setRequestHeader "Content-Type","text/plain;charset=UTF-8"
http.send changed
set http = nothing
end if
set repos = nothing
set rev =nothing
set svnlook = nothing
set hudson = nothing
set shell = nothing
set uuidExec = nothing
set changeExec = nothing
set change = nothing
set a = nothing
set url = nothing

  更多的关于构建的知识,推荐这个系列文章: 软件工程进阶之每日构建 (墙外)。 三. Alpha场所 Alpha场所是一个地方,里面有一堆东西,常见的包括Alpha安装包,构建后的产物,Alpha应用等等。所有的这些东西都有一个共同的愿景: 是降低测试和升级Jar包的难度,一直降低,直到:公司的任何一个人(甚至客户),只要愿意,都可以方便的进行试用,测试和验收等工作,像使用测试一个网站那样方便。 一般来说,Alpha场所里面的东西是经过构建,或冒烟测试后所得的产物,但这个Alpha的愿景更多的表示,公司内部可以非常方便的获取这些构建结果,以达到及时响应,快速反馈的目的。比如Alpha安装包基本上相当于一个普通的安装包和一个方便的Update工具,而Alpha Web应用更方便了,每次构建成功后都会自动推送热部署到Tomcat下的该应用,任何人只需打开浏览器访问该应用,都能获得新的功能体验。 四. 冒烟测试 冒烟测试是收到构建成功后放到Alpha场所的二进制包,在其他测试验收活动开始之前进行的简单测试,只包括基本的功能,一般每天早上过来跑一次,因此叫做每日冒烟测试。 为什么要有冒烟测试? 我可以举一个没有冒烟测试之前的例子。有一段时间,开发组经常进行大规模的代码重构,并且导致很多基础的功能用不了,并且因此更多的依赖这些基础功能的测试工作也无法开展,按照持续集成的指导原则来说,越早的集成和测试越好,但是这样测试工作一下子被阻滞了。原先想的办法是,提交紧急BUG,让开发优先修复,但后来发现根本不起作用,因为紧急只空留一个名义上的紧急,但实际处理的时候,可能还是要好几天才会得到处理。后来通过将那些影响其他测试工作的项,组织成冒烟测试条目,并约定:如果冒烟测试失败,需要当天立刻修复,每一测试项都会对应有一个开发人员。