我正在尝试构建一个由4个作业组成的Gitlab流水线。我所拥有的阶段是:
stages:
- compare
- build
- test
- deploy
比较阶段正在从另一台服务器的API中提取数据,将其与上一次成功管道运行时相同的数据(作为工件可用)进行比较,然后进行比较。如果有任何差异,我希望管道进入下一个阶段;如果没有差异,则希望正常退出。
我已经使它正常工作,但是如果没有差异,则不会正常退出,而是失败并标记管道为失败,以下是具体实现。
这是我 .gitlab-ci.yaml 中重要的代码(已删除某些标识信息)
Get_inventory_dump:
stage: compare
only:
- schedules
script:
- 'curl -k --output "previous-inventory.json" --header "PRIVATE-TOKEN: $user_token" "https://url/to/get/artifact/from/last/successful/run"'
- python3 auto_config_scripts/dump_device_inventory_api_to_json.py -p $pass -o /inventory.json -u https://url/for/inventory/dump -y
- /usr/bin/cmp previous-inventory.json inventory.json && echo "No Change in inventory since last successful run" && exit 1 || echo "Inventory has changed since last run, continue" && exit 0
artifacts:
when: on_success
expire_in: 4 weeks
paths:
- inventory.json
Generate_icinga_config:
stage: build
only:
- schedules
when: on_success
script:
一切都表现得如我所预期的那样,但我觉得有更好的方法来完成这个任务。
如果比较相同,是否有一种方法可以跳过管道的下一个阶段,但仍然使管道完成为“通过”而不是“失败”?