我有一个.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
来做任何事情。
我希望至少经过一次。
答案 0 :(得分:0)
如果每个作业仅在作业成功时生成工件,则
artifacts:
paths:
- success.txt
script:
# generate the success.txt file
您应该能够测试文件是否在下一阶段
您需要在下一个阶段中添加此内容(以下)才能读取文件:
artifacts:
paths:
- success.txt