Continuous integration 如何在GitLab CI中显示来自另一个存储库的测试
因此,我有我的项目和它的单元测试,当我在GitLab中配置CI系统后执行合并请求时,它们会很好地显示为绿色或红色圆圈 但现在我还有一些集成测试,它们驻留在一个单独的存储库中(为什么要问?因为我有多个微服务需要一起测试,每个都有自己的存储库) 当我在这个集成测试的存储库上执行合并请求时,它们会很好地显示出来,但是我需要这些测试在其他存储库的合并请求上显示什么 我确实通过GitLab CI给我的URL/命令成功地从微服务的存储库触发了它们,类似这样:Continuous integration 如何在GitLab CI中显示来自另一个存储库的测试,continuous-integration,gitlab,integration-testing,Continuous Integration,Gitlab,Integration Testing,因此,我有我的项目和它的单元测试,当我在GitLab中配置CI系统后执行合并请求时,它们会很好地显示为绿色或红色圆圈 但现在我还有一些集成测试,它们驻留在一个单独的存储库中(为什么要问?因为我有多个微服务需要一起测试,每个都有自己的存储库) 当我在这个集成测试的存储库上执行合并请求时,它们会很好地显示出来,但是我需要这些测试在其他存储库的合并请求上显示什么 我确实通过GitLab CI给我的URL/命令成功地从微服务的存储库触发了它们,类似这样:curl-X POST-F token=-F re
curl-X POST-F token=-F ref=主https://gitlab.com/api/v4/projects/.../trigger/pipeline
但在micro services的存储库中,它总是显示为绿色圆圈,这意味着它成功地启动了集成测试,但我不知道如何显示测试结果(或者至少不知道测试结果是否损坏)
谁能给我指出正确的文档,如果有,或者只是向我解释如何做,如果可能的话
我能想到的最好的解决方案是将我的集成测试创建为一个库,然后我会在所有其他项目上导入并使用该库,但我肯定会避免这种情况,因为这会迫使我使用与项目相同的编程语言编写集成测试(假设它们是相同的)或者在其他语言上运行它
谢谢。您可以使用Python/Bash脚本扩展当前正在做的事情 从主项目中,使用所述脚本:
正在运行
,挂起
,失败
,取消
或跳过
)轮询管道的示例运行管道.py:
import gitlab
import time, timeit
import sys
from datetime import timedelta
gl = gitlab.Gitlab("https://your_gitlab_instance.com/",
private_token="you_private_token")
project = gl.projects.get('your_project')
create_pipeline = project.pipelines.create({'ref': 'master'})
# Set default
status = "pending"
start_time = timeit.default_timer()
while (status == "running" or status == "pending"):
pipeline = project.pipelines.get(create_pipeline.id)
status = pipeline.status
elapsed_time = timeit.default_timer() - start_time
formated_time = str(timedelta(seconds=elapsed_time))
sys.stderr.write("Still running pipeline... ({})\n".format(formated_time))
if status == "success":
sys.stderr.write("\nPipeline success\n")
break
elif status == "failed":
raise Exception
elif status == "canceled":
raise Exception
time.sleep(10)
然后将此python脚本称为您的
gitlab ci.yml
中的一个阶段。如果您有多个repo,但每个repo只有在一切都通过时才能合并,那么与mono repo相比,您有什么优势?所有微服务的优势:团队可以独立工作;项目可以用不同的编程语言编写;等等。另外,多个存储库的决定不值得讨论:/(注:不是我的决定)。这是微观服务,不是多重回购。基本上,这听起来像是你被要求建立一个支离破碎的单一回购协议。但是,是的,我想这超出了问题的范围;)通常每个微服务都是在一个单独的存储库中创建的,特别是如果你想单独扩展它们或者支持多种语言,那么我该怎么做呢?确切的Python脚本是什么?我在哪里配置它?@RodrigoRuiz这将是存储库中您自己的自定义Python脚本,您可以调用它来代替当前的构建触发器。例如,您可以使用或编写自己的方法来执行此操作