我们的构建管道主要包括构建和测试两个阶段。在测试阶段,流水线与物理微控制器板通信。它不应该被多个作业并发使用,为了保持这一点,我们使用jenkins可锁定资源插件。我们现在正在将这些Jenkins作业转换为GitLab CICD,并且没有发现GitLab提供任何此类功能。虽然不是直接的,但我们认为我们可以实现这一目标的唯一替代方法是将每个跑步者与一个测试板强制耦合。如果有人能分享他们的想法,如果他们知道如何在GitLab中实现这一点,那就太好了。谢谢!
虽然不是直接的,但我们认为我们可以实现这一目标的唯一替代方法是将每个跑步者与一个测试板强制耦合
如果你的资源(微控制器板)可以在不同的GitLab项目中使用,这可能是最好的方法。
如果你只关心在同一个 GitLab项目中的作业/管道之间的资源锁定,你可以使用资源组来应用锁定机制,以确保在任何时候只有一个作业可以获得资源锁。
需要锁定资源的作业将等待资源锁被释放(持有锁的作业完成),然后才会启动。来自文档:
使用
resource_group
创建一个资源组,以确保同一项目的作业在不同管道之间是互斥的。例如,如果有多个属于同一资源组的作业同时排队,则只启动其中一个作业。其他作业等待,直到
resource_group
空闲。资源组的行为类似于其他编程语言中的信号量。
每个环境可以定义多个资源组。例如,在部署到物理设备时,您可能有多个物理设备。每个设备都可以部署到,但是每个设备在任何给定时间只能进行一次部署。