Queue Workflows
Currently running 1 workflow at a time is not a possibility on CircleCI. This is where the CircleCI orb steps in and makes things a lot simpler. With the use of the CircleCI API, you can ensure that only workflow runs at a time.
version: 2.1
orbs:
jobs:
some-job:
docker:
- image: "circleci/node:latest"
steps:
- swissknife/wait_for_workflow:
max-wait-time: "1800"
workflow-name: ^(staging|production)$
the wait_for_workflow
command ensures that only 1 workflow with the name staging or production
can run at a time. Today if you have a deploy job there is no guarantee that only one staging
deploy can run at a time.
You also have the option to end gracefully or fail the job if the timeout fails.
Use cases
- Run only one deploy at a time.
- If you have limited resources, say number of parallel runs on Browserstack or Saucelabs, make sure workflows using these services run by one.
- Run database migrations one by one
- Run terraform plan and applies one by one.
note
Currently this command checks only on one branch (i.e. it checks that only 1 staging workflow is running for the current branch). We are working on a v2 that fixes this limitation.