Hello,
I am trying to do the following workflow:
plan
check_if_certains_files_are_updated
if true:
Notify
Hold
Deploy
if false:
Notify
Deploy
I have tried path-filtering/filter to generate a new deploy pipeline if a change is detected but what happens is that the steps notify and hold still continue.
I have also tried to write my own script in check_if_certains_files_are_updated to check if the path was edited and update a temporary file which uses persist_to_workspace to pass it along a true or false to notify but I am unable to find a way to skip the hold job since that would require using when parameters that require the circleci api to trigger a new job.
Is there a way to accomplish this goal without creating an new pipeline or using the the cirleci api to generate these two different flows?
Path filtering orb should do it, but it will have to use dynamic pipelines. I would make sure you have “setup workflows” etc. turned on, which is a big cause of it not working. Look at the docs here for more info.
So basically you’d have your top level parameters and your file filters in, your main .circleci/config.yml and then have a separate workflow (e.g., .circleci/workflows.yml) for continuation workflow.
So simplified example:
in config.yml
version: 2.1
setup: true
orbs:
path-filtering: circleci/path-filtering@1.0.0
parameters:
trigger-foo:
type: boolean
default: false
workflows:
version: 2
setup_workflow:
jobs:
- path-filtering/filter:
base-revision: main
config-path: .circleci/workflows.yml
mapping: |
some-directory/.* trigger-foo true
in workflows.yml you’d then make some of your steps conditional on whether trigger-foo (or whatever parameter(s) you use) are true or false. So in your case, you could have a when or unless type condition on the hold step.
Thank you for your quick reply, I have tested this configuration and when the mapping is false it won’t trigger the workflows.yml file.
Right - you might have to make a default mapping as well. For example,
trigger-all with a default of true. I don’t think you’d even need a glob pattern for it, though I could be wrong.