我正在计划一个mercurial changegroup hook,它会触发hudson中的构建。
项目被添加到队列中,当有空闲插槽时,hudson会构建它。问题是,其他人可能在此期间将代码推送到项目中,因此hudson将构建较新的版本(因为它运行的类似“hg pull -u&& build”) ,而不是第一次构建被触发时存储库所处的修订。
这个问题有什么解决方案吗?也许使用参数化构建?如果它不适用于单个作业,也许我可以每次推送创建一个作业并设置mercurial url以包含修订段?
感谢提示。
答案 0 :(得分:1)
在你的钩子中,假设它是一个shell钩子,你应该获得你的repo的tip的节点id,并将其作为参数传递给Hudson(现在的Jenkins)的API。获得该值看起来像:
export NODE_TO_BUILD=$(hg --id --rev tip)
然后使用您调用的任何格式将其作为参数传递给Hudson的API:http://wiki.hudson-ci.org/display/HUDSON/Remote+access+API
并将Hudson的工作调整为:
hg pull && hg update $NODE_TO_BUILD && build