所有测试用例都应该在gitlab中运行而不是第一个失败

时间:2016-12-10 10:27:35

标签: gitlab gitlab-ci gitlab-ci-runner

我正在建立一个gitlab环境。每次推送1点后运行5个测试用例。但是如果任何测试用例都在下降,则跳过其他测试用例。 我想要运行所有案例。因为它们彼此独立。

gitlab-ci.yml

stages:
  - build
  - unit_test_1
  - unit_test_2
  - unit_test_3

job1:
    stage: build
    script:
        - bash build.sh

job2:
    stage: unit_test_1
    script:
        - bash ./unit_test_1.sh

job3:
    stage: unit_test_2
    script:
        - bash ./unit_test_2.sh

job4:
    stage: unit_test_3
    script:
        - bash ./unit_test_3.sh

如果uint_test_1.sh失败。其他测试被跳过。

2 个答案:

答案 0 :(得分:3)

您可以使用when属性每次运行作业,无论构建前几个阶段的作业状态如何。

stages:
  - build
  - test

job1:
    stage: build
    script:
        - bash build.sh

job2:
    stage: test
    when: always
    script:
        - bash ./unit_test_1.sh

job3:
    stage: test
    when: always
    script:
        - bash ./unit_test_2.sh

job4:
    stage: test
    when: always
    script:
        - bash ./unit_test_3.sh

此外,如果您想确保永远不会并行运行作业,那么您可以配置具有并发限制的运行程序。

配置它globally会限制所有参赛者在所有参赛者之间同时运行1个作业。

配置它per runner将限制该跑步者仅为每个构建令牌同时运行1个作业。

答案 1 :(得分:0)

您可以尝试这样:

gitlab-ci.yml

stages:
    - build
    - test

job1:
    stage: build
    script:
        - bash build.sh

job2:
    stage: test
    script:
        - bash ./unit_test_1.sh

job3:
    stage: test
    script:
        - bash ./unit_test_2.sh

job4:
    stage: test
    script:
        - bash ./unit_test_3.sh

文件说:

  

阶段元素的排序定义了构建执行的顺序:

     

同一阶段的构建是并行运行的。   在上一阶段的作业成功完成后,将运行下一阶段的构建。

https://docs.gitlab.com/ce/ci/yaml/README.html#stages

要并行运行,您必须输入相同的阶段名称 https://docs.gitlab.com/ce/ci/pipelines.html#pipelines