无需手动添加参数,如何检测CircleCI流水线是否为手动触发?
无需手动参数检测CircleCI流水线是否为手动触发的方法
当然有办法——CircleCI本身就内置了可以自动识别流水线触发来源的参数,完全不需要用户手动输入额外参数来区分。
核心方法:利用pipeline.trigger_source内置参数
CircleCI会自动给每个流水线赋值pipeline.trigger_source,不同触发方式对应不同取值:
manual:通过UI点击「Trigger Pipeline」手动触发的流水线push:代码推送(比如git push)触发的自动构建schedule:定时任务触发的流水线api:通过CircleCI API调用触发的流水线
替换后的配置示例
把你原有的workflow条件替换成检测这个内置参数即可,不用再依赖手动输入的manual参数:
workflows: run_tests: when: and: - equal: [manual, << pipeline.trigger_source >>] [...] # 保留你原来的其他判断条件
扩展场景:兼容API触发
如果你的场景需要同时支持手动触发和API触发(比如脚本调用API触发也需要执行这个workflow),可以用or条件组合两种来源:
workflows: run_tests: when: and: - or: - equal: [manual, << pipeline.trigger_source >>] - equal: [api, << pipeline.trigger_source >>] [...]
这样用户手动触发流水线时,不用再额外设置参数,CircleCI会自动识别触发类型并匹配执行条件。
内容的提问来源于stack exchange,提问作者Steve Chambers
相关产品推荐
相关产品推荐

