只有在GitLab CI中成功完成一项或多项工作后,我才如何通过阶段考试?

时间:2020-10-26 16:33:01

标签: gitlab gitlab-ci gitlab-omnibus

我有一个.gitlab-ci.yml,看起来像这样:


image: "python:3.7"

.python-tag:
  tags:
    - python

before_script:
  - python --version
  - pip install -r requirements.txt
  - export PYTHONPATH=${PYTHONPATH}:./src
  - python -c "import sys;print(sys.path)"

stages:
  - Static Analysis
  - Local Tests
  - Integration Tests
  - Deploy

mypy:
  stage: Static Analysis
  extends:
    - .python-tag
  script:
    - mypy .

pytest-smoke:
  stage: Local Tests
  extends:
    - .python-tag
  script:
    - pytest -m smoke

int-tests-1:
  stage: Integration Tests
  when: manual
  allow_failure: false
  trigger:
    project: tests/gitlab-integration-testing-integration-tests
    strategy: depend

int-tests-2:
  stage: Integration Tests
  when: manual
  allow_failure: false
  trigger:
    project: tests/gitlab-integration-testing-integration-tests
    strategy: depend

deploy:
  stage: Deploy
  extends:
    - .python-tag
  script:
    - echo "Deployed!"

Integrations阶段包含多个作业,这些作业需要花费大量的时间才能运行。 所有集成测试都需要运行,这很不寻常。这就是为什么我们在这些标记上粘贴了手动标记的原因,而所需的特定标记将手动运行。

如何做到这一点,以使Deploy阶段要求Integration Tests中的一项或多项工作已经通过?我可以像现在一样做所有,也可以通过从集成测试作业中删除allow_failure: false来做任何事情。

我希望至少经过一次。

1 个答案:

答案 0 :(得分:0)

如果每个作业仅在作业成功时生成工件,则

  artifacts:
    paths:
      - success.txt
  script:
    # generate the success.txt file

您应该能够测试文件是否在下一阶段

您需要在下一个阶段中添加此内容(以下)才能读取文件:

  artifacts:
    paths:
      - success.txt