我们有一个Mercurial存储库,通常有多个活动分支。 (prev release bug fix,curr release,future等...) 我们为每个版本都有一个Jenkins工作区 - 由Hg提交触发。 问题是我们让Jenkins添加一个Hg标记来指示构建发生的位置。 如果我们在Jenkins上允许多个构建器,它们有时几乎同时运行 - 所以它们都进行同步,标记,推送。这意味着保证在那一点失败 - 因为标签推送将失败。
有没有办法允许多个jenkins构建运行 - 但是指定一个不能同时运行的短临界区?
补充:我确实找到了Jenkins的“Exclusion-Plugin”,但在同步存储库之前无法启动Critical Section - 因为这是在第一个构建步骤之前发生的。
答案 0 :(得分:1)
好的,想通了。 使用Jenkins的Exclusion Plugin,我将hg标记构建步骤修改为:
# Tag the Build point in Source Control
hg pull --rev .
hg tag Build_${BUILD_NUMBER} -m 'Jenkins Added Tag for Build_'${BUILD_NUMBER}
hg push
然后用Critical Block Start / Stop包裹它。