我对CI和Gitlab / Gitlab-CI都比较陌生。我最近将Gitlab设置为我们的小商店VCS,并开始探索Gitlab-CI来进行构建。我们的代码主要是ASP.Net C#,但我相信这个设置是通用的。现在我们正在考虑在构建之后运行单元测试,但由于我们的单元测试需要花费更长的时间来运行,我们正在探索是否可以配置在一台机器上构建,并且有另一台专用测试机器来运行这些单元测试和可能包括未来基于硒的自动化测试。
我想知道它是否可能以及如何配置,因此构建过程可以将测试交给另一台机器。此外,是否可以发送单独的通知进行构建和测试。
编辑:这不是How do I create 2 stages that each on a different runner?的重复。该问题中的OP询问是否在diff机器上运行2并行构建+测试。我正在寻找在一台机器上运行构建然后在另一台机器上进行测试的方法,但结果总结在Gitlab CI的1个构建过程中。
答案 0 :(得分:2)
以下是GitLab文档的引用:
使用标签
您必须设置一个跑步者才能运行所有不同类型的跑步者 它可能在其共享的项目上遇到的工作。这个 对于大量的项目来说会有问题,如果不是的话 标签
通过为Runner标记它可以处理的作业类型,您可以制作 确保共享的跑步者只能运行他们所配备的作业。
例如,在GitLab,我们有跑步者标记为" rails"如果他们 包含运行Rails测试套件的适当依赖项。
这是一个示例.gitlab-ci.yml文件。 因此,您可以使用所需的标记设置另一个(甚至更多)运行器,并分别处理长时间运行的测试。
答案 1 :(得分:1)
这是一种标准的工作方式,方法是定义stages
,使用artifacts
并使用tags
来标识您的构建/测试服务器,例如:
stages:
- build
- test
build:
stage: build
tags: build-server-tag
script:
- ./buildmyproject
- mkdir tests
- cp myexe tests/
artifacts:
paths:
- tests
test:
stage: test
tags: test-server-tag
dependencies:
- build
variables:
GIT_STRATEGY: none
script:
- tests/myexe
这将在构建服务器上构建的测试服务器上执行myexe
。
注释
GIT_STRATEGY: none
不会将您的存储库拉到测试服务器上。