I’ve just gotten done re-writing a bunch of our CircleCI 2.0 configs to Workflow orientation and just wanted to enumerate a few of the key “issues” that I’ve had.
- Missing INTEGER build number
We used to depend on CIRCLE_BUILD_NUM to generate minor versions of our deployment, after all it’s easier to correlate an integer with a point in time rather than a GUID. Workaround: We echo the BUILD_NUM to a text file and persist_to_workspace.
- Inability to set job priority
We have 3 key steps – lint, test, build – the test takes longer than lint and build, so it would be nice to make sure it’s always started first rather than backing up behind lint or build. Workaround: Set an explicit dependency to force serialization.
- Estimate runtime is inaccurate
Since we now have lots of build steps in the estimated runtime for any step appears to be the average of all of the steps, rather than taking into account the workflow ID. e.g. “npm_install” takes 30seconds, but “docker_build” takes 5 minutes – the estimate for docker_build is 35 seconds. Workaround: None
- Workflow page is frequently not refreshed
It’s not uncommon to visit the workflow page to have it not reflect the current state of the workflows, it appears to be delayed. Workaround: Hard reload the page
- Workflow page defaults to empty
It’s nice to have the build page full of builds and then filter by repo, having the “Builds” and “Workflow” tabs operate differently is a pain when you have lots of projects going.
- circleci/docker-aws image
In the final stages of our build, we need to generate a docker image for deployment. It would be nice to have a standard docker image to use (potentially getting a caching performance boost) with AWS installed so that we can build and push to AWS ECR without having to install the tooling necessary everytime.
Some of these are repeats from past forum posts but thought I would share my summary. Overall was able to reduce our build times from 11 minutes to 3 minutes on average, though deployment builds still take 9 minutes. It also provides a great framework for growing out what we’re doing.