Alb*_*ert 5 continuous-integration gitlab gitlab-ci
如何定期运行 gitlab 阶段?我知道此处记录的管道时间表: https: //docs.gitlab.com/ee/ci/pipelines/schedules.html。我只对运行分支的特定测试阶段感兴趣。问题是我想要定位的分支还涉及很多其他阶段。一种选择可能是在脚本部分引入一个变量,该变量表示如果为 true,则执行脚本。然而,这可能很麻烦,并且需要对所考虑的特定分支的 ci 文件的所有阶段进行大量更改。
only/except
您可以使用关键字或更高级的rules
关键字以及管道源变量来控制作业的运行时间。
示例only
:
scheduled_test:
stage: tests
image: my_image:latest
only:
- schedules
script:
- ./run_some_things.sh
Run Code Online (Sandbox Code Playgroud)
该only
关键字可让您定义一些条件,表示“此作业仅在这些条件为真时运行”,并提供检查管道源的简写。schedules
意味着管道是从计划启动的,而不是推送、触发器等。except
关键字正好相反。如果有,except: schedules
该作业将始终运行,除非已计划。您可以在此处查看关键字的完整文档only/except
:https ://docs.gitlab.com/ee/ci/yaml/#only except-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
Run Code Online (Sandbox Code Playgroud)
在此示例中,我们检查预定义变量$CI_PIPELINE_SOURCE
以查看启动此管道的内容。如果是“计划”,我们总是运行这项工作。例如,如果源是“push”(因此管道是通过git push
命令启动的),则该作业将永远不会运行。使用rules
关键字,所有if
语句都被或运算在一起,因此上面的示例显示为,if the source is schedule, always run OR if the source is a push, never run
。但是,您可以在同一个 if 中将多个条件 AND 组合在一起:
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $MY_CUSTOM_VARIABLE == true'
when: manual
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读该关键字的完整文档rules
: https: //docs.gitlab.com/ee/ci/yaml/#rules
归档时间: |
|
查看次数: |
3058 次 |
最近记录: |