GitLab CI/CD管道中的多设备管理



有几个嵌入式Linux设备通过以太网连接。目标是在一个可用的设备上安装由以前的管道生成的软件映像。成功上传图像后,将执行一组Python测试。

为了管理不同的IP地址,我使用了一个跑步者,多个工作者的概念。对于每个工人,我定义了一个指向设备的变量DUT_IP。对于管道中的单个作业,这按预期工作。

concurrent = 2
check_interval = 0
[session_server]
session_timeout = 1800
                                                                                                                                                                                                                                                                                                                                                              
[[runners]]                                                                                                                                                                                                                                                                                                                                                                                                                           
name = "Laboratory Tests runner  #2"                                                                                                                                                                                                                                                                                                                                                                                  
url = "https://gitlab-ee.dev.ifm/"                                                                                                                                                                                                                                                                                                                                                                                                  
token = "XXXXX"                                                                                                                                                                                                                                                                                                                                                                                                      
executor = "docker"                                                                                                                                                                                                                                                                                                                                                                                                                 
environment = ["DUT_IP=192.168.0.70"]
                                                                                                                                                                                                                                                                                                                  
[[runners]]
name = "Laboratory Tests runner #1"
url = "https://gitlab-ee.dev.ifm/"
token = "XXXXXX"
executor = "docker"
environment = ["DUT_IP=192.168.0.71"]

通过使用资源组,可以防止在同一设备上执行多个作业。从我的理解来看,这并不能确保作业按照特定的顺序执行。我需要确保的是,对于每个管道执行以下步骤:

  • 固件更新
  • Python测试
  • 测试结果上传

当然我可以把所有的东西放在一个单一的工作,这将变得相当大。还有其他更一般的解吗?也许是动态环境。不幸的是,我在网上找不到任何关于这种设置的好的蓝图。

我目前对设备管理的解决方案是使用带标签的labgrid。请在labgrid讨论中查看我的答案https://github.com/labgrid-project/labgrid/discussions/1244#discussioncomment-6509711

最新更新