我有使用Docker容器的多分支构建Jenkins管道。我遇到的问题是我不想一次触发多个分支。因为我在容器中使用了postgres DB,并且当多个分支启动时,本地主机端口5432被分支构建占用,该分支构建首先启动,然后第二个分支失败。
在Jenkinsfile中是否有避免这种情况的方法?
答案 0 :(得分:2)
pipeline {
options { lock resource: 'build-lock' }
stages {...}
}
在您的管道中使用它。在任何给定的时间点,即使在多分支管道中,也只会执行一个管道实例。
有关更多信息,Lockable resources
答案 1 :(得分:1)
我也许会解决您的postgres数据库,而不是尝试以此方式解决它。您的版本可以选择一个随机端口,然后在alt端口上旋转所需的数据库吗?
如果您想尝试限制并发构建...
1)您可以限制此回购运行的代理,并仅提供1个执行器。这将导致构建在等待期间排队
2)如果要以编程方式执行此操作,则如果它找到与当前执行匹配的内容,则需要在管道中进行检查以中止/等待构建。如果在运行中,我不建议这样做沙箱,您可能需要批准脚本访问。另外,如果您重构接口,似乎您将在幕后进行挖掘,并且可能会导致升级路径问题...但是您将在https://javadoc.jenkins-ci.org/hudson/model/Executor.html getCurrentExecutable()或诸如此类的{{3 }}