We’re thrilled to feature @adamdmharvey as our first CircleCI Champion of the Month! Adam is a Software Engineering Technical Lead at Cisco, and has been involved in the CircleCI community for 2 years. He has been part of the pilot Champions cohort since the program’s inception, and has been a valuable source of feedback, insights, and leadership throughout his time in the community.
Bio
Adam Harvey advises teams on DevOps and Agile patterns & practices, and always makes sure he practices what he preaches. He currently supports teams in his Cisco division by reviewing their pipelines, providing troubleshooting tips & tricks, inner sourcing on orbs, and collaborating with platform engineering teams. In his free time he is an an avid craft beer enthusiast, hiker, traveler, and foodie.
He is also a trusted community member in the industry at large, with access to projects such as Spotify’s CNCF backstage. Adam is one of the CODEOWNERS
for CircleCI’s Spotify Backstage plugin (which is open for contributions!) – go check it out here.
Q&A with Adam:
What have been the biggest wins for you since using CircleCI?
The various customizable resource classes and the Resource monitoring features have allowed us to quickly and easily adjust our pipelines to run faster, while also reviewing the resource usage (and thus credit expenditure) by reducing wasted compute.
They’ve proven super easy to use to help us tune our pipelines for the right balance of performance vs. cost.
Do you have any tips or tricks that you would like to share with those less experienced with CircleCI?
Pipelines don’t have to be complicated to improve your team’s ability to delivery quickly; saving even a few minutes per job can really add up (re: The DevOps Handbook’s feedback loops).
I always suggest starting with linting checks, like making sure certain file types are well formatted. These can help catch simple mistakes which otherwise might only be caught at run time or after testing code. And if you can run something on a command line, you can usually run it in a pipeline.
For example, it’s common to have a number of GitHub repository configuration files like
release.yml
, dependabot.yml
, etc. To check that they are correctly formatted, you could call yamllint
:
version: 2.1
jobs:
lint:
docker:
- image: cimg/base:stable
steps:
- checkout
- run:
name: "Install dependencies"
command: |
# Install YAMLLint; preferably pre-installed into a Docker image the job runs in
sudo apt-get install yamllint
- run:
name: "Lint GitHub repo config files"
command: |
yamllint .github/*.yml --no-warnings
workflows:
continuous-integration:
jobs:
- lint
This will return an error if badly formatted, or a zero non-error exit code if valid. Exclude --no-warnings
if you want to include those. There are lots of CircleCI Orbs which can make this even easier, too.
Ideally, you should also shift this even further “left” into something like a git pre-commit check, but CircleCI helps enforce the practice consistently across the entire team.
If you could wave a magic wand and change anything about CircleCI or add a new feature to it, what would it be?
Because CircleCI knows both my resource usage and the definitions I’ve used of resource classes, it would be fantastic if it would automatically adjust these settings (if not explicitly overwritten) to proactively reduce my credit spend.
Then my teams can spend even more time focusing on our code, and not the pipeline.
While this initially seems counter intuitive to a SaaS vendor who makes money selling credits, it’s these techniques of driving cost optimization for users which thus drive more user engagement (using more credits!) and is how many of the Cloud vendors in the market have found success.
Thank you, Adam, for your contributions to the CircleCI community and for sharing your insights with us! We’re honored to have you as our inaugural Champion of the Month!