As a Developer Advocate, I work with web development teams on improving their workflows. That often means discussing how to adopt Continuous Integration (CI). I usually center my answers on a suite of Pantheon tools meant to combine an external git host (like Github or Bitbucket) with a Composer-based repo structure, and a CI platform (like CircleCI) push a build artifact to Pantheon. Any number of tests can then run after the push. We have detailed example repos for Drupal and WordPress that show this workflow.
I like that workflow and I use it for my personal sites; however, it can feel overwhelming for teams dipping their toes into CI for the first time to have so many new pieces. What about the teams that want to start small? What if you just want to automatically move code from GitHub to Pantheon. What if the only build step you need at first is Sass compilation? For those teams, I am proud to release Pantheon's CircleCI Orb.
What's an Orb?
Each area of technology has its preferred abstraction layers. A helper function in PHP is an abstraction to allow you to stop copying and pasting the same code over and over. A Drupal or WordPress module does the same concept on a bigger scale. Packaging reusable code can make a project more maintainable.
A few months ago, CircleCI introduced the concept of "orbs" as a way of reducing the boilerplate configuration necessary to set up a CI workflow. At first, I was skeptical that this layer of abstraction was needed since CircleCI also uses Docker containers to provide a similar type of encapsulation. Orbs won me over once I started playing around with a new testing framework, Cypress.io, on my local machine. Cypress' orb for CircleCI made it relatively simple to get my tests running in CI. As the orb ecosystem matures, I expect that many teams’ CircleCI config files, which are currently many hundreds of lines long, will shrink down to a few dozen or less.
We are starting small for the initial release of our orb. The Pantheon orb contains only one reusable job called "push." It takes the files in your GitHub or BitBucket repo, copies them into a clone of Pantheon's site repo, commits, and pushes to a Pantheon Dev or Multidev environment. I wrote this job partially with my earlier self in mind. When I first used Pantheon for a customer's site, I manually moved code between GitHub and Pantheon. The few minutes a day this orb can save will add up over the course of a project to billable hours that can be better spent on features your clients care about more.
I have a lot of ideas about what functionality could be added to the orb but I would rather hear from you. Try out this orb on a project and let me know how it goes. There's a thread on our discussion forum about the orb for general guidance, and you can file specific bugs and questions in the issue queue.
You may also like:: Development, Drupal, WordPress