我正在建立一个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失败。其他测试被跳过。
答案 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