3

我对 CI 和 Gitlab/Gitlab-CI 都比较陌生。我最近将 Gitlab 设置为我们的小商店 VCS,并开始探索 Gitlab-CI 来进行构建。我们的代码主要是 ASP.Net C#,但我相信设置是通用的。现在我们正在考虑在构建之后运行单元测试,但是由于我们的单元测试需要更长的时间才能运行,我们正在探索是否可以配置为在一台机器上构建,并有另一台专用测试机器来运行这些单元测试和将来可能包括基于硒的自动化测试。

我想知道它是否可能以及应该如何配置,以便构建过程可以将测试移交给另一台机器。此外,是否可以为构建和测试发送单独的通知。

编辑:这不是如何创建 2 个阶段,每个阶段都在不同的跑步者上?该问题中的 OP 询问是否在 diff 机器上运行 2 个并行构建 + 测试。我正在寻找在一台机器上运行构建然后在另一台机器上测试的方法,但结果总结在 Gitlab CI 的 1 个构建过程中。

4

2 回答 2

2

这是来自 GitLab 文档的引用:

使用标签

您必须设置一个运行器,以便能够运行它在共享的项目上可能遇到的所有不同类型的作业。如果不是标签,这对于大量项目来说将是有问题的。

通过为 Runner 标记它可以处理的作业类型,您可以确保共享的 runner 只会运行他们准备运行的作业。

例如,在 GitLab 中,如果运行器包含运行 Rails 测试套件的适当依赖项,我们会将它们标记为“rails”。

这是一个示例.gitlab-ci.yml文件。因此,您可以使用所需的标签设置另一个(甚至更多)运行器,并单独处理长时间运行的测试。

于 2015-10-08T15:49:20.437 回答
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不会将您的存储库拉到测试服务器上。
于 2018-09-17T03:34:05.097 回答