同一配置文件中组合定时Pipeline与Setup Workflow报错问题
解决CircleCI中Setup Workflow与定时Pipeline组合时的"Max number of workflows exceeded"报错
问题原因
你当前的配置里,当定时触发pipeline时,run-setup参数默认是true,这会导致setup-workflow和check_scan两个workflow同时满足运行条件,超出了CircleCI单pipeline允许的workflow数量限制,从而触发报错。
另外,Setup Workflow的设计逻辑是:初始pipeline仅负责运行setup-workflow生成动态配置,再通过continuation触发新的pipeline来执行业务workflows。你的配置没有区分初始pipeline和continuation pipeline的workflow运行范围,导致冲突。
修复后的配置文件
version: 2.1 setup: << pipeline.parameters.run-setup >> parameters: run-setup: description: 是否为Setup Workflow或续接Pipeline type: boolean default: true force-all: description: 应急开关 type: boolean default: false workflows: setup-workflow: when: << pipeline.parameters.run-setup >> jobs: - config-splitting/setup-dynamic-config: force-all: << pipeline.parameters.force-all >> base-revision: main modules: | digital-scheduling-solution/dss-submit # 关键:在setup job的continuation调用中,把run-setup设为false # 比如用circleci-continue orb的话,要传递parameters: { run-setup: false } check_scan: when: and: - equal: [ scheduled_pipeline, << pipeline.trigger_source >> ] - equal: [ "Check Scan", << pipeline.schedule.name >> ] - not: << pipeline.parameters.run-setup >> # 新增:仅在非Setup的pipeline中运行 jobs: - config-splitting/scan_services: context: services
关键调整说明
- 给check_scan添加run-setup判断:在when条件里加入
not: << pipeline.parameters.run-setup >>,确保这个定时workflow只会在continuation pipeline(run-setup为false)中运行,不会和初始pipeline的setup-workflow冲突。 - Setup Job中传递run-setup=false:在你的
setup-dynamic-configjob里,生成continuation pipeline时,必须把run-setup参数设为false。这样续接的pipeline不会再触发setup-workflow,只会运行符合条件的check_scan。
这样调整后,初始pipeline只跑setup-workflow,续接的定时相关pipeline只跑check_scan,就不会触发workflow数量超限的报错了。
内容的提问来源于stack exchange,提问作者Luna
相关产品推荐
相关产品推荐

