Continuous integration 如何定期运行gitlab阶段?
如何定期运行gitlab阶段?我知道此处记录的管道计划:。我只对运行分支的特定测试阶段感兴趣。问题是,我想针对的分支机构还有很多其他阶段。一个选项可能是在脚本部分引入一个变量,该变量表示如果为true,则执行脚本。但是,这可能会很麻烦,并且需要对考虑中的特定分支的ci文件的所有阶段进行大量更改。您可以使用Continuous integration 如何定期运行gitlab阶段?,continuous-integration,gitlab,Continuous Integration,Gitlab,如何定期运行gitlab阶段?我知道此处记录的管道计划:。我只对运行分支的特定测试阶段感兴趣。问题是,我想针对的分支机构还有很多其他阶段。一个选项可能是在脚本部分引入一个变量,该变量表示如果为true,则执行脚本。但是,这可能会很麻烦,并且需要对考虑中的特定分支的ci文件的所有阶段进行大量更改。您可以使用only/except关键字或更高级的rules关键字以及管道源变量来控制作业何时运行 仅带有的示例: scheduled_test: stage: tests image: my_im
only/except
关键字或更高级的rules
关键字以及管道源变量来控制作业何时运行
仅带有的示例
:
scheduled_test:
stage: tests
image: my_image:latest
only:
- schedules
script:
- ./run_some_things.sh
通过only
关键字,您可以定义一些条件,这些条件表示“仅当这些条件为真时,此作业才会运行”,并提供了检查管道源的快捷方式schedules
意味着管道是从一个计划启动的,而不是从一个push、trigger等启动的。except
关键字正好相反。如果作业有except:schedules
,则该作业将始终运行,除非已计划。您可以在此处查看only/except
关键字的完整文档:
从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\u PIPELINE\u SOURCE
,查看是什么启动了此管道。如果是“时间表”,我们总是运行此作业。例如,如果源是“push”(因此管道是由gitpush
命令启动的),则此作业将永远不会运行。使用规则
关键字,所有if
语句都在一起,因此上面的示例显示,如果源是schedule,则始终运行;如果源是push,则从不运行
。但是,如果满足以下条件,则可以在同一时间将多个条件和多个条件放在一起:
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $MY_CUSTOM_VARIABLE == true'
when: manual
您可以在此处阅读
规则
关键字的完整文档:将阶段提取为单独的管道,并使用将其与现有管道保持在一起。此外,请安排独立管道。谢谢!我最终使用了except关键字(由于gitlab版本),到目前为止,它似乎在我的测试中起作用。是的,only
和except
是做这些事情的唯一方法,直到规则
提供了更多选项。很高兴你能让它工作!