Having worked on a couple of continuous delivery engagements, there are multiple patterns that I have seen companies struggle with. One of them is around scaling build agents for continuous integration and delivery while providing a sane, stable build and release infrastructure.
1. The build servers are slow, need constant reboot and build telemetry data retention policies are ad-hoc.
2. Some projects have a lot of agents and some not enough.
3. Pipelines are owned centrally often leading to knowledge hoarding.
4. Changes to the build infrastructure and agents are not transparent leading to a lot of glue and phoenix…
A while back I wrote a post titled Publish Docker Images using make and Travis CI about using make and Travis CI to publish docker images. One of the things that troubled me about the workflow was the lack of any real testing of the image outside of running a lint on the Dockerfile.
Since writing that post, I have built, consumed and published more docker images but a test driven approach to even ascertain if the image as built works as expected has been rather absent.
Update: I wrote a response on how to use Artifactory to better track the Archives which avoids tracking them in Git.
Carthage is a nice framework dependency manager. It is simple, very well defined and works as documented. For the contract tests demo post that I wrote a while back, the Xcode project has about 7 Swift files (3 are Sources, 4 are Tests) and 5 dynamic frameworks. A clean build in Travis CI took close to 14 min. This was ludicrous.
Then I began another iOS project, this time with quite a few frameworks and Carthage in two. The…
Over the past few weeks, I worked on an iOS Application which used a swarm of MicroServices developed in multiple languages with the only commonality being they all run in the cloud in Docker Containers. This post is inspired off some of the efforts to write consumer driven contract tests for the iOS Application which use Services exposing a HTTP+JSON API.
Example source code for the iOS Project can be found here. The code is intended as a demo and guide for developers working on iOS Applications and struggling with similar concerns.
Here’s a template for Makefile I have been using to get continuous publishing of a Docker Image pushed to Docker Hub using Travis CI (or for that matter any other).
It allows for semantic versioning of Docker Images, can be run from local machine and works with private DockerHub Images.
make is ubiquitous, is readable when used correctly, has task dependencies and simplifies tasks in CI/CD environments which have traditionally used opaque, long winding shell scripts.
Over the past week, I needed to take a deeper look on Concourse CI. The website is very pretty, the look and feel very modern and very importantly it really talks about pipelines which most CI/CD systems lack. Interested folks can read here or here.
What follows is my observations based on what I tried, how I got it working, why I stopped it and do not intend to use it. Some of what follows might just be my ignorance of the product or my ignorance in general.
I’ve been using a set of tools that have made usage of the shell much more productive on OS X.
I’ve been sharing them on a rather ad hoc basis. This post helps me spread it a little further from folks I work with. It is very much a work in progress. I’m not done learning yet.
I’ve been using iTerm for a while now. Even after Yosemite came out and the Terminal App came closer to it in terms of features, iTerm still kicks ass.
The ability to split is alone worth the switch. Then there’s better themes, always…
developer, reader, thoughtworker