gpt4 book ai didi

continuous-integration - 如何定期运行 gitlab stage?

转载 作者:行者123 更新时间:2023-12-04 15:07:05 30 4
gpt4 key购买 nike

如何定期运行 gitlab 阶段?我知道此处记录的管道计划:https://docs.gitlab.com/ee/ci/pipelines/schedules.html .我只对运行分支的特定测试阶段感兴趣。问题是我想要定位的分支涉及很多其他阶段。一种选择可能是在脚本部分引入一个变量,表示如果为真,则执行脚本。但是,这可能很麻烦,并且需要对所考虑的特定分支的 ci 文件的所有阶段进行大量更改。

最佳答案

您可以使用 only/except 控制作业何时运行关键字,或更高级的 rules关键字以及管道源变量。
示例与 only :

scheduled_test:
stage: tests
image: my_image:latest
only:
- schedules
script:
- ./run_some_things.sh
only关键字允许您定义一些条件,表示“只有在这些条件为真时才运行此作业”,并提供了检查管道源的速记。 schedules意味着管道是从计划启动的,而不是从推送、触发器等开始的。 except关键字正好相反。如果它有 except: schedules除非已安排,否则该作业将始终运行。您可以查看 only/except 的完整文档。这里的关键词: https://docs.gitlab.com/ee/ci/yaml/#onlyexcept-basic
从 Gitlab 12.3 版开始, rules关键字扩展了 only/except 的可能性选项。我们可以从上面的例子中得到相同的结果,如下所示:
scheduled_test:
stage: tests
image: my_image:latest
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: always
- if: '$CI_PIPELINE_SOURCE == "push"'
when: never
在这个例子中,我们检查预定义的变量 $CI_PIPELINE_SOURCE看看是什么启动了这条管道。如果是"dispatch",我们总是运行这个工作。例如,如果源是“push”(因此管道是由 git push 命令启动的),则此作业将永远不会运行。与 rules关键字,所有 if语句被 OR 运算在一起,所以上面的例子是, if the source is schedule, always run OR if the source is a push, never run .但是,如果出现以下情况,您可以将多个条件 AND 放在一起:
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $MY_CUSTOM_VARIABLE == true'
when: manual
您可以阅读 rules 的完整文档。这里的关键词: https://docs.gitlab.com/ee/ci/yaml/#rules

关于continuous-integration - 如何定期运行 gitlab stage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65910754/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com