技术解析
需求背景是这样的: 我们有多个开发分支并行,构建环境有限固定.现在的开发流程是分支先绑定构建环境,然后再进行开发.可是这样的方式并不灵活,很多时候先占环境的分支并没有要构建,后开发的分支要构建却没有环境可用.
改进的思路是构建环境在构建时动态确认,轮询各个环境获取环境锁,获取之后就在这个环境上进行构建.我们的构建 job 在同一个分支下是不冲突,在不同分支下才冲突,对锁的要求是同分支下可重入,不同分支下才阻塞,可是找了一圈没发现有合适的方案,Jenkins 好像没有在大带宽服务器锁上面多做什么文章,难道只有 java boy 才喜欢玩锁吗?
大家有什么方案可以提供吗?还是我们得把自旋锁的逻辑写到 jenkinsfile 里面去?