假设我有两个作业
- 小张
- 戳
JobA和JobB使用相同的工作区。我不希望在JobB检查工作空间是否正在使用时运行JobA。如何检查给定的Jenkins工作区是否正在被作业使用?
供参考-这只是一个简单的场景。还有更复杂的场景需要处理,这就是为什么我需要它以这种方式工作。
预期结果:
假设工作区为"c: Workspace ">
job正在运行在"c:workspace"
JobA正在尝试启动,JobA检查并看到工作区正在使用中。管道中止。(如果可能的话,更好的做法是,管道等待JobB完成,然后运行)
理想的解决方案是使用Lockable Resource Plugin,它允许您获取资源上的锁,并等待它们被释放以执行某些管道操作。
首先,创建一个名为workspaceLock
的锁,下面是两个使用该锁的示例管道。
小张
pipeline {
agent any
parameters { string(name: 'foo', defaultValue: '', description: '') }
options {
lock ('workspaceLock')
}
stages {
stage("StageA") {
steps {
echo "Do Something in JObA"
}
}
}
}
}
戳
pipeline {
agent any
parameters { string(name: 'foo', defaultValue: '', description: '') }
options {
lock ('workspaceLock')
}
stages {
stage("StageB") {
steps {
echo "Do Something in JObB"
}
}
}
}
}