We’ve completed a set of orbs and orb commands designed to make the experience of using CircleCI convenience images available to folks using any CircleCI execution environment—from our machine
or macos
executors, to any third-party Docker images (including not just Debian/Ubuntu-based images but also those based on Alpine Linux).
What does this mean? Essentially, anyone who does not or cannot use CircleCI’s convenience images, for whatever reason, can now layer on the same tooling and functionality, at job runtime, using first-party CircleCI orbs.
Here is the list of orbs and orb commands that provide this functionality, in the rough order that one would likely want to run these commands in a CircleCI job:
build-tools-orb: install-ci-tools
(orb registry link, GitHub link)
This command installs a set of common packages that are often useful or required in CircleCI jobs—see source for the full list of packages.
jq-orb
(orb registry link, GitHub link)
This orb’s primary install
command installs the jq
JSON parser, which is required by many other first-party CircleCI orbs for doing things like parsing GitHub’s releases API to grab download links for a particular version of this or that tool.
docker-orb: install-docker-tools
(orb registry link, GitHub link)
This command installs the Docker CLI, as well as docker-compose
and dockerize
, two commonly used Docker tools.
node-orb: install
(orb registry link, GitHub link)
This command installs Node.js (any release can be installed), allowing users to essentially create a “Node variant” of any Docker image.
browser-tools-orb: install-browser-tools
(orb registry link, GitHub link)
This command installs Firefox, Geckodriver, Chrome (or, for Alpine Linux, Chromium), and ChromeDriver—e.g., the same functionality provided by a -browsers
-tagged CircleCI convenience image.
Usage
Following is an example outlining the minimum required YAML configuration to run these commands:
version: 2.1
orbs:
browser-tools: circleci/browser-tools@x.y.z
build-tools: circleci/build-tools@x.y.z
docker: circleci/docker@x.y.z
jq: circleci/jq@x.y.z
node: circleci/node@x.y.z
jobs:
your-job:
docker:
- image: your-third/party-image:image-tag
steps:
- checkout
- build-tools/install-ci-tools
- jq/install
- docker/install-docker-tools
- browser-tools/install-browser-tools
- node/install
workflows:
your-workflow:
jobs:
- your-job
For all tools that support installation of specific versions, or installation to custom directory paths, these orb commands allow that level of customization, as well—so if your team requires a particular version of Docker, or Node.js, or Firefox, or jq
(unlikely, but just in case), etc., you can now easily install the version you need, to the directory of your preference.
This work is part of a company-wide effort to make CircleCI work across as wide a range of execution environments as possible—and also parallels our work on a new set of convenience images designed to be faster, smaller, and more reliable than the current convenience images.
And, finally, all this code is open-source! So if you’d like to see an additional Docker-related tool, or an additional browser-testing tool, added to these orb commands—please file an issue or, even better, submit a pull request against our orb repositories